自己サーバ証明書(オレオレ証明書)を作成し、nginxでHTTPS通信ができるようにします。 前回は自己証明書を作成しました。今回は、nginxに組み込みます。
設定ファイルの変更
nginx.confにsslを使用するための設定を追加します。 通常のHTTPとは別のサーバー名でHTTPSを提供したいので、 それ専用のserverブロックをhttpブロックの中に追加しました。
http {
[...]
server{
listen 443;
server_name www.my.domain;
access_log /var/log/ssl.access.log main;
ssl on;
ssl_certificate /usr/local/etc/nginx/my_domain.crt;
ssl_certificate_key /usr/local/etc/nginx/server.key;
ssl_session_timeout 10m;
ssl_protocols SSLv3 TLSv1;
ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
ssl_prefer_server_ciphers on;
location / {
root /path/to/ssl/root
index index.html index.htm;
}
}
}
ssl_certificateとssl_certificate_keyにはそれぞれ、前回作成した証明書と秘密キーのファイルパスを指定します。
server_nameには.csrファイルを作成するときに入力した"Common Name"を指定してください。 別のサーバ名を使用したい場合は、証明書の作成からやり直します。
nginxの再起動
設定を有効にするために、nginxを再起動させましょう。
# /usr/local/etc/rc.d/nginx restart
Performing sanity check on nginx configuration:
Enter PEM pass phrase:
nginx: the configuration file /usr/local/etc/nginx/nginx.conf syntax is ok
nginx: configuration file /usr/local/etc/nginx/nginx.conf test is successful
Stopping nginx.
Performing sanity check on nginx configuration:
Enter PEM pass phrase:
nginx: the configuration file /usr/local/etc/nginx/nginx.conf syntax is ok
nginx: configuration file /usr/local/etc/nginx/nginx.conf test is successful
Starting nginx.
Enter PEM pass phrase:
Enter PEM pass phrase:とプロンプトが表示されたら、パスフレーズを入力してください。 再起動には3回ほどserver.keyのパスフレーズの入力が求められます。
再起動できたらブラウザでアクセスできることを確認しましょう。
パスフレーズの入力を回避する
このままでも使用できますが、nginxの起動や終了のたびにパスフレーズの入力を求められるのでは、運用が面倒です。 なので、server.keyのパスフレーズを削除してしまいましょう。
まずはキーファイルのバックアップを取ります。
# cp server.key server.key.org
次にパスフレーズを取り去ります。
# openssl rsa -in server.key.org -out server.key
Enter pass phrase for server.key.org:
writing RSA key
プロンプトが表示されたらserver.keyのパスフレーズを入力してください。 正しく入力できれば、パスフレーズで保護されていないファイルが生成されます。 できたら、キーファイルの不要なパーミッションを落としてきましょう。 nginxを/usr/local/etc/rc.d/nginxで起動する場合、 設定ファイルはrootだけが読めれば大丈夫です。
# chmod 600 server.key
最後に、nginxが起動することを確認します。
# /usr/local/etc/rc.d/nginx restart
Performing sanity check on nginx configuration:
nginx: the configuration file /usr/local/etc/nginx/nginx.conf syntax is ok
nginx: configuration file /usr/local/etc/nginx/nginx.conf test is successful
Stopping nginx.
Performing sanity check on nginx configuration:
nginx: the configuration file /usr/local/etc/nginx/nginx.conf syntax is ok
nginx: configuration file /usr/local/etc/nginx/nginx.conf test is successful
Starting nginx.
[おわり]