技術者ブログ

クラウド型WAF「Scutum(スキュータム)」の開発者/エンジニアによるブログです。
金床“Kanatoko”をはじめとする株式会社ビットフォレストの技術チームが、“WAFを支える技術”をテーマに幅広く、不定期に更新中!

2017年10月

1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        
  • お問い合わせはこちら
Scutum開発者/エンジニアによる技術ブログ WAF Tech Blog

両想いのSSL証明書は存在する

はじめに

以前のエントリにおいてSSL中間CA証明書を検索するウェブサービスについて紹介しました。このウェブサービスを作る過程で、私たちは合計約82万枚のSSL証明書を収集してデータベースを作成し、それを元に様々な分析を行いました。その際に見つけた、普段では気がつくことがないような面白い話がいくつかあるので、今回ここで紹介してみたいと思います。

尚、このWAF Tech Blogは基本的にはエンジニア向けの有用な情報をお届けしているつもりですが、今回は実際の業務等に役に立つ情報は殆どなく、ネタ的な要素が強い内容となっていることをご了承ください。

えっ!? 私の証明書の階層、深すぎ...?

SSL証明書は階層構造を取ることが知られています。最もポピュラーなのはルート証明書からサーバ証明書までが3階層あるいは4階層のものです。

階層が浅いものを探してみると、まれに2階層というものがあります。例えば次のように、日本政府の発行したルート証明書へ繋がる2階層の階層構造が使われているサイトが存在します(残念ながら日本政府のルート証明書はごく一部のウェブブラウザにしかインストールされていないようですが)。

では深いもの、例えば5階層、あるいは6階層というサイトは存在するのでしょうか?

データベースを階層の深さをキーに分析してみたところ、もっとも深いものはなんと驚きの7階層の構造を持つものでした。7階層を持つものはこの1枚だけであり、驚きの深さと言えるでしょう。

この7階層のルート証明書である「VeriSign Universal Root Certification Authority」は非常に珍しいもので、シマンテックのサイトにも書かれているように現時点では商用のサービスでは使われていないようです。

両想いの証明書

次の2枚の証明書を見てください。

