自己証明書を作成してnginxで使う その2

自己サーバ証明書(オレオレ証明書)を作成し、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_certificatessl_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.

[おわり]