zkat’s diary

技術ブログ

CTログサーバーのAPIをコマンドラインから実行するツールを作った

概要

CTログサーバーのAPIをたたくコマンドラインツールを作りました。
詳細はこちら

github.com

理由

CTログサーバーは、RFC 6962に記載されるAPIを提供しますが、 使いやすいデータ構造で結果を取得することができません。

そこで、crt.sh などのウェブサービスを使うのですが、 こちらだと、オーバースペックであったり、レートリミットにかかったり、コマンドラインとの相性はよくないので、 もう少しプリミティブにCTログサーバーと直接やりとりしたくなり、作りました。

インストール・使い方

pipenvでインストールしてください。
使い方はこんな感じ

$ ./cttool.py monitor https://ct.googleapis.com/testtube
leafcrt 21805860076285651889842223030228467907313529    2020-04-11 09:26:35     2020-07-10 09:26:35     CN=Fake LE Intermediate X1    CN=www.asa2000.com
leafcrt 21863690318697950353276377428808609746848419    2020-04-11 09:26:23     2020-07-10 09:26:23     CN=Fake LE Intermediate X1    CN=test-4.staging.jp.cloudfoxy.com
precert 21802147377670478084527395429361876508605196    2020-04-11 09:26:24     2020-07-10 09:26:24     CN=Fake LE Intermediate X1    CN=test-5.staging.us-w.cloudfoxy.com
leafcrt 21824396527907332124567728734274662635973328    2020-04-11 09:26:43     2020-07-10 09:26:43     CN=Fake LE Intermediate X1    CN=test-5.staging.jp.cloudfoxy.com
leafcrt 21794684193856491727085434479490803112859831    2020-04-11 09:26:24     2020-07-10 09:26:24     CN=Fake LE Intermediate X1    CN=test.stte.rocks
precert 21864516430149817248388230101943631684877583    2020-04-11 09:26:48     2020-07-10 09:26:48     CN=Fake LE Intermediate X1    CN=test-3.staging.us-e.cloudfoxy.com

jsonでも出力できます。

$ ./cttool.py monitor https://ct.googleapis.com/testtube --start 119361290 --end 119361292 --json
[
    {
        "cert_type": "precert",
        "issuer": "CN=Fake LE Intermediate X1",
        "not_valid_after": "2020-07-05 15:29:06",
        "not_valid_before": "2020-04-06 15:29:06",
        "pem": "MIIFEzCCA/ugA...(snip)...",
        "serial": 21863364922683214852029586752934403698349576,
        "subject": "CN=newguiabr.com.br"
    },
    {
        "cert_type": "precert",
        "issuer": "CN=Fake LE Intermediate X1",
        "not_valid_after": "2020-07-05 15:29:03",
        "not_valid_before": "2020-04-06 15:29:03",
        "pem": "MIIEaDCCA1CgA...(snip)...",
        "subject": "CN=test-2.staging.us-e.cloudfoxy.com"
    }
]