Let'sEncryptでPre-loaded Public Key Pinningに対応しやすい証明書を発行する
最初に
本記事ではLet'sEncrypt, PublicKeyPinningに関する解説は省略します。
通常の証明書発行
通常、(certbotを使った場合)以下のように発行と更新を行うかと思います。
# 初回
certbot certonly --server https://acme-v02.api.letsencrypt.org/directory -d "*.foo.com" --manual-public-ip-logging-ok --agree-tos
# 更新
certbot renew
発生する問題
Pre-loaded Public Key Pinningを行いたい場合、クライアント側に公開鍵をもたせる必要があります。
certbot renew
の場合、このクライアント側に持たせたい公開鍵を毎回作成し直してしまいます。
アプリなどの場合、こうなると証明書が更新されるたびにアプリの更新も必要かつ同時にやらなければPinningに失敗します。
公開鍵を固定にして証明書を発行
certbot certonly --server https://acme-v02.api.letsencrypt.org/directory -d "*.foo.com" --manual-public-ip-logging-ok --agree-tos --csr /etc/letsencrypt/csr/0000_csr-certbot.pem
certbot certonly --server https://acme-v02.api.letsencrypt.org/directory -d "*.foo.com" --manual-public-ip-logging-ok --agree-tos --csr /etc/letsencrypt/csr/0000_csr-certbot.pem
--csr
オプションを付けることで公開鍵情報を固定することが出来ます。
csrの発行手順については省略しますが、csrをつけずに実行すると/etc/letsencrypt/csr/
に生成してくれるので活用すると便利です。
# ls /etc/letsencrypt/csr/
0000_csr-certbot.pem
秘密鍵は/etc/letsencrypt/keys/
にあります。
# ls /etc/letsencrypt/keys/
0000_key-certbot.pem
csr
オプションを付けると証明書はカレントディレクトリに以下のように作成されます。
# ls
0000_cert.pem 0000_chain.pem 0001_chain.pem
更新について
csr
オプションを付けるとcertbot renew
の対象外になります。
なので同じコマンドをcrontabなどを使って自前で更新処理を実行するようにしましょう。
余談
certbot certonly --server https://acme-v02.api.letsencrypt.org/directory -d "*.foo.com" --manual-public-ip-logging-ok --agree-tos --preferred-chain "ISRG Root X1" --csr /etc/letsencrypt/csr/0000_csr-certbot.pem
preferred-chain
に"ISRG Root X1"を指定すると今後スタンダードとなるROOT証明書で署名されたものを発行できます。
Author And Source
この問題について(Let'sEncryptでPre-loaded Public Key Pinningに対応しやすい証明書を発行する), 我々は、より多くの情報をここで見つけました https://qiita.com/daponta/items/adfb95336fcedad656a2著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .