Let's Encryptで取得したワイルドカード証明書をNginxに設定
概要
Let’s Encryptで取得したワイルドカード証明書をNginxに設定する
前回ワイルドカード証明書を取得した続きです
EC2とRoute53でLet’s Encryptのワイルドカード証明書取得 | infraya.work
結論
一般的な証明書を導入する手順と同じ
作業の流れ
ワイルドカード証明書をNginxに設定
前回、ワイルドカード証明書をLet’s Encryptから取得するために、
LEGOを実行するだけのEC2インスタンス(LEGOサーバ)を構築しました
証明書を適用する対象はZabbix5.0の検証用に構築済みのサーバを流用します
NginxはZabbixのインストール手順
通りに設定されたものです
Zabbixサーバは社内からのアクセスのみを想定して、セキュリティグループは特定のグローバルIPのみの通信に制限しています
Let’s EncryptのHTTP-01チャレンジ場合、80番ポートをオープンにしないといけないため証明書の取得ができない状態です
そのため、ZabbixサーバからDNS-01チャレンジで証明書取得するのが証明書更新の自動化を考えると無難な構成になります
今回はLet’s Encyrptで取得したワイルドカード証明書が機能するか検証したいため、
LEGOサーバで取得した証明書をZabbixサーバに置いて設定します
Zabbixサーバのセキュリティグループ
自宅のグローバルIPから下記の通信を許可
- SSH
- HTTP
- HTTPS
ワイルドカード証明書を対象のサーバへコピー
取得した証明書をLEGOサーバから手動でコピーして、検証用のZabbixサーバのホームディレクトリ直下に置きました
|
|
LEGOサーバからローカルPCへコピーし、ローカルPCからZabbixサーバへコピーする
scp Tips すぐ忘れるオプション | infraya.work
注意
Let’s Encryptの証明書の有効期限は3か月です
手動コピーだと都度手作業が発生してしまい運用がつらいだけです
Nginxの証明書設定
下準備
- 証明書保存用のディレクトリを作成
- 証明書と秘密鍵をディレクトリに移動
さきほどホームディレクトリ直下に証明書のあるディレクトリをコピーしてきました
/home/ubuntu/certificates
|
|
Zabbix5.0のNginxのコンフィグを見ていきます
/etc/nginx/conf.d/zabbix.conf
は/etc/zabbix/nginx.conf
のシンボリックリンクになっていました
|
|
zabbix.abashiri.city
を80番ポートで受ける設定が入っています
|
|
以下の設定を行いました
- 80番ポートで受け付けたらhttpsへリダイレクト
- TLS暗号して443番ポートで受けつける
- TLS1.0/1.1は使わない
- 証明書と秘密鍵のパスを指定
|
|
設定変更後、設定を反映させます
|
|
WEBブラウザからアクセス
https://zabbix.abashiri.city
へアクセス
Let’s Enctyptで取得したワイルドカード証明書は問題なく使えることが確認できました
証明書は*.abashiri.city
になっています
感想
検証用Zabbixサーバへの接続を暗号化したかったのでやってみた
Let’s Enctyptで証明書さえ取得できれば後は一般的な作業と同じ
証明書更新は自動化しないと無理があるので今回の方法では残念な感じ
Zabbixサーバで定期的にLEGOを実行してDNS-01チャレンジで証明書を取得するのが早いが、
これならワイルドカード証明書である必要はなくなってくる…
ELB, CloudFrontなしにEC2インスタンス単体で暗号化を実現するには手軽でとてもよい
参考
nginx の設定をレビューするときの観点をまとめてみた - Cybozu Inside Out | サイボウズエンジニアのブログ
ついにTLS 1.0/1.1の無効化が決定!影響や確認・対応方法とは? | さくらのSSL