web-dev-qa-db-ja.com

LetsEncrypt証明書をあるマシンから別のマシンに移動する

個人のWebサーバーにLetsEncrypt証明書をしばらく使用し、数回更新しましたが、正常に機能します。今、私は新しいマシンに移行しています(unixのフレーバーが少し異なります)。

証明書を新しいマシンに転送するにはどうすればよいですか?また、LetsEncryptクライアントをその新しいマシンで動作させるにはどうすればよいですか?

愚かな私は、/etc/letsencryptディレクトリを転送するのと同じくらい簡単だと思いましたが、私は間違っていたようです。

それを行った後、letsencrypt-renewerを実行すると、非常に奇妙な例外がスローされ、最終的には

TypeError: initializer for ctype 'char *' must be a str or list or Tuple, not unicode

OpenSSL/crypto.pyから。

/etc/letsencrypt/accounts/の下には、ハッシュのように見える名前のディレクトリがあり、その下には、証明書の作成に使用したマシンのinternal名を含むmeta.jsonファイルがあります。

letsencrypt certonlyを実行すると、oldマシンの内部名とnewマシンの内部名から選択できるアカウント(!)を選択する機会が与えられます。

どちらかを選択し、ドメインの名前を送信すると、同じエラーが発生します(...匿名性のために編集)

IMPORTANT NOTES:
 - The following errors were reported by the server:

Domain: <mydomain>
Type:   urn:acme:error:unauthorized
Detail: Incorrect validation certificate for TLS-SNI-01 challenge.
Requested <hexadeciman29positions>.<morehexadecimal>
<hexadecimal>.acme.invalid from <myip>:443. Received certificate
containing '<mydomain>'

だから...私が無視したいくつかの重要なファイルがあると思います。または私が理解していない何か他のもの。

誰かがこれを行う方法を知っていますか?

2
Bex

したがって、これは少し遅れて、OPには関係がなくなった可能性がありますが、同じ問題に遭遇した人にとっては、次のことがうまくいきました。

letsencrypt --renew-with-new-domains

あるサーバーから別のサーバーに(そして別のLinuxディストリビューションで)証明書を転送したいという同じ問題がありました。私はただrsync'd /etc/letsencrypt/ディレクトリを新しいサーバーに移動し、上記のコマンドを実行して、その後のダイアログに従います。

1
Fatt