🌟

Let's Encryptでワイルドカード証明書を発行する方法

2022/05/31に公開

SSL証明書について

さまざまなサイトでは、通信の暗号化やサイトの運用をしている組織の存在証明として「SSL証明書(サーバー証明書)」が使われています。SSL証明書は「認証局」と呼ばれる第三者によって発行を行う必要があるため、利用者にとって安全なサイトであることを提供するものになります。
HTTPS通信対応のサイトが安心だと言われている理由の1つです。

Let's Encryptとは?

一言で説明すると「無料のSSL証明書」です。有効期限が90日しかありませんが、一番手頃に使えるSSL証明書になります。本番環境にも使用されることが多く、自動証明書更新システムを自作して運用する組織も一部います。
https://letsencrypt.org/ja/

さっそく Let's Encrypt証明書 を発行してみた

VirtualBoxやDockerなどの仮想環境で発行作業を行うことが多いです。今回は Docker を使用します。

(1) DockerでCentOS 7を構築する

docker pull centos:centos7
docker run -it centos:centos7

以下のように表示されたらOK、CentOS 7の環境構築が完了しました。

(2) 初期設定 + certbotをインストールする

yum -y install epel-release
yum -y install certbot
yum -y update

念のため、certbotが使用できるかチェックしましょう。

certbot --version

以下のように表示されたらOK、これで証明書発行ができるようになりました。

(3) ワイルドカード証明書発行する

今回は、 koki-techblog.com ドメインを使った想定で紹介します。

certbot certonly --manual \
 --preferred-challenges dns \
 -d *.koki-techblog.com \
 -d koki-techblog.com \
 --email <メールアドレス> \
 --agree-tos \
 --manual-public-ip-logging-ok

必要項目を入力して、実行すると 通知メールを送りたいからメールアドレスを提供してくださいと質問されるため、「Y」を入力して実行する。

_acme-challengeドメイン名のTXTレコードに「T2WubuRvzXm3CNJjqIGRUTDfi-mWIlDbwscYTEzJ1Og」を追加してください。と依頼されました。

私は、 Azure DNSを愛用しているため ここにTXTレコードを登録してみます。その後、Enterキーを押下してください。※ TTLを3600秒にしていますが、特に意味はないです。300秒など短時間でも可能です。

押下後、2つ目のTXTレコードを追加してください。と提示されますが、やらなくていいです。
ただ、1つ目のTXTレコードが浸透するまで2~3分待ってください。その後、Enterキーを押下してください。

以下のように表示されたらOK

/etc/letsencrypt/live/koki-techblog.com

の直下に、何種類かの証明書が生成されました。と表記されているため、確認してみます。

問題なさそうですね、PEM形式で証明書が発行されました。
PEM証明書で良ければ docker cp コマンドを使い ローカルにDLして完了ですね。
ただ、AzureリソースやWindowsサーバーでは PEMではなくPFX証明書を推奨しているので変換してみます。

cp -r ../../etc/letsencrypt/archive/koki-techblog.com .
cd koki-techblog.com/
openssl pkcs12 -export -in fullchain1.pem -inkey privkey1.pem -out kokitechblogcomwildcard.pfx

opensslコマンドを実行後、パスワード入力を求められます。
パスワード生成(パスワード作成)ツール などで複雑なパスワードを設定しましょう。このパスワードは 証明書をインポートするときに使用します。

実際に ディレクトリを確認して PFX証明書が生成されたか見てみました。「kokitechblogcomwildcard.pfx」 が生成されているので良さそうですね。

(4) ローカルに証明書をダウンロードする

docker ps
docker cp <コンテナID>://koki-techblog.com/kokitechblogcomwildcard.pfx ./

実行後、

完了。

Discussion