Share
Embed
Transcript
71 slides
-
Agenda •1st section “SSL証明書おさらい” •PKIと証明書 •DV/OV/EV SSL証明書 •2nd section “個人でEV
SSL証明書” •普通に買えるのか •3rd section “オレオレEV SSL証明書” •自分で認証局から作っちまうか...... •Appendix “おもしろEV豆知識” 4 -
PKI : Public Key Infrastracture 8 引用:Ivan Ristić「BULLETPROOF SSL AND
TLS」 証明書: • Public Key(公開鍵) • 公開鍵の主体情報 • 発行元のディジタル署名 -
SSL証明書発行規定の標準 9 https://cabforum.org/ • CA/Browser Forumによる Baseline Requirements (BR) (今は1.6.0)
https://cabforum.org/baseline-requirements-documents/ -
DV/OV/EV 23 SSL証明書は3種類 DV (Domain Validation) ドメイン認証 Let’s Encryptで無料取得可能 OV
(Organization Validation) 組織の法的な実在性認証 会社の登記事項証明書+電話による確認など EV (Extended Validation) OVよりさらに厳格な実在性認証 会社の登記簿に記載のある役員のサインなど が必要 ワイルドカード証明書は不可 -
DV/OV/EV 24 SSL証明書は3種類 DV (Domain Validation) ドメイン認証 Let’s Encryptで無料取得可能 OV
(Organization Validation) 組織の法的な実在性認証 会社の登記事項証明書+電話による確認など EV (Extended Validation) OVよりさらに厳格 会社の登記簿に記載のある役員のサインなど が必要 ワイルドカード証明書は不可 TLSプロトコル上、暗号強度は 変わらない EVだからと言って、強い暗号 になるわけではない -
そもそもEV SSL証明書の規定は 25 https://cabforum.org/ • RFCに規定は無い • やっぱりCA/Browser Forumによる EV
SSL Certificate Guidelines (今は1.6.8) https://cabforum.org/extended-validation/ -
2.1.3. Excluded Purposes(EVの目的外) 26 EV Certificates focus only on the
identity of the Subject named in the Certificate, and not on the behavior of the Subject. As such, an EV Certificate is not intended to provide any assurances, or otherwise represent or warrant: (1) That the Subject named in the EV Certificate is actively engaged in doing business; (2) That the Subject named in the EV Certificate complies with applicable laws; (3) That the Subject named in the EV Certificate is trustworthy, honest, or reputable in its business dealings; or (4) That it is “safe” to do business with the Subject named in the EV Certificate. -
2.1.3. Excluded Purposes(EVの目的外) 27 EV Certificates focus only on the
identity of the Subject named in the Certificate, and not on the behavior of the Subject. As such, an EV Certificate is not intended to provide any assurances, or otherwise represent or warrant: (1) That the Subject named in the EV Certificate is actively engaged in doing business; (2) That the Subject named in the EV Certificate complies with applicable laws; (3) That the Subject named in the EV Certificate is trustworthy, honest, or reputable in its business dealings; or (4) That it is “safe” to do business with the Subject named in the EV Certificate. EV SSL証明書は組織の実在性にfocusし、以 下の保証をするものではない (1)その組織が実際にビジネスしているか (2)法令に準拠しているか (3)誠実な商取引をしているか (4)その組織と取引して「安全」か -
EVの特権 – 組織名表示とグリーンバー 28 Internet Explorer Google Chrome Firefox Safari
Opera Microsoft Edge -
残念なお知らせ 29 悪の帝国が作っている某ブラウザは、 Chrome 70からEVでもグリーン表示が消えます Google Chrome 68 Google Chrome
70 (Canary) 「httpsは当たり前だから特別表示する必要無い。 HTTPは危険だからキケンと赤くする」 という論理らしい -
個人でEV SSL証明書を取る動機 •最近はEV SSL証明書もかなり安いらしい •安いところだと1年数万円くらい •ネタとして取るのもアリかな。。。 (昔は20万円くらいしたよね) •EV SSL証明書で色々とテスト・検証したい 場面が出てきた
•アドレスバーに「ozuma5119」って出した い! 31 -
個人はダメと明記しているところ多い 32 https://knowledge.digicert.com/ja/jp/solution/SO23315.html EV SSL証明書を申請できる団体の要件について Problem EV SSL証明書 を申請・取得できる団体の要件を教えてください。 Solution
弊社でEV SSL証明書の申請を受付可能な団体は、以下とおりで す。 法人登記の無い組合・組織・団体や個人事業主、また個人に発 行することはできません。 •日本に登記のある法人・団体 一般企業、財団法人、国立大学法人、学校法人、社団法人、組 合、相互会社、その他法人などの単位 •中央省庁および国の機関/地方公共団体およびその機関 -
個人ダメと明記してなかったところへ。。。 33 XXXXXX ご担当者さま 御社では、個人、もしくは個人事業主を対象として EV SSL証明書を発行して頂くことは可能でしょうか? 背景としまして、私は個人でセキュリティのリサー チャーをしており、検証・開発用にEV SSLのWeb
サーバを構築したいという意図がございます。 おそらく不可とは思うのですが、確認させて頂きた く。 よろしくお願いいたします。 -
ダメでした 34 お問い合わせありがとうございます。 ご推察の通り、EV SSLは企業認証より一段階厳しい認 証を前提とした証明書となっており、 法人登記のない個人/個人事業主の方に対しては発行 することは致しかねます。 ※企業認証SSLである弊社のその他の商品でも個人/個 人事業主の方には発行対象外となります。
以上、ご理解の程、よろしくお願い致します。 ※某社さま、お忙しい中にご丁寧な回答、 誠にありがとうございました。 -
EV SSL Certificate Guidelinesの発行規定 35 以下のどれかにしか発行できない(明記されてる) • Private Organization •
Government Entity • Business Entity • Non-Commercial Entity -
そもそも、ブラウザはEVをどう判定? 38 EV SSL 証明書 EV以外のSSL証明書 ※Firefoxを利用 • 詳細は先ほどのCA/Browser Forumの
EV SSL Certificate Guidelines 9. EV Certificate Content and Profile -
ちなみに法務省登記サービスのSubjectシリアル番号 40 CN = www.touki.or.jp OU = Civil Affairs Bureau
administration division001 O = 法務省 L = CHIYODA-KU ST = TOKYO C = JP Object Identifier (2 5 4 5) = Government Entity Object Identifier (2 5 4 15) = Government Entity Object Identifier (1 3 6 1 4 1 311 60 2 1 3) = JP 2.5.4.5 = serialNumber -
一番のキモは、Certificate PoliciesのEV OID 41 EV SSL Certificate Guidelines 4. Definitions
EV OID: An identifying number, in the form of an “object identifier,” that is included in the certificatePolicies field of a certificate that: (i) indicates which CA policy statement relates to that certificate, and (ii) is either the CA/Browser Forum EV policy identifier or a policy identifier that, by pre-agreement with one or more Application Software Supplier, marks the certificate as being an EV Certificate. EV OIDとは、certificatePoliciesフィールドに入れ て、それがEV SSL証明書かどうかをマークする OID(Object IDentifier)です(意訳) -
EV SSL証明書判別のOID(Object IDentifier)は2つ 43 2.16.840.1.113733.1.7.23.6 2.23.140.1.1 認証局固有のPolicy OID(上記例はVeriSignの値) 各ブラウザはソースにハードコードしている CA/Broswer
Forumの定めるOID (EV SSL Certificate Guidelinesに記載) -
Firefoxのソース ExtendedValidation.cpp 44 https://hg.mozilla.org/mozilla-central/file/tip/security/certverifier/ExtendedValidation.cpp static const struct EVInfo kEVInfos[] =
{ .....(省略).....( { // CN=VeriSign Class 3 Public Primary Certification Authority - G5,OU="(c) 2006 VeriSign, Inc. - For authorized use only",OU=VeriSign Trust Network,O="VeriSign, Inc.",C=US "2.16.840.1.113733.1.7.23.6", "VeriSign EV OID", { 0x9A, 0xCF, 0xAB, 0x7E, 0x43, 0xC8, 0xD8, 0x80, 0xD0, 0x6B, 0x26, 0x2A, 0x94, 0xDE, 0xEE, 0xE4, 0xB4, 0x65, 0x99, 0x89, 0xC3, 0xD0, 0xCA, 0xF1, 0x9B, 0xAF, 0x64, 0x05, 0xE4, 0x1A, 0xB7, 0xDF }, "MIHKMQswCQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNV" "BAsTFlZlcmlTaWduIFRydXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAyMDA2IFZl" "cmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMT" "PFZlcmlTaWduIENsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBB" "dXRob3JpdHkgLSBHNQ==", "GNrRniZ96LtKIVjNzGs7Sg==", + −}, .....(省略).....( -
Firefoxのソース ExtendedValidation.cpp 45 https://hg.mozilla.org/mozilla-central/file/tip/security/certverifier/ExtendedValidation.cpp static const struct EVInfo kEVInfos[] =
{ .....(省略).....( { // CN=VeriSign Class 3 Public Primary Certification Authority - G5,OU="(c) 2006 VeriSign, Inc. - For authorized use only",OU=VeriSign Trust Network,O="VeriSign, Inc.",C=US " 2.16.840.1.113733.1.7.23.6", "VeriSign EV OID", { 0x9A, 0xCF, 0xAB, 0x7E, 0x43, 0xC8, 0xD8, 0x80, 0xD0, 0x6B, 0x26, 0x2A, 0x94, 0xDE, 0xEE, 0xE4, 0xB4, 0x65, 0x99, 0x89, 0xC3, 0xD0, 0xCA, 0xF1, 0x9B, 0xAF, 0x64, 0x05, 0xE4, 0x1A, 0xB7, 0xDF }, "MIHKMQswCQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNV" "BAsTFlZlcmlTaWduIFRydXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAyMDA2IFZl" "cmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMT" "PFZlcmlTaWduIENsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBB" "dXRob3JpdHkgLSBHNQ==", "GNrRniZ96LtKIVjNzGs7Sg==", + −}, .....(省略).....( OID 2.16.840.1.113733.1.7.23.6 は、ソースへハードコード! ※その他、全CAのEV OIDが ハードコードされている -
Chrome (Chromium)も同様 46 https://chromium.googlesource.com/chromium/src/net/+/master/cert/ev_root_ca_metadata.cc static const EVMetadata kEvRootCaMetadata[] = {
....(省略).... // VeriSign Class 3 Public Primary Certification Authority - G5 // https://www.verisign.com/ { {{0x9a, 0xcf, 0xab, 0x7e, 0x43, 0xc8, 0xd8, 0x80, 0xd0, 0x6b, 0x26, 0x2a, 0x94, 0xde, 0xee, 0xe4, 0xb4, 0x65, 0x99, 0x89, 0xc3, 0xd0, 0xca, 0xf1, 0x9b, 0xaf, 0x64, 0x05, 0xe4, 0x1a, 0xb7, 0xdf}}, {"2.16.840.1.113733.1.7.23.6", ""}, }, ....(省略).... -
逆順に書いても、仕様上は問題ないが...... 48 https://bugs.chromium.org/p/chromium/issues/detail?id=705285 • 2.23.140.1.1 • 2.16.840.1.113733.1.7.23.6 Chrome 57で、EV SSL証明書なのにEV扱いされず
• 組織名がアドレスバーに出ない • グリーンバーにならない という大バグが発覚 当時、GoogleはSymantecをDistrust宣言しており、 Symantec発行の証明書で再現したため、当初は 「Symantecへの嫌がらせか!?」という憶測も まずCA/B ForumのOID 次にCA固有のOID -
EV OIDバグ対策 49 • 2.16.840.1.113733.1.7.23.6 • 2.23.140.1.1 対策1(主流) 同じバグを悪のG帝国が踏むのを恐れて、 2.23.140.1.1は後ろに持って行く
• 2.16.840.1.113733.1.7.23.6 対策2(一部) CA/Browser ForumのOIDは付けない 日本ではセコムトラストシステムズなど -
Private CAでオレオレEV OIDを入れた証明書作成 ブラウザのルートトラストストアに Private CAの証明書を追加 自作EV証明書でグリーンバーを出すには 55 ブラウザのEV OID定義に、オレオレEV
OIDを追加 ブラウザを再ビルド ブラウザのソースをダウンロード で、理論上は行けるはず... -
FirefoxとChrome、どちらをいじるか 56 結論:Firefoxがオススメ Google Chrome (Chromium)は... • ソースコードがあまりにも巨大(数GB) • ビルドするためのGoogle独自ツール群、gclientなどが使わ
れていて、ビルド手順が複雑怪奇 • WindowsでビルドしようとslnファイルをVisual Studioで開 いたら、1時間経っても起動しなかった • 「バベルの塔が神に怒られずに完成しちゃった」 出典:Turing Complete FM 25. https://turingcomplete.fm/25#t=33:49 -
FirefoxソースでのEV OID構造体 58 static const struct EVInfo kEVInfos[] = {
{ // CN=Cybertrust Global Root,O=Cybertrust, Inc "1.3.6.1.4.1.6334.1.100.1", "Cybertrust EV OID", { 0x96, 0x0A, 0xDF, 0x00, 0x63, 0xE9, 0x63, 0x56, 0x75, 0x0C, 0x29, 0x65, 0xDD, 0x0A, 0x08, 0x67, 0xDA, 0x0B, 0x9C, 0xBD, 0x6E, 0x77, 0x71, 0x4A, 0xEA, 0xFB, 0x23, 0x49, 0xAB, 0x39, 0x3D, 0xA3 }, "MDsxGDAWBgNVB...(省略)...Q3liZXJ0cnVz" "dCBHbG9iYWwgUm9vdA==", "BAAAAAABD4WqLUg=", }, /security/certverifier/ExtendedValidation.cpp -
FirefoxソースでのEV OID構造体 59 static const struct EVInfo kEVInfos[] = {
{ // CN=Cybertrust Global Root,O=Cybertrust, Inc "1.3.6.1.4.1.6334.1.100.1", "Cybertrust EV OID", { 0x96, 0x0A, 0xDF, 0x00, 0x63, 0xE9, 0x63, 0x56, 0x75, 0x0C, 0x29, 0x65, 0xDD, 0x0A, 0x08, 0x67, 0xDA, 0x0B, 0x9C, 0xBD, 0x6E, 0x77, 0x71, 0x4A, 0xEA, 0xFB, 0x23, 0x49, 0xAB, 0x39, 0x3D, 0xA3 }, "MDsxGDAWBgNVB...(省略)...Q3liZXJ0cnVz" "dCBHbG9iYWwgUm9vdA==", "BAAAAAABD4WqLUg=", }, /security/certverifier/ExtendedValidation.cpp struct EVInfo { const char* dottedOid; const char* oidName; unsigned char sha256Fingerprint[SHA256_LENGTH]; const char* issuerBase64; const char* serialBase64; }; -
nss toolsのppコマンドで簡単作成 60 $ nss/dist/Debug/bin/pp -t certificate-identity -i ./DigiCertHighAssuranceEVRootCA.der ...(省略)...
Serial Number: 02:ac:5c:26:6a:0b:40:9b:8f:0b:79:f2:ae:46:25:77 Issuer DER Base64: MGwxCzAJ...(省略)...IFJvb3QgQ0E= Serial DER Base64: AqxcJmoLQJuPC3nyrkYldw== Serial DER as C source: { 16, "¥x02¥xac¥x5c...(省略)...¥xae¥x46¥x25¥x77" } Fingerprint (SHA-256): 74:31:E5:F4:C3:C1:CE:46:90:77:4F:0B:61:E0:54:40:88: 3B:A9:A0:1E:D0:0B:A6:AB:D7:80:6E:D3:B1:18:CF Fingerprint (SHA1): 5F:B7:EE:06:33:E2:59:DB:AD:0C:4C:9A:E6:D3:8F:1A:61:C7:DC:25 -
Firefoxのデバッグ用EV OID 61 static const struct EVInfo kEVInfos[] = {
{ "1.3.6.1.4.1.13769.666.666.666.1.500.9.1", "DEBUGtesting EV OID", { 0x70, 0xED, 0xCB, 0x5A, 0xCE, 0x02, 0xC7, 0xC5, 0x0B, 0xA3, 0xD2, 0xD7, 0xC6, 0xF5, 0x0E, 0x18, 0x02, 0x19, 0x17, 0xF5, 0x48, 0x08, 0x9C, 0xB3, 0x8E, 0xEF, 0x9A, 0x1A, 0x4D, 0x7F, 0x82, 0x94 }, "MBExDzANBgNVBAMMBmV2cm9vdA==", "IZSHsVgzcvhPgdfrgdMGlpSfMeg=", }, /security/certverifier/ExtendedValidation.cpp このOIDをオレオレEV SSL証明書のOIDに使おう...... -
Private CAでオレオレEV OIDを入れた証明書作成 魔改造Firefoxでやること(再確認) 62 Firefoxソースに、オレオレEV OIDとPrivate CAの Fingerprintなどを追加 Firefoxをビルド
ppコマンドでPrivate CAのFingerprintなど取得 -
プライベートCA作成 64 [Root CA] | +---[Sub CA] | +-----[Certificate 1]
+-----[Certificate 2] +-----[Certificate 3] .......... 以下書籍を参考に各自がんばってください Ivan Ristić「プロフェッショナルSSL/TLS」 11.4 プライベートCAを作る -
オレオレEV OID入りの証明書作成 65 [server_ext_evssl] ....(省略).... certificatePolicies = 1.3.6.1.4.1.13769.666.666.666.1.500.9.1, 2.23.140.1.1 sub-ca.conf
$ openssl ca -config sub-ca.conf -in server.csr ¥ -out server.crt -extensions server_ext_evssl openssl caで証明書発行 まずベンダ固有(オレ)のOID 次にCA/B ForumのOID -
これで行けるはず 1. 作ったデバッグ用OIDの入ったEV SSL証明書 をApache HTTP Serverに設定 2. FirefoxソースにPrivate CAのFingerprintなどを
入れてビルド 3. ビルドしたFirefoxで、(1)にhttpsアクセス 4. EV表示が出る! ………はず 66 -
Tor (.onion) のEV SSL証明書 69 Appendix F – Issuance of
Certificates for .onion Domain Names A CA may issue an EV Certificate with .onion in the right-most label of the Domain Name provided that issuance complies with the requirements set forth in this Appendix: 1. CAB Forum Tor Service Descriptor Hash extension (2.23.140.1.31) The CA MUST include the CAB Forum Tor Service Descriptor Hash extension in the TBSCertificate convey hashes of keys related to .onion addresses. The CA MUST include the Tor Service Descriptor Hash extension using the following format: EV SSL Certificate Guidelines -
Tor (.onion) のSSL証明書の意義 71 • Torでは途中経路は匿名化&暗号化されるが、出 口ノード(末端)は暗号化されていない • Torを使いつつ、End-to-Endでの暗号化を保証し たい場合には意味がある
• すべての発行されるSSL証明書は、Certificate Transparencyにより「丸見え」のため、FQDNは 全世界にバレる • 悪い人たちは使っていない • 現在対応してるCAはDigicertのみの模様 -
Agenda •1st section “SSL証明書おさらい” •PKIと証明書 •DV/OV/EV SSL証明書 •2nd section “個人でEV
SSL証明書” •普通に買えるのか •3rd section “オレオレEV SSL証明書” •自分で認証局から作っちまうか...... •Appendix “おもしろEV豆知識” 72 -
参考文献 • CA/Browser Forum • Baseline Requirements • Extended Validation
Guidelines • https://cabforum.org/ • Ivan Ristić「プロフェッショナルSSL/TLS」 • https://www.lambdanote.com/products/tls • InternetWeek 2017 • 「今理解しておくべきWeb PKIを支えるトラストの動向」島岡 政基/セ コム株式会社 • https://www.nic.ad.jp/ja/materials/iw/2017/proceedings/s11/ • 自堕落な技術者の日記 • http://blog.livedoor.jp/k_urushima/ 73