証明書透明性検索

ドメインに対して発行された公開信頼証明書はすべて公開ログに書き込まれます——この検索はそれを読み戻してお見せします。ドメインを入力すると、crt.sh がそのドメインとサブドメインについて記録した内容が分かります:各証明書を誰が発行したか、どの名前をカバーするか、いつ有効だったか。忘れた証明書——そして一度も依頼したことのない証明書——を見つける監査です。

これを継続的に監視したいですか?myeventwatch で無料で監視——有効期限とダウンタイムのアラート、カード不要。

この検索が測るもの

証明書透明性は、証明書の発行を私的な取引から公開記録へと変えます。認証局が公開名の証明書を発行すると、その証明書を複数の CT ログに提出し、ブラウザはログに記録されていない証明書を拒否します。その副作用は防御者への贈り物です:すべてのドメインの完全な発行履歴が公開の場に置かれ、読まれるのを待っています。このページは sysosx のサーバー上の GET /api/check/cert-search を呼び出します。これは crt.sh——それらのログの公開インデックス——に対してドメインとその配下すべてについて単一のリクエストを行い、回答を正規化し、新しい順に並べ替え、1 時間キャッシュします。最大 200 件が表示されます;それより多いドメインには切り捨て通知と本当の合計が表示され、黙って切り捨てられることは決してありません。

結果は評決ではなく目録として読んでください。各エントリに対する生産的な問いは「私たちのどのシステムがこれを依頼したのか?」です。現代の資産は、所有者が思っているより多くの場所から証明書を発行します:ウェブホスト、CDN、メールプロバイダー、マーケティングチームのサイトビルダー、誰かが昨年立てたクラスター上の Kubernetes ingress。そのほとんどは正当なもので、いくつかはあなたにとってもニュースでしょう——それ自体が有用です。なぜなら、見たことのない証明書目録は、誰の更新計画や失効計画の一部にもなり得ないからです。最も重要なエントリは、どのシステムにも対応付けられないものです:未知の発行者、未知のサブドメイン、近くにデプロイのない発行日。それらはまれであり、まさに CT が表面化させるために設計されたものです。

3 つのツール、3 つの問い

この検索は「これまでに何が発行されたか?」に答えます。SSL チェッカーはライブハンドシェイクで「サーバーは今まさに何を提示しているか?」に答えます——訪問者が実際に何を受け取るかを知る唯一の方法です。SSL グレーダーは「そのサーバーの TLS はどれほど適切に設定されているか?」——プロトコルバージョン、前方秘匿性、HSTS——に文字グレードで答えます。そしてブラウザ側のSSL 証明書パーサーは、あなたがすでに保持している証明書ファイルを読みます。ログには存在するが一度もデプロイされなかった更新はここに現れてチェッカーには現れず、古い証明書を提示しているサーバーはチェッカーに現れてここには現れません。両者が食い違うとき、それぞれが自分の真実を語っています——あなたの問いに合う方を使ってください。

よくある質問

証明書透明性とは何ですか、1 段落で?

2018 年以降、ブラウザは公開信頼証明書を証明書透明性(CT)ログに公開することを要求しています——CA が発行するすべての証明書の、公開された、追記のみのリストです。ログが存在するのは、不正な発行が隠れられないようにするためです:あなたが一度も依頼したことのない、あなたのドメインの証明書が現れたら、あなたを含め、見る人すべてに見えます。このツールは、それらのログの最もよく知られた公開インデックスである crt.sh を通じて、あなたの代わりに見ます。

これは SSL チェッカーや SSL グレーダーとどう違うのですか?

3 つの異なる問いです。SSL チェッカーは、サーバーが今まさに、ライブハンドシェイクで何の証明書を提示しているかを尋ねます。SSL グレーダーは、そのサーバーの TLS がどう設定されているか——プロトコル、暗号、HSTS——を監査し、グレードを付けます。この検索は、公開ログによれば、ドメインに対してこれまでに何が発行されたかを尋ねます。ライブツールでは見つけられない証明書を表面化できます:忘れられたステージング証明書、組織がもう使っていない CA からの証明書、そして——CT が作られたケースである——チームの誰もまったく依頼しなかった証明書です。

なぜこれはブラウザではなくサーバーから実行されるのですか?

このサイトのブラウザ側証明書パーサーも crt.sh の検索を提供しており、それが機能するかどうかは crt.sh のクロスオリジンヘッダーに依存すると明言しています——ブラウザは、サードパーティのサービスが読むことを許可したものしか読めません。サーバー側のリクエストには満たすべきクロスオリジンポリシーがないため、ここの検索は毎回同じように機能します。トレードオフはいつものものです:あなたが入力したドメインは sysosx のサーバーから crt.sh に送られ(そして 1 時間、回答がキャッシュされ)ますが、このページはそれを隠すのではなく明示しています。

見覚えのない証明書が見えます。パニックになるべきですか?

まだです。見慣れないエントリのほとんどは平凡なものです:あなたの代わりに発行するホスティングプロバイダーや CDN(Cloudflare、ロードバランサー、ウェブサイトビルダー)、組織が切り替えた認証局、誰かが設定して忘れた自動更新システム。リストを発行者と日付で精査し、各エントリをあなたが運用するシステムや支払っているプロバイダーに対応付けてください。パニック——まあ、緊急調査——は残りのためのものです:誰も使っていない CA からの、誰も運用していない名前をカバーする、誰も何もデプロイしなかった時期に発行された証明書。それは、記録する値のある、あなた自身の資産の忘れられた片隅か、CT が捕まえるために存在する不正発行のどちらかであり、説明がつくまで追うべきです。

なぜ結果は 1 時間キャッシュされるのですか、またなぜ検索は失敗することがあるのですか?

crt.sh は無料の公共サービスで、負荷がかかると悪名高いほど遅く、証明書の履歴は分単位ではなく日単位で変わるからです——1 時間のキャッシュは鮮度のコストがゼロで、このツールが crt.sh の負担を増やさないようにします:ドメインあたり 1 時間に最大 1 回の上流クエリです。crt.sh がダウンしているか遅すぎるとき、検索は空のリストを返すのではなく明示的なエラーでそう伝えます。「証明書が見つからなかった」と「ログ検索が失敗した」は反対の結論であり、真実なのは一方だけだからです。