Let’s Encrypt SSL証明書で、ワイルドカードの証明書を発行するための方法です。
1. gitで最新版のcertbotをダウンロード
2. certbotで証明書作成コマンドを実行
3. DNSにTXTレコードを追加し、認証させる。
4. SSL証明書完成
具体的方法は以下になります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
$ yum install git $ git clone https://github.com/certbot/certbot.git $ ./certbot/certbot-auto certonly --manual -d *.example.com -d example.com -m admin@example.com --agree-tos --manual-public-ip-logging-ok --preferred-challenges dns-01 Saving debug log to /var/log/letsencrypt/letsencrypt.log Plugins selected: Authenticator manual, Installer None Obtaining a new certificate Performing the following challenges: dns-01 challenge for example.com - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Please deploy a DNS TXT record under the name _acme-challenge.example.com with the following value: sWDWNyRFnx82lshlfslDRMo7TaBLs_9EBhlw Before continuing, verify the record is deployed. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Press Enter to Continue |
上記文字列を DNSレコードに反映させます。
以下のような要領で。
5分くらい待って、
そのサーバーで digして反映されているか確認
1 |
$ dig _acme-challenge.example.com TXT |
※dig入っていない場合 yum -y install bind-utils
※この作業を、2回やる必要がある場合がありました。その際は2回行ってください。
Enterを押して以下のメッセージが出たら、SSL証明書完成です。
1 2 3 4 5 6 7 8 9 10 11 12 |
Cleaning up challenges IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/example.com/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/example.com/privkey.pem Your cert will expire on 2019-01-01. To obtain a new or tweaked version of this certificate in the future, simply run certbot-auto again. To non-interactively renew *all* of your certificates, run "certbot-auto renew" - If you like Certbot, please consider supporting our work by: |
ワイルドカード証明書を作成する際は、DNS-01 Challenge を使用した認証をする必要があるので、上記のように多少面倒です。
また証明書更新をする際(certbot-auto renew )に 以下のエラーが出ることがあります。
1 2 3 4 5 6 |
Could not choose appropriate plugin: The manual plugin is not working; there may be problems with your existing configuration. The error was: PluginError('An authentication script must be provided with --manual-auth-hook when using the manual plugin non-interactively.',) Attempting to renew cert (your.club) from /etc/letsencrypt/renewal/your.club.conf produced an unexpected error: The manual plugin is not working; there may be problems with your existing configuration. The error was: PluginError('An authentication script must be provided with --manual-auth-hook when using the manual plugin non-interactively.',). Skipping. The following certs could not be renewed:(failure) /etc/letsencrypt/live/your.club/fullchain.pem (failure) |
これは更新時にもDNS認証が必要なためです。
(AWSならcertbot-dns-route53といったプラグインを使えば解決します。)
ワイルドカードが必要なドメインに関しては、まだLet’s Encryptは不便ですね。
webroot認証(DocumentRoot ディレクトリ以下に認証用のファイルを設置することで認証する方法)ですと、そういったことはありません。
webroot認証でのやり方はこちらから
Let’s Encrypt SSL証明書作成方法まとめ (webroot認証)