2019/12/14 2020/11/24
無償のSSL証明書発行で有名なLetsEncryptですが、うまく発行されない場合が多かったりします。最初の登録で3ヶ月後の更新を忘れたり、既に有償のSSLを使っていて期限を過ぎて更新しないと行けない。サーバ移転のときはどうするの?
長く使っていると概ねこのような問題に遭遇します。今回はLetsEncryptを発行するときのツボを解説したいと思います。
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 |
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サーバの停止が必要ありません。
WEBサーバ停止することなく、「WEBルート モード」で発行が出来ます。もし失敗するようであればWEBサーバ停止してスタンドアロンモードで試してみてください。念の為、初心者の方には言っておきますがどちらのモードもSSL証明書の登録・更新設定をしたら再起動をお忘れなく。
このケースでは、基本スタンドアロン モードでの新規登録となります。ただ単純にスタンドアロンモードで登録しても失敗することでしょう。以下のファイルを削除してください。
以上の作業が終わったら、再度新規発行してみてください。大概はうまくいくはずです。必ずWEBサーバを止めて、スタンドアロンモードで発行してください。
/etc/letsencryptファイルを固めて新サーバへ持ってくれば、有効期限に達するまではすんなり使えます。問題は期限が来た時に起きます。この場合も更新ではなくて新規登録が必要。上記のSSL期限忘れと同じ要領の作業を行ってください。必ずサーバ移転先のIPアドレスにドメインが変更されていることを確認してから発行してください
以前使用していた有償などのCAAレコードとLetsEncryptのIssuer(発行者)が異なるため失敗している可能性があります。この場合はCAAレコードのissueをletsencrypt.orgに変更すると登録が出来ます。
1 |
www.example-test.net. CAA 0 issue letsencrypt.org |
このエラーは幾つか原因があるが最近のletsencryptはpython3を使う。更に証明書が古くなっているので更新する必要がある。大抵は古いバージョンLinuxを使っていると起こる問題だと思う。 python3がデフォルトになっていない場合はpython3に(sudo update-alternatives –config python)で切り替えてみよう。 次に証明書の更新だが次のようにする。
1 2 |
$ sudo update-alternatives --config python update-alternatives: error: no alternatives for python |
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 |
以上を行った上でキーの発行を再度実行してみるとうまく行くはずだ。