1. HOME
  2. ブログ
  3. ブログ
  4. テックブログ
  5. テックブログ
  6. Let’s Encryptでワイルドカード証明書を取得する

Article

記事一覧

テックブログ

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でした。

この記事が気に入ったら
いいね ! してください

Twitter で