
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をインストールします。
apt update apt install certbot
これにより、certbotがシステムにインストールされます。
サブドメインのSSL証明書を取得
サブドメインのSSL証明書を取得するために、以下のコマンドを実行します。
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/ディレクトリ内にあります。
サブドメインのバーチャルホスト設定ファイル内で、以下のような設定を追加します。
<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の設定をリロードして変更を反映させます。
systemctl reload apache2
Nginxの場合
サブドメインの設定ファイルを編集します。
通常、/etc/nginx/sites-available/ディレクトリ内にあります。
サブドメインの設定ファイル内で、以下のような設定を追加します。
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の設定をリロードして変更を反映させます。
systemctl reload nginx
まとめ
以上が、Let’s EncryptでサブドメインのSSL証明書を登録する方法です。
まず、サブドメインを準備し、その後certbotコマンドを使用してSSL証明書を取得します。
取得したSSL証明書をWEBサーバーの設定ファイルに追加し、設定を反映させます。
以下の公式ドキュメントも参考にどうぞ!
- Original:https://minory.org/lets-encrypt-subdomain.html
- Source:Minory
- Author:管理者
Amazonベストセラー
Now loading...