前提
独自ドメインを取得していること。
参考:Let's Encrypt で Nginx にSSLを設定する
参考:Let's Encrypt で Nginx にSSLを設定する
証明書を取得する前
参考にさせていただいた記事では、証明書を取得する際、オプションを追加してスタンドアローンモードを使用しています。
スタンドアローンモードを使用すると、最後の証明書の取得で以下のようなエラーが出る場合があります。
スタンドアローンモードを使用すると、最後の証明書の取得で以下のようなエラーが出る場合があります。
Problem binding to port 80: Could not bind to IPv4 or IPv6.
スタンドアローンモードのLet's Encryptは自前のHTTPサーバーを起動して証明書の取得を行おうとするのですが、既にNginxやApacheを起動していてTCP/80が使用中だとLet's EncryptのHTTPサーバーが起動(TCP/80のバインド)ができないというエラーです。
なので、証明書を取得するコマンドを実行する前に、ApacheやNginxを停止しておく必要があります。
私はNginxを使用しているので、Nginxのコマンドを以下に示します。
なので、証明書を取得するコマンドを実行する前に、ApacheやNginxを停止しておく必要があります。
私はNginxを使用しているので、Nginxのコマンドを以下に示します。
$ sudo nginx -s stop
Nginxの設定
既に定義済みのHTTP(TCP/80)の設定はそのままにしておき、新たにHTTPS(TCP/443)の設定を追加します。
server { listen 80; server_name www.autovice.jp; # リダイレクト設定 return 301 https://$host$request_uri; ... } # 追加 server { listen 443 ssl; ssl_certificate /etc/letsencrypt/live/www.autovice.jp/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/www.autovice.jp/privkey.pem; server_name www.autovice.jp; ... }
HTTP(TCP/80)のセクションに一行だけ追加します。
HTTPでアクセスされた際、自動的にHTTPSにリダイレクトする設定です。
Apacheの場合、Let's Encryptで証明書を取得するコマンドでオプションを指定すれば自動でリダイレクト設定を追加してくれるようですが、オプションを指定しなかった場合やNginxを使用している場合は手動でリダイレクト設定を追加する必要があります。
HTTPでアクセスされた際、自動的にHTTPSにリダイレクトする設定です。
Apacheの場合、Let's Encryptで証明書を取得するコマンドでオプションを指定すれば自動でリダイレクト設定を追加してくれるようですが、オプションを指定しなかった場合やNginxを使用している場合は手動でリダイレクト設定を追加する必要があります。
Nginx起動
最後にNginxを起動、または再起動してからWebサイトにアクセスできるか確認します。
http://〜でアクセスしてhttps://〜にリダイレクトされることも確認しましょう。
http://〜でアクセスしてhttps://〜にリダイレクトされることも確認しましょう。
$ sudo nginx $ sudo nginx -s reload