Let's Encrpyt の証明書形式がRSA2048からECDSA P-256にかわった
気付いた経緯
- Bashスクリプトで自動更新していたが、今月動いてなかった
- 手動でrenewコマンドを叩いてみたら、正常に取得できていた模様
- 証明書や秘密鍵を確認すると、秘密鍵ファイルが超短くなっていた
- ???と思いながら、opensslコマンドで確認すると、暗号化形式がECDSA P-256に
Letsencrypt自動更新スクリプトについて
- certbot certonly を叩いて証明書を取得する
- aws acm list-certificates で、既存の証明書一覧をとってきて、対象のARNを抽出する
- aws acm import-certificate で、取得したARNの証明書を更新する
なぜこけたのか
- 結論
- aws acm list-certificates で一覧表示できる証明書は、RSA1024とRSA2048だけだから!
対応内容
- オプションで明示的に一覧表示に出てくるようにする
$ aws acm list-certificates --includes keyTypes="RSA_2048,EC_prime256v1"
- これで一表示に、ECDSA P-256 も含まれるようになる
おまけ
- 秘密鍵の長さが、ECDSA P-256は、RSA_2048にくらべて超短いが、実はセキュリティ強度は上がっているので、心配しなくても大丈夫
RSA 2048: 約112ビットのセキュリティ強度 ECDSA P-256: 約128ビットのセキュリティ強度