Let’s Encryptのワイルドカード証明書を使う

acme.shを使ってインストール。

環境

  • ValueDomain利用
  • FreeBSD 11.1
  • Apache 2.4
  • acme.sh 2.7

インストール

  1. まずは、portsからacme.shをインストール。
    # sudo portmaster security/acme.sh
  2. 認証用のキーを発行する。
    # 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
    #
  3. ValueDomainのDNS設定に次の行を追加する。
    txt _acme-challenge XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  4. 数分後、TXTレコードが設定されていることを確認する。
    # host -t txt _acme-challenge.[ドメイン].jp
    _acme-challenge.[ドメイン].jp descriptive text "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
  5. 更新する。
    # 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.
    #
  6. 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
  7. /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>
  8. Apacheを再起動する。
    # sudo service apache24 restart

参考

タイトルとURLをコピーしました