サイトアイコン IT NEWS

Let’s EncryptでサブドメインのSSL証明書を登録する方法

Let’s Encryptについては本ブログでも度々紹介していましたが、当時はサブドメインSSL証明書を取得することができませんでした。
しかし、現在はサブドメインを幾つでも登録できるようになったので、Let’s Encryptを使用してサブドメインSSL証明書を登録する手順を紹介します。

余談ですが、SSL証明書自動更新も設定不要になってました。
ますます便利ですね!

本記事は、UbuntuApacheNginx(両方説明あり)のための手順です。

サブドメインの準備

まず、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サーバーに設定する手順を以下に示します。
なお、ApacheNginx、それから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サーバーの設定ファイルに追加し、設定を反映させます。

サブドメインのSSL証明書を取得および設定する前に、DNSレコードを正しく設定してサブドメインがウェブサーバーに接続されていることを確認してください。

以下の公式ドキュメントも参考にどうぞ!

モバイルバージョンを終了