Let’s Encryptについては本ブログでも度々紹介していましたが、当時はサブドメインでSSL証明書を取得することができませんでした。
しかし、現在はサブドメインを幾つでも登録できるようになったので、Let’s Encryptを使用してサブドメインにSSL証明書を登録する手順を紹介します。
余談ですが、SSL証明書の自動更新も設定不要になってました。
ますます便利ですね!
本記事は、UbuntuとApache、Nginx(両方説明あり)のための手順です。
サブドメインの準備
まず、SSL証明書を登録するサブドメインを準備します。
サブドメインは、DNSレコードでWEBサーバーに正しく接続されている必要があります。
一般的には、以下の手順が必要になります。自身の環境に合わせて設定してください。
- ウェブサーバーにサブドメインを追加
-
ウェブサーバーの設定方法は、使用しているミドルウェア(ApacheまたはNginx)によって異なります。
- サブドメインのDNSレコードを設定
-
サブドメインがウェブサーバーに正しく接続されるようにします。
Let’s EncryptでSSL証明書を登録する手順
SSL証明書を登録するために、certbot
コマンドを使用します。
※一連の作業は管理者(root)権限で行ってください
certbotのインストール
ターミナルを開き、以下のコマンドを実行してcertbot
をインストールします。
1 2 |
apt update apt install certbot |
これにより、certbot
がシステムにインストールされます。
サブドメインのSSL証明書を取得
サブドメインのSSL証明書を取得するために、以下のコマンドを実行します。
1 |
certbot certonly --webroot -w /var/www/html -d subdomain.example.com |
上記のコマンドでは、サブドメイン(subdomain.example.com
)とWEBサーバーのドキュメントルートのパス(/var/www/html
)を指定しています。
実際のパスやサブドメイン名に応じて適宜変更してください。
SSL証明書の取得確認
最後に、Let’s EncryptからSSL証明書が正常に取得されたことを確認します。
確認方法は、コマンドでもファイルを確認するでも何でも構いません。
こちらも参考になると思います。
SSL証明書の設定
取得したSSL証明書をWEBサーバーに設定する手順を以下に示します。
なお、ApacheとNginx、それからOS(今回はUbuntu)によって設定方法が異なることに注意してください。
Apacheの場合
サブドメインのバーチャルホスト設定ファイルを編集します。
通常、/etc/apache2/sites-available/
ディレクトリ内にあります。
サブドメインのバーチャルホスト設定ファイル内で、以下のような設定を追加します。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<VirtualHost *:80> ServerName subdomain.example.com DocumentRoot /var/www/html/subdomain Redirect permanent / https://subdomain.example.com/ </VirtualHost> <VirtualHost *:443> ServerName subdomain.example.com DocumentRoot /var/www/html/subdomain SSLEngine on SSLCertificateFile /etc/letsencrypt/live/subdomain.example.com/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/subdomain.example.com/privkey.pem SSLCertificateChainFile /etc/letsencrypt/live/subdomain.example.com/chain.pem </VirtualHost> |
注目すべきは、SSLCertificate〜
から始まる3行です。
上記の設定では、サブドメイン(subdomain.example.com
)とSSL証明書のパスを正しく設定しています。
パスやサブドメインは、実際の環境に応じて適宜変更してください。
設定が完了したら、Apacheの設定をリロードして変更を反映させます。
1 |
systemctl reload apache2 |
Nginxの場合
サブドメインの設定ファイルを編集します。
通常、/etc/nginx/sites-available/
ディレクトリ内にあります。
サブドメインの設定ファイル内で、以下のような設定を追加します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
server { listen 80; server_name subdomain.example.com; return 301 https://subdomain.example.com$request_uri; } server { listen 443 ssl; server_name subdomain.example.com; ssl_certificate /etc/letsencrypt/live/subdomain.example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/subdomain.example.com/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/subdomain.example.com/chain.pem; location / { root /var/www/html/subdomain; index index.html; } } |
こちらもssl_〜
のから始まる3行に注目してください。
上記の設定では、サブドメイン(subdomain.example.com
)とSSL証明書のパスを正しく設定しています。
パスやサブドメインは、実際の環境に応じて適宜変更してください。
最後はApacheと同様に、Nginxの設定をリロードして変更を反映させます。
1 |
systemctl reload nginx |
まとめ
以上が、Let’s EncryptでサブドメインのSSL証明書を登録する方法です。
まず、サブドメインを準備し、その後certbot
コマンドを使用してSSL証明書を取得します。
取得したSSL証明書をWEBサーバーの設定ファイルに追加し、設定を反映させます。
以下の公式ドキュメントも参考にどうぞ!
コメント