NginxをLet’s Encryptを使って無料でSSL/TLS化する

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