サイトを構築する際にSSLの設定は必ず必要になるが、それほど頻繁にあるわけではないので、いつも忘れてしまうので備忘録としてメモする。
現在ではルート認証局ではなく中間認証局が署名することが多い。よって中間証明書も必要な場合が一般的。
シマンテック、ジオトラストなどは、ルート認証局のほかに中間認証局も運営している。
.pem
や.key
にする場合が多い) .csr
) 2.crt
)※ 中間認証局が証明書を発行する場合は、ルート認証局が中間認証局を認証して発行される中間証明書も必要。
秘密鍵のパーミッションはオーナー以外に操作権限のない600または400。
ブラウザーは認証局の公開鍵でサーバのデジタル証明書(公開鍵証明書)の正当性を確認してから通信を開始する。
その後は共通鍵で暗号化する。
ref.
秘密鍵を作成するための暗号化モジュール。
(※ 秘密鍵からは必ず同じ公開鍵を作成できる。)
公開鍵認証のための暗号化アルゴリズム。
改竄防止に使用。改ざん防止機能MAC(Message Authentication Code)にハッシュアルゴリズムを使用するもの
HMAC (Hash-basedz) とは、メッセージ認証符号 (MAC; Message Authentication Code) の一つであり、秘密鍵とメッセージ(データ)とハッシュ関数をもとに計算される。
— https://ja.wikipedia.org/wiki/HMAC
上記位の(H)MACのアルゴリズムで使用されるハッシュアルゴリズム。
共通鍵のための暗号化アルゴリズム。
ルートドメイン(例:example.com)に限ってwwwあり・なしの両方に対応するためにWildcard certificateをする必要はない。
例えばwww
以外のtext1.example.com
、test2.example.com
を一括で対応使用する場合は、Wildcard certificateが必要。
ディレクトリは任意だが/etc/sslに配置するのが慣習。
※ 注意事項
fullchain.pem
といった形式で配布される場合がある)、それをSSLCertificateFileに設定すればよい(SSLCertificateChainFileは必要ない)exsample.com-ssl.conf
をSSL用の設定ファイルとする。
<VirtualHost *:443>
ServerAdmin webmaster@example.com
ServerName example.com
DocumentRoot /var/www/html/example.com/public
ErrorLog ${APACHE_LOG_DIR}/example.com-error.log
CustomLog ${APACHE_LOG_DIR}/example.com-access.log combined
SSLEngine on
SSLCertificateKeyFile /etc/ssl/example.com/privkey.pem
SSLCertificateChainFile /etc/ssl/example.com//chain.pem
SSLCertificateFile /etc/ssl/ecample.com/cert.pem
</VirtualHost>
exsample.com-ssl.conf
をSSL用の設定ファイルとする。
$ cd /etc/apache2/sites-availables
$ a2ensite example.com-ssl.conf
CertbotでLet’s Encryptを設定する場合、以下が自動で作成される。
/etc/letsencrypt/options-ssl-apache.conf
の中でSSLEngine on
を設定$ grep -n "SSLEngine on" /etc/letsencrypt/options-ssl-apache.conf
7:SSLEngine on
暗号化モジュール:OpenSSL、秘密鍵暗号化アルゴリズム:RSA、共通鍵暗号化アルゴリズム:AESを仮定する(Takuya Kojima,Ami Nakajima,Emi Yoshihara,Jun Nakatsuka. Introducing to SSL – Implements HTTPS environment (Japanese Edition) (Kindle の位置No.1139-1141). Kindle 版. ) ↩
入力に秘密鍵を使用しているがCSRは公開鍵だけを含む。秘密鍵が認証局に渡るわけではない。あくまで渡るのは公開鍵。秘密鍵からは常に同じ公開鍵がさく制されることを忘れない。CSRを作成するコマンドは以下のとおり。server.keyが秘密鍵。opensslreqnewkey/etc/httpd/conf/server.key>/etc/httpd/conf/server.csr
(Takuya Kojima,Ami Nakajima,Emi Yoshihara,Jun Nakatsuka. Introducing to SSL – Implements HTTPS environment (Japanese Edition) (Kindle の位置No.1228-1229). Kindle 版. ↩
認証局に用って発行されるデジタル証明書(公開鍵証明書)はSSL/TLSの証明書の規格X.509に準拠している。 ↩
CSRからデジタル証明書を作成するコード(「openssl x 509-req-signkey server. key < server. csr > server. crt」 —『食べる!SSL! ―HTTPS環境構築から始めるSSL入門』小島 拓也, 中嶋 亜美, 等著) 例ではserver.keyが秘密鍵 ↩
No comments yet.
改行と段落タグは自動で挿入されます。
メールアドレスは表示されません。