Issuer:  CN=AddTrust External CA Root, OU=AddTrust External TTP Network, O=AddTrust AB, C=SE
Subject: CN=UTN - DATACorp SGC, OU=http://www.usertrust.com, O=The USERTRUST Network, L=Salt Lake City, ST=UT, C=US
-----BEGIN CERTIFICATE-----
MIIEpjCCA46gAwIBAgIQOs2rnHWYhryvdOXfgan06DANBgkqhkiG9w0BAQUFADBv
MQswCQYDVQQGEwJTRTEUMBIGA1UEChMLQWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFk
ZFRydXN0IEV4dGVybmFsIFRUUCBOZXR3b3JrMSIwIAYDVQQDExlBZGRUcnVzdCBF
eHRlcm5hbCBDQSBSb290MB4XDTA1MDYwNzA4MDkxMFoXDTIwMDUzMDEwNDgzOFow
gZMxCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJVVDEXMBUGA1UEBxMOU2FsdCBMYWtl
IENpdHkxHjAcBgNVBAoTFVRoZSBVU0VSVFJVU1QgTmV0d29yazEhMB8GA1UECxMY
aHR0cDovL3d3dy51c2VydHJ1c3QuY29tMRswGQYDVQQDExJVVE4gLSBEQVRBQ29y
cCBTR0MwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDf7lgQoituVcSO
vy5GCefgCA8uK3oTlBu99raAjmUFkwAevK/iD44ZDRJH7Kyto/oucPjebvtWQhWe
LlzvI94huQV2JxkPT9bDnLS+lBlj8qYRCutTSJy+8ik7FugaoEymyfQYWWjAcPJT
AMBeUIKlVm82+UrgRIagTU7WR25JSstn16bEBbmOHvT8/83nNuCcBWyyMyIV0LTg
zBfAssD0/jI/KSqVe9jyp04PVHyhDYCzCQPB/1zdXpo+vK68R4pqrnHKH7EquF9C
BQvsRjDRcgvK6VZt9e/feL5hurKlrgRMvKisaRWXve/rtIy/NfjUw9EoDlw6n3AY
MyB3xKKvAgMBAAGjggEXMIIBEzAfBgNVHSMEGDAWgBStvZh6NLQm9/rEJlTvA73g
JMtUGjAdBgNVHQ4EFgQUUzLRs89/+uDxoF2FTpLSnkUdtE8wDgYDVR0PAQH/BAQD
AgEGMA8GA1UdEwEB/wQFMAMBAf8wIAYDVR0lBBkwFwYKKwYBBAGCNwoDAwYJYIZI
AYb4QgQBMBEGA1UdIAQKMAgwBgYEVR0gADBEBgNVHR8EPTA7MDmgN6A1hjNodHRw
Oi8vY3JsLnVzZXJ0cnVzdC5jb20vQWRkVHJ1c3RFeHRlcm5hbENBUm9vdC5jcmww
NQYIKwYBBQUHAQEEKTAnMCUGCCsGAQUFBzABhhlodHRwOi8vb2NzcC51c2VydHJ1
c3QuY29tMA0GCSqGSIb3DQEBBQUAA4IBAQCA9M0Pc0IR51WTgSZfdCsRm4ER0eM6
BfVbRvEi3PcHD3rBnJ7PiMRe98ePDA57Sg058pXx0MMx+f23NdzYdlmrIDqwFp+N
Ff1c1gV/ux50gTWwQZkDNCwgmmQs/24fjm7VSHGshFE4x0cSmGPXgdqnbhULbQV0
7vCOkSvolR+0/fOzbq7txWJnMqQDbJPSxNjnsBOSYykqTHgMstUyig1dxb5AWcI5
jIKBgDSl+ycOw4lsN8+prM1Z1u9Tmxzm+Zi55USG06bVI+4qiefT0cqBi4tb/W84
k0Neil3hNSypbXJZX6QcPpBFA3u1afTJNNG0UCeZt4f+rEGFiPTThPxA
-----END CERTIFICATE-----
Issuer:  CN=UTN - DATACorp SGC, OU=http://www.usertrust.com, O=The USERTRUST Network, L=Salt Lake City, ST=UT, C=US
Subject: CN=AddTrust External CA Root, OU=AddTrust External TTP Network, O=AddTrust AB, C=SE
-----BEGIN CERTIFICATE-----
MIIEezCCA2OgAwIBAgIQftGpq77jb0bNa04pNJBW8zANBgkqhkiG9w0BAQUFADCB
kzELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2Ug
Q2l0eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExho
dHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xGzAZBgNVBAMTElVUTiAtIERBVEFDb3Jw
IFNHQzAeFw05OTA2MjQxODU3MjFaFw0xOTA2MjQxOTA2MzBaMG8xCzAJBgNVBAYT
AlNFMRQwEgYDVQQKEwtBZGRUcnVzdCBBQjEmMCQGA1UECxMdQWRkVHJ1c3QgRXh0
ZXJuYWwgVFRQIE5ldHdvcmsxIjAgBgNVBAMTGUFkZFRydXN0IEV4dGVybmFsIENB
IFJvb3QwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC39xoz5vIABC05
4E5b7R+8bA/Ntfojts7emxEzl6QpTH2Tn71KvJPtAxrjj8/lbVBa1pcplFqAsEl6
2y6V/bjKvzc4LR4+kUGtcFbH8E8/6DKedMrIkFTpxl8PeJ2aQDwOrGGqXhSPnoeh
alDc15pOrwWzpnGUnHGzUGAKxxOdOAeGAqjpqGkmGJCrTLBPI6s6T4TY386f4Wlv
u9dC12tE5Met7m1BX3JacQg3s3llpFmglDf3AC8NwpJy2tA4ctsUqEXEXSp9t7TW
xO6szRNEt8kr3UMAJfphuWlqWCMRt6czj1Z1WfXNKddGtworZbbTQm8Vsrh7++/p
XVPVNFonAgMBAAGjge0wgeowHwYDVR0jBBgwFoAUUzLRs89/+uDxoF2FTpLSnkUd
tE8wHQYDVR0OBBYEFK29mHo0tCb3+sQmVO8DveAky1QaMA4GA1UdDwEB/wQEAwIB
BjAPBgNVHRMBAf8EBTADAQH/MBEGA1UdIAQKMAgwBgYEVR0gADA9BgNVHR8ENjA0
MDKgMKAuhixodHRwOi8vY3JsLnVzZXJ0cnVzdC5jb20vVVROLURBVEFDb3JwU0dD
LmNybDA1BggrBgEFBQcBAQQpMCcwJQYIKwYBBQUHMAGGGWh0dHA6Ly9vY3NwLnVz
ZXJ0cnVzdC5jb20wDQYJKoZIhvcNAQEFBQADggEBADwlhyhsmL2dQhxeHmQPVn+W
PPO582kaafSkCNQgTbHyYyfhnwFDN7CxeudxyHoh7qg1wZ3mvGizRoCaPQRyPC9I
/eHMQncOsgU5pAD4NcKseMD9xxO8iyBNWjWvlMoysMZ50ZguO8JSRcGbtyYLywQa
9m6SROF8nMESeKYZAeLvYPt6V/MyKAa1uh2RGyhdZGpfU5wO1erMRb19RguvU0nG
zIAYW1utsWITYE45WVHEpobL8Q1t3t0xC1+jB6D7PkaqSXMEfYoLsC9GYo7hvVBl
KLHIdkr0IgMMVdT8DIdWfgtl74frfPclt80nTNs8CSlpF46LsEfo2mC3p2lm+ws=
-----END CERTIFICATE-----

