Let's Encryptを使用したWebサーバーの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のコマンドを以下に示します。
$ 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を使用している場合は手動でリダイレクト設定を追加する必要があります。

Nginx起動

最後にNginxを起動、または再起動してからWebサイトにアクセスできるか確認します。
http://〜でアクセスしてhttps://〜にリダイレクトされることも確認しましょう。
$ sudo nginx
$ sudo nginx -s reload

関連記事

Let's Encryptの証明書を自動で更新する方法
# はじめに 先日、仕事で作成させていただいたWebサイトにアクセスできなくなっていました。 <img data-src="https://i.imgur.com/BTV9Ot1.png" class="lazyload effect-fa [...]
2020年7月4日 21:49
Let's Encryptの証明書更新モードをStandaloneからWebrootに変更する
# はじめに 先日、仕事で作成させていただいたWebサイトがSSL証明書の有効期限切れによりアクセス不可になっていました。 SSL証明書にはLet's Encryptを使用しており、cronに証明書更新コマンドを仕込んで自動更新されるように [...]
2020年3月18日 10:05
【Let's Encrypt】「certbot-auto has insecure permissions!」の原因と対処法
# はじめに SSL証明書の更新コマンドを実行したところ、以下の警告が表示されました。 ```terminal # /path/to/certbot/certbot-auto renew --post-hook "/sbin/servic [...]
2020年1月21日 19:07
Let's Encryptを使用した証明書の自動更新方法を解説
# はじめに 先日、Let's Encryptから以下のメールが届きました。 >Let's Encrypt certificate expiration notice for domain "www.example.com" > >He [...]
2020年1月21日 19:06