Let's Encrypt で発行するサーバ証明書の暗号方式を RSA から ECDSA (楕円曲線 DSA) に変更する

Let's Encrypt から取得しているサーバ証明書の暗号方式を RSA から ECDSA (Elliptic Curve Digital Signature Algorithm / 楕円曲線 DSA) に変更してみましたというお話。簡単な設定方法を備忘録として書いておきます。

ずいぶん前になりますけども、はてなブログさんが全サイトを SSL/TLS プロトコルによる暗号化通信 (わかりやすく HTTPS 化といいますが) に切り替えましたという記事を拝見したのですが (下記参考記事)、その中で Let's Encrypt から取得しているサーバ証明書の暗号方式を RSA から ECDSA (Elliptic Curve Digital Signature Algorithm / 楕円曲線 DSA) に変更したという記述がありました。

で、特に深い意味はなかったんですけども、へぇ~ ECDSA か、なるほどですねって思いまして、試しにこの Blog でもやってみましたので簡単にまとめておきます。多分この Blog 程度のアクセス数だとそんなに効果 (鍵サイズが小さいことよるパフォーマンス向上的な) もない気がしますけども、何事もお勉強です。

この Blog をホストしているサーバは、CentOS に Apache / OpenSSL の組み合わせっていうオーソドックスな構成になっていますが、証明書はすべて Let's Encrypt を利用させてもらっていて、サーバ証明書の更新管理は Certbot で行っています。

Certbot は昨年、2020 年の 12 月にリリースされている Certbot 1.10.0 (本記事作成時点での最新版は Certbot 1.21.0) より、--key-type オプションが使えるようになっており、

certbot certonly --key-type ecdsa

のように、--key-type オプションに対して ecdsa を指定することで、ECDSA を使用した証明書の発行が行われます (--key-type のデフォルト値は rsa ですので、何も指定しなければ RSA が使用されます)。

で、いちいちコマンドで指定するのめんどくせぇ、次の更新のタイミングで自動的に ECDSA 方式に切り替わってくれって場合は、

/etc/letsencrypt/cli.ini

を編集 (ない場合は新規作成) して、下記のように設定を追加しましょう。

# Use ECC for the private key
key-type = ecdsa
elliptic-curve = secp384r1

ちなみに、elliptic-curve は使用される楕円曲線の指定。デフォルトは secp256r1 です。

これで次回のサーバ証明書更新時に自動的にすべてのサーバ証明書が ECDSA 方式に切り替わります。楽ちん。

なお、cli.ini の設定方法については、Certbot のユーザーガイドに解説がありますので、詳しくはそちらをどうぞ。

ということで、実際に変更されていることを確認してみましょう。

下記が更新前における、当 Blog のサーバ証明書の情報。公開鍵が RSA (鍵長 2048bit) で作成されていることがわかります。

従来の RSA 方式でのサーバ証明書情報

で、更新後は下記のようになります。公開鍵が EC (楕円曲線 / 鍵長 384bit) になっていることが確認できますね。

ECDSA 方式に変更後のサーバ証明書情報

ということで簡単に変更ができました。

記事をここまで御覧頂きありがとうございます。
この記事が気に入ったらサポートしてみませんか?