山城淑敬.jp

Since:2002.05.02 連絡先: shukukei@mojizuri.jp

SSL証明書をECDSAで取得してみた。

ECDSAなSSL証明書を取得してみることにします。



まずは先例にならって使用可能なリストを確認します。

$ openssl ecparam -list_curves
  secp384r1 : NIST/SECG curve over a 384 bit prime field
  secp521r1 : NIST/SECG curve over a 521 bit prime field
  prime256v1: X9.62/SECG curve over a 256 bit prime field


今回はsecp384r1を選択して、秘密鍵とCSRを生成します。

$ openssl ecparam -out .key -name secp384r1 -genkey
$ openssl req -new -sha384 -key .key -out .csr


CSRが意図通り作成されているか確認します。

$ openssl req -in .csr -text

f:id:shukukei:20200907214349p:plain



作成したcsrをコピーアンドペーストで、申請。(今回はCOMODOさんのPositiveSSLで申請)
数分後、送られてきたサーバ証明書と中間証明書をサーバにインストールして完了。

f:id:shukukei:20200907214421p:plain




Perfect Forward Secrecyにしたいので、SSLCipherSuiteに設定できる値を調べてみる。

$ openssl ciphers -v 'EECDH+AESGCM:AES256+EECDH:AES128+EECDH'
  ECDHE-RSA-AES256-GCM-SHA384 TLSv1.2 Kx=ECDH     Au=RSA  Enc=AESGCM(256) Mac=AEAD
  ECDHE-ECDSA-AES256-GCM-SHA384 TLSv1.2 Kx=ECDH     Au=ECDSA Enc=AESGCM(256) Mac=AEAD
  ECDHE-RSA-AES128-GCM-SHA256 TLSv1.2 Kx=ECDH     Au=RSA  Enc=AESGCM(128) Mac=AEAD
  ECDHE-ECDSA-AES128-GCM-SHA256 TLSv1.2 Kx=ECDH     Au=ECDSA Enc=AESGCM(128) Mac=AEAD
  ECDHE-RSA-AES256-SHA384 TLSv1.2 Kx=ECDH     Au=RSA  Enc=AES(256)  Mac=SHA384
  ECDHE-ECDSA-AES256-SHA384 TLSv1.2 Kx=ECDH     Au=ECDSA Enc=AES(256)  Mac=SHA384
  ECDHE-RSA-AES256-SHA    SSLv3 Kx=ECDH     Au=RSA  Enc=AES(256)  Mac=SHA1
  ECDHE-ECDSA-AES256-SHA  SSLv3 Kx=ECDH     Au=ECDSA Enc=AES(256)  Mac=SHA1
  ECDHE-RSA-AES128-SHA256 TLSv1.2 Kx=ECDH     Au=RSA  Enc=AES(128)  Mac=SHA256
  ECDHE-ECDSA-AES128-SHA256 TLSv1.2 Kx=ECDH     Au=ECDSA Enc=AES(128)  Mac=SHA256
  ECDHE-RSA-AES128-SHA    SSLv3 Kx=ECDH     Au=RSA  Enc=AES(128)  Mac=SHA1
  ECDHE-ECDSA-AES128-SHA  SSLv3 Kx=ECDH     Au=ECDSA Enc=AES(128)  Mac=SHA1


実験のために一つに絞る形で以下のように設定してみました。

SSLProtocol -all +TLSv1.2
SSLHonorCipherOrder on
SSLCipherSuite ECDHE-ECDSA-AES256-GCM-SHA384
SSLCompression off

# OCSP Stapling
SSLUseStapling on
SSLStaplingResponderTimeout 5
SSLStaplingReturnResponderErrors off
SSLStaplingCache shmcb:/run/httpd/ocsp(128000)


Header always set Strict-Transport-Security "max-age=15768000"



上手く動いてくれているようです。

f:id:shukukei:20200907214502p:plain


f:id:shukukei:20200907214533p:plain