IssuerとSubjectがまるっきり逆になっています。

通常、SubjectとIssuerに登場するCAにははっきりとした上下関係が存在しており、ルート証明書を最上位として

  • 「AがAを承認する(ルート証明書)」
  • 「AがBを承認する」
  • 「BがCを承認する」
  • (以下同様)
という形で下位に至ります。しかし今回、上記のような「AがBを承認する」ものと「BがAを承認する」ものの両方の証明書が存在するケースを発見しました。上記の2つの他に、実質同じCAと思われる「CN=UTN-USERFirst-Hardware, OU=http://www.usertrust.com, O=The USERTRUST Network, L=Salt Lake City, ST=UT, C=US」についても同じものが見られます。それぞれのルート証明書も存在しており、非常に珍しいと言えるでしょう。ちなみにこれを発見したきっかけは、解析プログラムが階層構造の分析において無限ループを起こしていたことだったりします...(必ず上下関係があるという前提でコードを書いていたため)。

これらの両想いの中間CA証明書を両方ともサーバにインストールしておくと、もしかしたら恋い焦がれて無限ループを引き起こしてしまうSSLクライアント実装があるかもしれません。

最も人気のないルート証明書ランキング

今回調査した82万枚のSSL証明書について、それぞれのルート証明書がどれになるかを調べてそれぞれをカウントし、最もマイナーなものを調べてみました。結果は意外にも接戦となり、「1つの証明書(インターネット上で稼働しているSSLサーバ)だけで使われているルート証明書」が5つも見つかりました。

1: OU=Security Communication RootCA2, O="SECOM Trust Systems CO.,LTD.", C=JP
2: CN=VeriSign Universal Root Certification Authority, OU="(c) 2008 VeriSign, Inc. - For authorized use only", OU=VeriSign Trust Network, O="VeriSign, Inc.", C=US
3: CN=TC TrustCenter Class 4 CA II, OU=TC TrustCenter Class 4 CA, O=TC TrustCenter GmbH, C=DE
4: CN=GlobalSign, O=GlobalSign, OU=GlobalSign Root CA - R3
5: EMAILADDRESS=ips@mail.ips.es, CN=IPS CA CLASE3 Certification Authority, OU=IPS CA CLASE3 Certification Authority, O="ips@mail.ips.es C.I.F.  B-60929452", O=IPS Internet publishing Services s.l., L=Barcelona, ST=Barcelona, C=ES

上記1から5まで番号を付けていますが、すべて同様に「1つのサーバのみで使用されている」ものです。

このうち1,3,4についてはそのウェブサーバのコンテンツとして「テスト」と明記してあり、どうやら各CAが自分たちの発行したルート証明書に実際にインターネット経由でアクセスし動作確認を行うためのサーバのようです。

2はベリサインのもので、本エントリの先頭でお伝えした7階層の深さを持つサーバで使用されているものです。最も深い階層を持つだけでなく、このサーバ専用のルート証明書を持っているということで、今回調査した中で最強のSSLサーバと言えるかもしれません。

5についても1,3,4同様にテスト目的かと思われましたが、はっきりとは判断できない状態でした。

まとめ

今回は大量のSSL証明書を分析する中で見つけた、裏話的な話題を3つお届けしました。当初は82万枚という数字は非常に多いものだと思っていましたが、最近発表されたこちらのレポートではなんと580万ものSSLサーバから情報を集めたということで、上には上がいると実感させられます。

本エントリについて、「情報がすごく役に立った!」などのフィードバックがあれば、ぜひ@kinyukaまでお願いします。