Let’s Encrypt証明書発行を「acme.sh」で発行する (ワイルドカード)
acme.shで無料SSL証明書を発行する
CentOS 6系のサーバーでPythonのバージョンが古く、最新のcertbot を使えなかったのでシェルスクリプトで動作する「acme.sh」でワイルドカード形式の無償SSL証明書を発行しました
acme.shをインストール
acme.shをダウンロードしてインストールします。インストールは簡単にcurlでダウンロードしてシェルを実行すればインストールできます
$ cd /usr/local/src $ curl https://get.acme.sh | sh
一度ステージング環境で実行します。ワイルドカード証明書を発行するのでDNSにTXTレコードの登録が必要ですので、その必要な値が表示されます
ステージングで一度実行 .acme.sh/acme.sh --test --dns --yes-I-know-dns-manual-mode-enough-go-ahead-please --issue -d *.example.com [Mon Apr 6 11:03:09 JST 2020] Add the following TXT record: [Mon Apr 6 11:03:09 JST 2020] Domain: '_acme-challenge.example.com' [Mon Apr 6 11:03:09 JST 2020] TXT value: 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
今回、インストールしたサーバーのDNSは自前のDNSサーバーですので、テキストレコードを登録できるのでテキストレコードに登録しました
DNSレコードが登録できたら、再度、acme.shを実行して証明書を発行します
$ .acme.sh/acme.sh --dns --yes-I-know-dns-manual-mode-enough-go-ahead-please --issue -d *.example.com --renew [Tue Apr 7 10:06:18 JST 2020] Your cert is in /home/admin/.acme.sh/*.site-mg.com/*.example.com.cer [Tue Apr 7 10:06:18 JST 2020] Your cert key is in /home/admin/.acme.sh/*.site-mg.com/*.example.com.key [Tue Apr 7 10:06:18 JST 2020] The intermediate CA cert is in /home/admin/.acme.sh/*.example.com/ca.cer [Tue Apr 7 10:06:18 JST 2020] And the full chain certs is there: /home/admin/.acme.sh/*.example.com/fullchain.cer
Apacheにワイルドカード証明書を登録する
発行したワイルドカードをapacheに設定して再起動します。設定箇所は証明書の箇所のみ記載しています
# vim /etc/httpd/conf.d/ssl.conf SSLCertificateKeyFile /root/.acme.sh/example.com/example.com.key SSLCertificateFile /root/.acme.sh/example.com/example.com.cer SSLCACertificateFile /root/.acme.sh/example.com/ca.cer # /etc/init.d/httpd restart
証明書エラーになった場合の対処
ステージング環境で証明書を発行した場合、ルート証明書が「Face LE Intermediate X1」となりエラーになる場合があります。
下記のopensslコマンドでは、cerファイルの中身を確認してIssuerが値を取得しています。「Face LE Intermediate X1」となっているのでステージング環境での証明書となるので、SSL接続すると証明書エラーになります
$ openssl x509 -noout -text -in \*.example.com.cer | grep "Issuer" Issuer: CN=Fake LE Intermediate X1 CA Issuers - URI:http://cert.stg-int-x1.letsencrypt.org/
その場合は「–force」をつけて強制再発行する必要があります。
# DNSを「--force」をつけて実行します。その後はDNSのTXTレコードを登録します $ ./acme.sh --force --dns --yes-I-know-dns-manual-mode-enough-go-ahead-please --issue -d *.example.com # DNSのTXTレコードが浸透したら、下記のコマンドで証明書を強制的に発行します $ ./acme.sh --force --yes-I-know-dns-manual-mode-enough-go-ahead-please --issue -d *.example.com --renew
ディスカッション
コメント一覧
まだ、コメントがありません