Let’s Encryptでワイルドカード証明書を取得する
こんにちは。Kobayashiです。
Let’s Encryptでワイルドカード証明書が取得できるようになったと聞いたので試してみました。
今回は以下2つのドメイン名で同じサーバーにアクセスし、ワイルドカード証明書が使用できることを確かめてみようと思います。
サーバー環境
CentOS 7.6.1810
事前に必要な作業(DNS Aレコード設定)
- site1.ssilab.net
- site2.ssilab.net
[DNS Aレコード設定]
site1 IN A 111.111.111.111
site2 IN A 111.111.111.111
certbotをインストール
[root@localhost ~]# yum -y install epel-release
[root@localhost ~]# yum -y install certbot
certbotバージョン確認
[root@localhost ~]# certbot --version
certbot 0.31.0
※2019年4月16日時点
DNS認証によるSSL証明書発行
ワイルドカード証明書はDNS認証での発行のみとなるので、DNS認証でcertbotを実行します。
赤文字の箇所を自ドメインに置き換えて、
青文字の箇所を登録するメールアドレスに置き換えてください。
以下の例では*.ssilab.netとssilab.net(サブドメイン無し)の2つを指定しています。
certbot certonly --manual \
--server https://acme-v02.api.letsencrypt.org/directory \
--preferred-challenges dns \
-d *.ssilab.net -d ssilab.net \
-m ***@ssilab.co.jp \
--agree-tos \
--manual-public-ip-logging-ok
実行すると質問されるので y 応答します。
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing to share your email address with the Electronic Frontier
Foundation, a founding partner of the Let's Encrypt project and the non-profit
organization that develops Certbot? We'd like to send you email about our work
encrypting the web, EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: y ←yを入力してエンターキー押下
すると今度はDNS TXTレコードを設定するように指示が出るので、指示通りに _acme-challenge.ドメイン名 のTXTレコードを登録します。
注意点として、DNS設定が完了してから少し時間が経過したのちエンターキー応答します。
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please deploy a DNS TXT record under the name
_acme-challenge.ssilab.net with the following value:
xxx-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Before continuing, verify the record is deployed.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Press Enter to Continue ←エンターキーを押す前に DNS TXTレコードを追加するのを忘れずに!
ちなみに、早まってエンターキー応答をするとエラーになります。(何度かやりました)
やり直すたびにTXTレコードの内容が変わってしまうので、焦らずゆっくりやります。
TXTレコードが正常に設定できたか確認するには、コマンドプロンプト(Windows)やターミナル(Mac)で下記コマンドを実施すると良いです。
5分も待てばDNS TXTレコードの追加が反映されると思います。
# nslookup -type=TXT _acme-challenge.ssilab.net 8.8.8.8
DNS認証に失敗した場合
Waiting for verification...
Cleaning up challenges
Failed authorization procedure. ssilab.net (dns-01): urn:ietf:params:acme:error:dns :: DNS problem: NXDOMAIN looking up TXT for _acme-challenge.ssilab.net
IMPORTANT NOTES:
- The following errors were reported by the server:
Domain: ssilab.net
Type: None
Detail: DNS problem: NXDOMAIN looking up TXT for
_acme-challenge.ssilab.net
DNS認証に成功した場合
Waiting for verification...
Cleaning up challenges
Resetting dropped connection: acme-v02.api.letsencrypt.org
IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/ssilab.net/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/ssilab.net/privkey.pem
Your cert will expire on 2019-07-15. To obtain a new or tweaked
version of this certificate in the future, simply run certbot
again. To non-interactively renew *all* of your certificates, run
"certbot renew"
- If you like Certbot, please consider supporting our work by:
Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le
認証が上手くいくと、SSL証明書が以下のディレクトリに作成されます。
/etc/letsencrypt/live/ドメイン名
念の為生成された証明書を確認します。
[root@localhost ~]# ls /etc/letsencrypt/live/ssilab.net/
README cert.pem chain.pem fullchain.pem privkey.pem
生成されたファイルの内訳は下記の通りです。
証明書
/etc/letsencrypt/live/<ドメイン名>/cert.pem
証明書+中間CA証明書
/etc/letsencrypt/live/<ドメイン名>/fullchain.pem
秘密鍵
/etc/letsencrypt/live/<ドメイン名>/privkey.pem
中間CA証明書
/etc/letsencrypt/live/<ドメイン名>/chain.pem
SSL証明書が無事に発行できたので、ワイルドカード証明書として正常に動作するか確認していきます
Webサーバーインストール + mod_ssl導入
[root@localhost ~]# yum -y install httpd mod_ssl
ファイアウォール設定変更(80と443を許可)
[root@localhost ~]# firewall-cmd --permanent --add-service=http
[root@localhost ~]# firewall-cmd --permanent --add-service=https
[root@localhost ~]# firewall-cmd --reload
使用するSSL証明書のファイル指定
[root@localhost ~]# vi /etc/httpd/conf.d/ssl.conf
SSLCertificateFile /etc/pki/tls/certs/localhost.crt
↓
SSLCertificateFile /etc/letsencrypt/live/ssilab.net/fullchain.pem
SSLCertificateKeyFile /etc/pki/tls/private/localhost.key
↓
SSLCertificateKeyFile /etc/letsencrypt/live/ssilab.net/privkey.pem
Webサーバー(Apache)を起動
[root@localhost ~]# systemctl start httpd
ブラウザからアクセスして最終確認
- https://site1.ssilab.net/
- https://site2.ssilab.net/
両方のURLで証明書の警告エラーがでなければOKです。
※執筆時点では自動で更新させることは出来ないようなので、3ヶ月に1回、更新処理を手動で行う必要があります。
ワイルドカード証明書も無料の時代かーと思ったKobayashiでした。