acme.shを使ってインストール。
環境
- ValueDomain利用
- FreeBSD 11.1
- Apache 2.4
- acme.sh 2.7
インストール
- まずは、portsからacme.shをインストール。
# sudo portmaster security/acme.sh
- 認証用のキーを発行する。
# sudo -u acme acme.sh --force --dns --issue --yes-I-know-dns-manual-mode-enough-go-ahead-please -d *.[ドメイン].jp [Fri May 4 13:30:26 JST 2018] Using stage ACME_DIRECTORY: https://acme-staging-v02.api.letsencrypt.org/directory [Fri May 4 13:30:27 JST 2018] Registering account [Fri May 4 13:30:28 JST 2018] Registered [Fri May 4 13:30:28 JST 2018] ACCOUNT_THUMBPRINT='ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ' [Fri May 4 13:30:28 JST 2018] Creating domain key [Fri May 4 13:30:28 JST 2018] The domain key is here: /var/db/acme/.acme.sh/*.[ドメイン].jp/*.[ドメイン].jp.key [Fri May 4 13:30:28 JST 2018] Single domain='*.[ドメイン].jp' [Fri May 4 13:30:28 JST 2018] Getting domain auth token for each domain [Fri May 4 13:30:29 JST 2018] Getting webroot for domain='*.[ドメイン].jp' [Fri May 4 13:30:29 JST 2018] Add the following TXT record: [Fri May 4 13:30:29 JST 2018] Domain: '_acme-challenge.[ドメイン].jp' [Fri May 4 13:30:29 JST 2018] TXT value: 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' [Fri May 4 13:30:29 JST 2018] Please be aware that you prepend _acme-challenge. before your domain [Fri May 4 13:30:29 JST 2018] so the resulting subdomain will be: _acme-challenge.[ドメイン].jp [Fri May 4 13:30:29 JST 2018] Please add the TXT records to the domains, and re-run with --renew. [Fri May 4 13:30:29 JST 2018] Please add '--debug' or '--log' to check more details. [Fri May 4 13:30:29 JST 2018] See: https://github.com/Neilpang/acme.sh/wiki/How-to-debug-acme.sh #
- ValueDomainのDNS設定に次の行を追加する。
txt _acme-challenge XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
- 数分後、TXTレコードが設定されていることを確認する。
# host -t txt _acme-challenge.[ドメイン].jp _acme-challenge.[ドメイン].jp descriptive text "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
- 更新する。
# sudo -u acme acme.sh --force --renew --yes-I-know-dns-manual-mode-enough-go-ahead-please -d *.[ドメイン].jp [Fri May 4 13:55:11 JST 2018] Renew: '*.[ドメイン].jp' [Fri May 4 13:55:11 JST 2018] Single domain='*.[ドメイン].jp' [Fri May 4 13:55:11 JST 2018] Getting domain auth token for each domain [Fri May 4 13:55:11 JST 2018] Verifying:*.[ドメイン].jp [Fri May 4 13:55:15 JST 2018] Success [Fri May 4 13:55:15 JST 2018] Verify finished, start to sign. [Fri May 4 13:55:16 JST 2018] Cert success. -----BEGIN CERTIFICATE----- (略) -----END CERTIFICATE----- [Fri May 4 13:55:16 JST 2018] Your cert is in /var/db/acme/.acme.sh/*.[ドメイン].jp/*.[ドメイン].jp.cer [Fri May 4 13:55:16 JST 2018] Your cert key is in /var/db/acme/.acme.sh/*.[ドメイン].jp/*.[ドメイン].jp.key [Fri May 4 13:55:16 JST 2018] The intermediate CA cert is in /var/db/acme/.acme.sh/*.[ドメイン].jp/ca.cer [Fri May 4 13:55:16 JST 2018] And the full chain certs is there: /var/db/acme/.acme.sh/*.[ドメイン].jp/fullchain.cer [Fri May 4 13:55:17 JST 2018] It seems that you are using dns manual mode. please take care: The dns manual mode can not renew automatically, you must issue it again manually. You'd better use the other modes instead. [Fri May 4 13:55:17 JST 2018] Call hook error. #
- crontabを編集。
# sudo -u www crontab -e
次の行を追加する。
# use /bin/sh to run commands, overriding the default set by cron SHELL=/bin/sh # mail any output to here, no matter whose crontab this is MAILTO=admin@[ドメイン].jp 7 22 * * * /usr/local/sbin/acme.sh --cron --home /var/db/acme/.acme.sh > /dev/null
- /usr/local/etc/apache24/httpd.confを編集し、認証の行を書き換える。
<VirtualHost *:443> DocumentRoot "www/default" ServerName [サーバー].jp ErrorLog "spool/apache/[サーバー].jp-error.log" TransferLog "spool/apache/[サーバー].jp-transfer.log" CustomLog "spool/apache/[サーバー].jp-ssl-request.log" \ "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b" SSLCertificateFile "/var/db/acme/.acme.sh/*.[ドメイン].jp/*.[ドメイン].jp.cer" SSLCertificateKeyFile "/var/db/acme/.acme.sh/*.[ドメイン].jp/*.[ドメイン].jp.key" SSLCertificateChainFile "/var/db/acme/.acme.sh/*.[ドメイン].jp/ca.cer" <FilesMatch "\.(cgi|shtml|phtml|php)$"> SSLOptions +StdEnvVars </FilesMatch> BrowserMatch "MSIE [2-5]" \ nokeepalive ssl-unclean-shutdown \ downgrade-1.0 force-response-1.0 </VirtualHost>
- Apacheを再起動する。
# sudo service apache24 restart
参考
- acme.sh
- Let’s Encrypt で acme.sh を使って ACME v2 でワイルドカード証明書を取得する (Qiita)
- VALUE-DOMAIN(バリュードメイン)のDNS設定反映時間 (Qiita)
- ACMEv2を使って、ワイルドカード証明書を取得してみる。 (してみるテスト)
- Getting acme.sh to renew certs via cronjob on FreeBSD (Dan Langille’s Other Diary)