NginxをLet’s Encryptを使って無料でSSL/TLS化(HTTP -> HTTPS)する方法を簡便に明記します。
実際に試した環境はAmazon Linux上です。
手順
1. Let’s EncryptをGitクローンする。
2. Nginxを停止してLet’s Encryptを使ってSSL/TLS証明書を作成する。
3. /etc/nginx/nginx.conf を修正する。
4. Nginxを再起動する。
目次
1. Let’s EncryptをGitクローンする。
ホームディレクトリなどでgit cloneコマンドを打つ。
git clone https://github.com/certbot/certbot
2. Nginxを停止してLet’s Encryptを使ってSSL/TLS証明書を作成する。
Nginxを停止
service nginx stop
Let’s encryptのcertbot-autoコマンドを使ってSSL/TLS証明書を作成する。
イタリック体は各自の環境に合わせる。
成功すると”/etc/letsencrypt/live/example.com”に証明書が作成される。
./certbot-auto certonly --standalone -d example.com -m info@example.com --agree-tos -n
3. /etc/nginx/nginx.conf を修正する。
/etc/nginx/nginx.confをSSL/TLS用に修正する。
下記の例では、httpリクエストは301リダイレクトしている。また、セキュリティの観点でTLSプロトコルのみ有効にしている。
server { listen 80 default_server; listen [::]:80 default_server; server_name example.com; return 301 https://$host$request_uri; } # Settings for a TLS enabled server. server { listen 443 ssl; ssl on; server_name example.com; ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; }
4. Nginxを再起動する。
Nginxを再起動して上記の設定を反映する。
これで”https://example.com”にアクセスして通信が保護されていることが確認できればOK。
service nginx restart