とらぼがとらぼ定番記事FreeBSDLinuxネット関係Android過去記事MobileがとろぐSpeedtest情報がとらぼについてECDSAなSSL証明書を作ってみるよく使われているRSA暗号方式からECC(楕円曲線暗号)に変えると、同程度の強度のRSAと較べて鍵長が短くなってサーバ側の鍵認証のsign処理が速くなる。クライアント側の鍵認証のverify処理は少し遅くなるようだがトータルでは速くなると考えて良さそう。なによりサーバ側が軽くなるのが良い。ちなみにRSAで鍵長が1024bitから2048bitになって数倍の処理、何年か後に4096bitになったらまたその数倍の処理が必要になるのだが、ECCだと256bitでRSAの3072bit相当と言われている。10年とかそれ以上の有効期間の長いEE証明書を使うならともかく5年以下のEE証明書でアホみたいにRSAで鍵長を4096bitにする人は殆どいないと思うけど、2048bitでもちょっと重いかなと思うことがあるので軽めのP-256でRSAの2048bitよりずっと暗号強度が高いというのは良いわぁ。そこで楕円曲線DSA(ECDSA)でSSL証明書を作ってみる。secp521r1はある筈。(それがこの記事の前提)ほかにもドバッと出ている筈だけどウェブサーバとブラウザで使い物になる組み合わせが割りと限られてるので上の3つ(実際はsecp521r1を除く2つ)を確認。BのP-256かP-384で。P-521はChromeで使えなくなっているので選ばないこと。実行するとほぼ一瞬で作成される。RSAのサーバ鍵の作成時とは違いパスワードの入力を求められない。server.csr作成したCSRをCA(認証局)に送ってEE証明書を発行して貰う。ECDSAなCSRは受け付けられないということはない筈。ApacheApache2.4ではRSAとECDSAのハイブリッド証明書が使えるので既存のRSA証明書の記述そのままでECDSAの証明書を追記する。(4行)もちろん、RSA証明書が無いならECDSAの証明書だけで構わない(2行)。ブラウザの互換性の問題はあるのでハイブリッドがお勧め。1234SSLCertificateFile/PATH/RSAの証明書.crtSSLCertificateKeyFile/PATH/RSAのサーバ鍵.keySSLCertificateFile/PATH/ECDSAの証明書.crtSSLCertificateKeyFile/PATH/ECDSAのサーバ鍵.key暗号化スイートを指定する。12345簡略化して書くとおそらくRSA優先になるかと。'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH'もしくはECDSA優先なハイブリッドで下のようなの。'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-DSS-AES128-GCM-SHA256:DHE-RSA-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128:AES256:AES:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK'せっかくなので?ECDSAだけにしたいというなら下。#上よりちょっと広め#実質ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-SHA256と同じ楕円曲線暗号の種類を指定。1.9.15以上ではRSAとECDSAのハイブリッド証明書が使えるので既存のRSA証明書の記述そのままでECDSAの証明書を追記する。(4行)もちろん、RSA証明書が無いならECDSAの証明書だけで構わない(2行)。ブラウザの互換性の問題はあるのでハイブリッドがお勧め。1234ssl_certificate/PATH/RSAの証明書.crt;ssl_certificate_key/PATH/RSAのサーバ鍵.key;ssl_certificate/PATH/ECDSAの証明書.crt;ssl_certificate_key/PATH/ECDSAのサーバ鍵.key;暗号化スイートの指定。12345#簡略化して書くとおそらくRSA優先になるかと。'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';#もしくはECDSA優先なハイブリッドで下のようなの。'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-DSS-AES128-GCM-SHA256:DHE-RSA-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128:AES256:AES:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK';せっかくなので?ECDSAだけにしたいというなら下。#上よりちょっと広め#実質ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-SHA256と同じ楕円曲線暗号の種類を指定も忘れずに。***bitsになっていること。256bitsとなっている。384bitsとなる。署名アルゴリズムの欄(この記事とおりに作成していればsha256RSAの筈)と見間違えないこと。下のConfigurationの欄の下段。ECDSA証明書だけでウェブサーバを公開すると使える暗号スイートが限られる。上の画像の例では4つだけというお寒いものに。ブラウザとの互換性で厳しい。そこでRSAの証明書とECDSAの証明書のハイブリッドにするとブラウザとの互換性が改善する。ブラウザのChromeで証明書を確認する。ECDSA_P256になっている。ECDSA_P384になる。コメントをキャンセルメールアドレスが公開されることはありません。