SSL証明書 無料の Let’sEncryptの発行トラブルを解決する。
2019年12月14日Linux Tips, Security Tips, テクニカル, トピックス, ノウハウ
無償のSSL証明書発行で有名なLetsEncryptですが、うまく発行されない場合が多かったりします。最初の登録で3ヶ月後の更新を忘れたり、既に有償のSSLを使っていて期限を過ぎて更新しないと行けない。サーバ移転のときはどうするの?
長く使っていると概ねこのような問題に遭遇します。今回はLetsEncryptを発行するときのツボを解説したいと思います。
LetsEncryptには2種類の登録モードがある。
2種類のモード- ・スタンドアロン モード
- ・WEBルート モード
スタンドアロン モード
1 2 3 4 5 |
# cd /opt # git clone https://github.com/letsencrypt/letsencrypt # cd letsencrypt/ # systemctl stop httpd # ./letsencrypt-auto certonly -a standalone -d yourdomain |
WEBルート モード
1 2 3 4 |
# cd /opt # git clone https://github.com/letsencrypt/letsencrypt # cd letsencrypt/ # ./letsencrypt-auto certonly --webroot --webroot-path /var/www/vhosts/yourdomain -d yourdomain |
この2つのモードの違いですが、スタンドアロンモードはWEBサーバの停止が必要です。一方WEBルート モードはWEBサーバの停止が必要ありません。
初心者にありがちなミス
- Linuxサーバの443、80ポートをオープンしていない。iptablesやfirewalldでポートをオープンしましょう。
- DNSサーバに事前に発行ドメインのIPアドレス登録が抜けている。LetsEncrypt発行前にかならずDNS登録を行いましょう。
既に有償のSSLライセンスが切れてLetsEncryptを使いたい場合
WEBサーバ停止することなく、「WEBルート モード」で発行が出来ます。もし失敗するようであればWEBサーバ停止してスタンドアロンモードで試してみてください。念の為、初心者の方には言っておきますがどちらのモードもSSL証明書の登録・更新設定をしたら再起動をお忘れなく。
初回の登録からの期限忘れで手動及び自動更新が失敗。
このケースでは、基本スタンドアロン モードでの新規登録となります。ただ単純にスタンドアロンモードで登録しても失敗することでしょう。以下のファイルを削除してください。
- # rm -rf /etc/letsencrypt/live/www.test-serv.net
- # rm -rf /etc/letsencrypt/archive/www.test-serv.net
以上の作業が終わったら、再度新規発行してみてください。大概はうまくいくはずです。必ずWEBサーバを止めて、スタンドアロンモードで発行してください。
LetsEncryptを使用していましたが、サーバ移転で別のホスティングへ移したら登録できない。
/etc/letsencryptファイルを固めて新サーバへ持ってくれば、有効期限に達するまではすんなり使えます。問題は期限が来た時に起きます。この場合も更新ではなくて新規登録が必要。上記のSSL期限忘れと同じ要領の作業を行ってください。必ずサーバ移転先のIPアドレスにドメインが変更されていることを確認してから発行してください
既にDNS CAAレコードを設置している場合で、新規発行が失敗する。
以前使用していた有償などのCAAレコードとLetsEncryptのIssuer(発行者)が異なるため失敗している可能性があります。この場合はCAAレコードのissueをletsencrypt.orgに変更すると登録が出来ます。
1 |
www.example-test.net. CAA 0 issue letsencrypt.org |
キー発行時のエラー「urllib2.URLError: urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:590)」
このエラーは幾つか原因があるが最近のletsencryptはpython3を使う。更に証明書が古くなっているので更新する必要がある。大抵は古いバージョンLinuxを使っていると起こる問題だと思う。 python3がデフォルトになっていない場合はpython3に(sudo update-alternatives –config python)で切り替えてみよう。 次に証明書の更新だが次のようにする。
alternate未登録のケースの表示
1 2 |
$ sudo update-alternatives --config python update-alternatives: error: no alternatives for python |
alternate未登録のケースの場合は自分で登録する。
1 2 |
$ sudo update-alternatives --install /usr/bin/python python /usr/bin/python2.7 1 $ sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.6 2 |
証明書の更新処理を行う。
1 2 |
$ sudo update-ca-certificates --fresh $ sudo export SSL_CERT_DIR=/etc/ssl/certs |
以上を行った上でキーの発行を再度実行してみるとうまく行くはずだ。
タグ: Let'sEncrypt, SSL証明書, トラブル, 回避策