以前 Nginxにオレオレ証明書を設定するということをやりましたが、
正規の証明書を入れることになったので、そのメモ書きを残します。
設定確認については、DNS切替前などの理由で設定対象サーバに
FQDN指定でのインターネットアクセスができない場合の確認方法を記載しています。
証明書の設定
##証明書の用意
業者に申請して証明書取得するかと思いますが、契約形態によって必要な証明書が
異なりますよね。
今回はクロスルート証明書を使用したため、以下の資材が必要になりました。
- サーバ証明書
- 中間証明書
- クロスルート証明書
- ルート証明書
事前にテキスト形式で用意しておきます。
証明書の結合
Nginxでは、中間証明書を個別で設定するディレクティブがないので、
ssl_certificateに全部の証明書を結合したファイルを設定する必要があります。
先程用意した証明書を、エディタでもリダイレクトでも何でもいいので結合しましょう。
※ 今回は結合したファイルを「/etc/nginx/server.crt」として話を進めます。
上から以下の順番で結合されるようにします。
-----BEGIN CERTIFICATE-----
サーバ証明書の內容
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
中間証明書の內容
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
クロスルート証明書の內容
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
ルート証明書の內容
-----END CERTIFICATE-----
順番を間違えると証明書エラーが発生するので気を付けましょう。
Nginxへの設定
nginx.confを編集します。
ssl_certificateディレクティブに結合した証明書のファイル、
ssl_certificate_keyに証明書作成に使用した秘密鍵のファイルを設定します。
中略...
server {
listen 443 ssl;
ssl_certificate /etc/nginx/server.crt;
ssl_certificate_key /etc/nginx/server.key;
中略...
}
設定が完了したら、Nginxをリスタートしておきましょう。
ローカルPCからの設定確認
hostsの設定
証明書に設定したFQDNで、ローカルPCからSSL設定したサーバに接続できるように、hostsを書き換えて対応します。
Macであれば/etc/hosts
が編集対象となります。
「210.xxx.xx.xx」というGIPに対して「www.hoge.co.jp」を割り当てたい場合は、以下のような記述を追加することになりますね。
210.xxx.xx.xx www.hoge.co.jp
※ 証明書の確認が終わったら、hostsの設定は元に戻しておきましょう。
意外と忘れがちなので。
疎通確認
あとはブラウザで
「https://www.hoge.co.jp」
みたいに指定すれば、先ほど設定した証明書でのSSL通信が確認できます。
もしくは、opensslを使用して確認してもよいですね。
openssl s_client -connect www.hoge.co.jp:443
と叩けば、証明書情報の確認ができます。
Verify return code: 0 (ok)
が表示されれば、証明書は正しく設定されているということになります。
詳細な情報が表示されるため、証明書エラーが出ているときは
ブラウザよりもこちらの方法で確認したほうがよいかと思います。