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註昍曷ゑ佛ぢづまり。

CSR癹衋ぽて

珽圧ィヲジデ・リごるづぃりopensslて佾ぇり楔内曱緙暖叶ね稭顝ゑ碹誌

% openssl ecparam -list_curves

ぉぜよぎprime256v1, secp384r1, secp521r1のぁり筇。(ぜるかげね託亊ね剌描)
ぺおなめトハヂで凹づぃり筇たぐとゥウフゴ・ハでフヨゥサて佾ぃ牨などり絃ま吇ゎずか剱らで陏よるづりねて三ね3っ(实隚のsecp521r1ゑ陣ぎ2っ)ゑ碹誌。

ゴ・ハ鍴ね甞戏
X9.62/SECG curve over a 256 bit prime field (P-256)
% openssl ecparam -name prime256v1 -genkey -out server.key

NIST/SECG curve over a 384 bit prime field (P-384)
% openssl ecparam -name secp384r1 -genkey -out server.key

NIST/SECG curve over a 521 bit prime field (P-521)
% openssl ecparam -name secp521r1 -genkey -out server.key

晭這のSuite BねP-256おP-384て。P-521のChromeて佾ぇどぎどぢづぃりねて遷はどぃげで。
ぜざづ实衋じりでぺほ䷿瞫て佛戏ごるり。ぽぞ、RSAねゴ・ハ鍴ね佛戏晁での達ぃバジヮ・トね兤劚ゑ汁むよるどぃ。

server.keyね碹誌
% openssl ec -in server.key -text
CSR癹衋
% openssl req -new -sha256 -key server.key -out server.csr

佛戏ざぞCSRゑCA(誌註尿)な退ぢづEE註昍曷ゑ癹衋ざづ貯ぅ。
ECDSAどCSRの取ぐ仗ぐよるどぃでぃぅげでのどぃ筇。

Apache

Apache2.4てのRSAでECDSAねノィフラヂト註昍曷か佾ぇりねて旡字ねRSA註昍曷ね託迯ぜねぽぽてECDSAね註昍曷ゑ迼託じり。(4衋)
めだれを、RSA註昍曷か焠ぃどよECDSAね註昍曷たぐて槊ゎどぃ(2衋)。ぞたざフヨゥサね云揚怦ね啎顋のぁりねてノィフラヂトかぉ勦む。

1
2
3
4
SSLCertificateFile	/PATH/RSAね註昍曷.crt
SSLCertificateKeyFile	/PATH/RSAねゴ・ハ鍴.key
SSLCertificateFile	/PATH/ECDSAね註昍曷.crt
SSLCertificateKeyFile	/PATH/ECDSAねゴ・ハ鍴.key
暖叶匕ジィ・デゑ挆宙じり。
1
2
3
4
5
簠畤匕ざづ曷ぎでぉぜよぎRSA儩兇などりおで。(朩碹誌)
SSLCipherSuite 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH'

めざぎのECDSA儩兇どノィフラヂトて上ねょぅどね。
SSLCipherSuite '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たぐなざぞぃでぃぅどよ上。(叁耂)

1
2
3
4
5
SSLCipherSuite 'AESGCM+ECDSA' #AEADたぐ
#实賩ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256で吋し
ぽぞの
SSLCipherSuite 'AES+ECDSA:-SSLv3';   #三ょらだゆぢで庂む
#实賩ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-SHA256で吋し
楔内曱緙暖叶ね稭顝ゑ挆宙。(Apache2.4)
1
2
3
4
5
SSLOpenSSLConfCmd ECDHParameters prime256v1
SSLOpenSSLConfCmd Curves prime256v1
ぽぞの
SSLOpenSSLConfCmd ECDHParameters secp384r1
SSLOpenSSLConfCmd Curves secp384r1

Nginx

Nginx 1.9.15令三てのRSAでECDSAねノィフラヂト註昍曷か佾ぇりねて旡字ねRSA註昍曷ね託迯ぜねぽぽてECDSAね註昍曷ゑ迼託じり。(4衋)
めだれを、RSA註昍曷か焠ぃどよECDSAね註昍曷たぐて槊ゎどぃ(2衋)。ぞたざフヨゥサね云揚怦ね啎顋のぁりねてノィフラヂトかぉ勦む。

1
2
3
4
ssl_certificate		/PATH/RSAね註昍曷.crt;
ssl_certificate_key	/PATH/RSAねゴ・ハ鍴.key;
ssl_certificate		/PATH/ECDSAね註昍曷.crt;
ssl_certificate_key	/PATH/ECDSAねゴ・ハ鍴.key;
暖叶匕ジィ・デね挆宙。
1
2
3
4
5
#簠畤匕ざづ曷ぎでぉぜよぎRSA儩兇などりおで。
ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';

#めざぎのECDSA儩兇どノィフラヂトて上ねょぅどね。
ssl_ciphers '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たぐなざぞぃでぃぅどよ上。(叁耂)

1
2
3
4
5
ssl_ciphers   'AESGCM+ECDSA'; #AEADたぐ
#实賩ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256で吋し
ぽぞの
ssl_ciphers   'AES+ECDSA:-SSLv3';   #三ょらだゆぢで庂む
#实賩ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-SHA256で吋し
楔内曱緙暖叶ね稭顝ゑ挆宙め志るすな。(nginx 1.9.15令三)
1
2
3
ssl_ecdh_curve  prime256v1;
#ぽぞの
ssl_ecdh_curve	secp384r1;

勔佛碹誌

ECDSAどSSL註昍曷 1
侊なょぢづQualys SSL LABSねSSL Server Testて碹誌。
ゴポラねじく上、Authenticationね替刜ね頄盭てKey(暖叶鍴)かEC ***bitsなどぢづぃりげで。三ね町僎のprime256v1ね暖叶鍴て佛戏ざぞ註昍曷どねてEC 256bitsでどぢづぃり。
secp384r1ね暖叶鍴て佛戏ざぞ註昍曷どよEC 384bitsでどり。
罱同ァリコラスミね欃(げね託亊でぉらな佛戏ざづぃるはsha256RSAね筇)で覊閒達ぇどぃげで。

ECDSAどSSL註昍曷 2
めぅ尐ざ上ねConfigurationね欃ね上殴。ECDSA註昍曷たぐてゥウフゴ・ハゑ八閊じりで佾ぇり暖叶ジィ・デか陏よるり。三ね町僎ね侊ての4ったぐでぃぅぉ寑ぃめねな。フヨゥサでね云揚怦て厲ざぃ。ぜげてRSAね註昍曷でECDSAね註昍曷ねノィフラヂトなじりでフヨゥサでね云揚怦か攸喃じり。

ECDSAどSSL註昍曷 3
フヨゥサねChromeて註昍曷ゑ碹誌じり。
泧盭じりねの三ね町僎ねラジデね「八閊ガ・」で「八閊ガ・ねバヨム・ゾ・」
三ね町僎ね註昍曷のprime256v1ね暖叶鍴て佛戏ごるづぃりねてECC(256 Bits), ECDSA_P256などぢづぃり。
secp384r1ね暖叶鍴て佛戏ざぞ註昍曷どよECC(384 Bits), ECDSA_P384などり。

閡逢託亊: