zkat’s diary

技術ブログ

TLS ExtensionによるSCTの提供について

CT1において、SCT2をクライアントに提供する方法は3つあります。

1. X.509 v3 Extensionによる方法

これは、いろいろなウェブサイトのサーバー証明書で見ることができます。証明書自体にSCTが埋め込まれているものです。 例えばtwitter.comの現時点の証明書であれば以下の様な感じで書かれていました。

            CT Precertificate SCTs:
                Signed Certificate Timestamp:
                    Version   : v1(0)
                    Log ID    : A4:B9:09:90:B4:18:58:14:87:BB:13:A2:CC:67:70:0A:
                                3C:35:98:04:F9:1B:DF:B8:E3:77:CD:0E:C8:0D:DC:10
                    Timestamp : Jul 17 19:51:00.991 2018 GMT
                    Extensions: none
                    Signature : ecdsa-with-SHA256
                                30:45:02:21:00:8B:F9:25:DD:54:D4:8F:0C:F6:61:1E:
                                9C:10:3D:12:BA:C5:07:1C:E5:74:9D:AE:B1:E5:A1:0A:
                                95:EB:10:E4:19:02:20:23:7B:A2:00:02:68:8A:80:00:
                                20:97:B6:11:BD:16:0B:B6:E2:EF:EC:EC:1E:F7:0B:E3:
                                E3:9F:B3:8B:51:C8:30
                Signed Certificate Timestamp:
                    Version   : v1(0)
                    Log ID    : 87:75:BF:E7:59:7C:F8:8C:43:99:5F:BD:F3:6E:FF:56:
                                8D:47:56:36:FF:4A:B5:60:C1:B4:EA:FF:5E:A0:83:0F
                    Timestamp : Jul 17 19:51:01.145 2018 GMT
                    Extensions: none
                    Signature : ecdsa-with-SHA256
                                30:45:02:20:6E:08:9D:A7:60:20:E5:B9:85:22:FD:4E:
                                BE:9C:24:DB:6F:28:D6:BB:FC:52:75:9C:98:B1:32:91:
                                9E:8B:36:26:02:21:00:FF:6E:5A:E9:72:34:F0:03:4B:
                                15:BF:96:1C:C0:ED:9B:2F:33:18:0B:E8:D9:BC:86:C5:
                                0A:4C:89:67:2D:BF:8A

2.TLS Extensionによる方法

TLSネゴシエーションServer Helloの際に、SCTを提供する方法です。 google.co.jpHTTPSでアクセスしたときのTLSネゴシエーションWiresharkで見てみると以下のような形で SCTが書かれていました。

f:id:zkat:20190417005004j:plain
wireshark-signed-certificate-timestamp

TLS Extensionによる方法でSCTを提供する場合、証明書に埋め込む必要がないので、 1の方法と比べて、Precertificateがいらないメリットがあるのかなと思います。

認証局から証明書(SCTが含まれない)を発行してもらい、CTログサーバーには 自分で登録し、受領したSCTを自身のウェブサーバーに設定して公開すればよいからです。

CTログサーバーに登録する方法としては、例えばSectigo(COMODO)が下記のように公開しています。

support.sectigo.com

上記の手順に従うと、手動でMammoth(Sectigoが運用するCTログサーバー)に登録することができそうです。

3.OCSP Stapling

TLS通信を行う際の、OCSP StaplingにてSCTを提供する方法がある様なのですが 実例を知らない為どのように実際に見えるのかわかりません。


  1. Certificate Transparency

  2. Signed Certificate Timestamp