証明書に何が書かれているかを正確に確認
この証明書デコーダーはX.509証明書を読み取ります。すべてのHTTPSサイトで使われるSSL/TLS証明書のほか、クライアント認証、コード署名、S/MIMEに使われる証明書にも対応しています。表示する内容は、サブジェクトと発行者、有効期間と期限までの日数、サブジェクト代替名、公開鍵の種類とサイズ、すべての拡張、SHA-1とSHA-256のフィンガープリントです。1つ以上のPEMブロックやBase64をそのまま貼り付けるか、.crt、.cer、.der、.pem、.p7bファイルをドロップしてください。チェーン全体は1枚ずつデコードされ、各署名は次の証明書で検証されます。解析はブラウザ内で行われ、何もアップロードされません。
証明書をデコードする手順
- 1
-----BEGIN CERTIFICATE-----と-----END CERTIFICATE-----の行を含めて証明書を貼り付けるか、ファイルを入力欄にドロップします。 - 2概要を確認します:誰に発行されたか、誰が発行したか、今日有効かどうか。
- 3サブジェクト代替名(SAN)を確認します。ブラウザはCommon Nameではなく、このリストとホスト名を照合します。
- 4フィンガープリントをコピーして別のコピーと比較するか、すべてをJSONとして書き出します。
X.509証明書には何が含まれているか
証明書は公開鍵と名前を結び付けるもので、その結び付きを保証する発行者が署名します。サブジェクトは証明書の対象、発行者は署名した側で、どちらもCN=example.com, O=Example Inc., C=USのような識別名で書かれます。有効期間は証明書を信頼してよい最初と最後の時刻を示し、シリアル番号は発行者が署名したすべての証明書の中でそれを一意に識別します。失効リストに載るのもこの番号です。
それ以外の情報はすべて拡張に入っています。現在使われているすべての証明書が従うバージョン3以降、意味の大部分は拡張が担います。どの名前を対象とするか、鍵を何に使えるか、他の証明書に署名できるか、失効しているかをどこで確認するか、などです。
重要な拡張
- Subject Alternative Name(SAN)
- 証明書が有効なDNS名、IPアドレス、メールアドレス、URI。ブラウザはCommon Nameを無視し、このリストだけを確認します。<code>*.example.com</code>のようなワイルドカードはサブドメイン1階層分をカバーします。
- Key UsageとExtended Key Usage
- 鍵ができること(署名、鍵の暗号化、証明書への署名)と、その用途(TLSサーバー認証やコード署名など)。
- Basic Constraints
- 他の証明書に署名できる認証局(<code>CA:TRUE</code>)かどうか、その下に何階層の中間証明書を置けるか(パス長)。
- Authority Information AccessとCRL Distribution Points
- 発行者の証明書のダウンロード先、OCSPレスポンダーの場所、証明書失効リストの場所。
- Certificate Policies
- CAが適用した検証レベル:ドメイン認証(DV)、企業認証(OV)、EV認証(EV)。
- Signed Certificate Timestamps
- 証明書が公開のCertificate Transparencyログに登録された証拠。公的に信頼されるTLS証明書にはブラウザが要求します。
PEM、DER、CRT、CER
DERは証明書のバイナリ形式(ASN.1 Distinguished Encoding Rules)です。PEMは同じバイト列を-----BEGIN CERTIFICATE-----行で挟んだBase64で、テキストファイルやメールに貼り付けられます。1つのファイルに複数のPEMブロックがあればチェーンになります。拡張子.crtと.cerは中身の形式を示しておらず、どちらの形式もよく使われますが、このデコーダーは両方を受け付けます。.p7bファイルは複数の証明書を含むPKCS#7バンドルで、これも開けます。
コマンドラインで変換するには、openssl x509 -in cert.der -inform der -out cert.pemでDERをPEMに変換でき、openssl x509 -in cert.pem -noout -textでこのページとほぼ同じ情報を表示できます。
チェーン、自己署名証明書、フィンガープリント
サーバーは自分の証明書に続けて、信頼されたルートまでの中間証明書を送るべきです。ここにチェーンを貼り付けると、各証明書の署名が次の証明書の公開鍵で検証されるため、順序が正しいか、欠けている証明書がないかを一目で確認できます。サブジェクトと発行者が同じで、自身の鍵で署名を検証できる証明書は自己署名です。ルートCAか、テスト用に作られた証明書のどちらかです。
フィンガープリントは証明書全体のハッシュです。SHA-256フィンガープリントは証明書のピン留めや比較の標準的な方法で、SHA-1フィンガープリントはWindowsの証明書ビューアなど古いツールでまだ表示されます。SPKI SHA-256ハッシュは公開鍵のみを対象とし、同じ鍵で証明書を更新しても変わりません。新しい証明書用の鍵ペアを作るには鍵ペア生成ツールをご覧ください。
よくある質問
- SSL証明書の有効期限はどう確認しますか?
- 証明書を貼り付けて「有効期間」を見てください。「終了日」が期限で、バッジに残り日数が表示されます。サイトの証明書を取得するには、ブラウザの証明書ビューアで開いてエクスポートするか、openssl s_client -connect example.com:443 -showcerts を実行します。
- PEMとDERの違いは何ですか?
- どちらも同じ証明書です。DERはバイナリで、PEMはそのバイナリをBEGIN行とEND行で挟んだBase64です。このツールはどちらも読み取れます。
- ブラウザに名前が一致しないと表示されるのはなぜですか?
- ホスト名はSubject Alternative Name拡張に含まれている必要があります。ブラウザはもうCommon Nameを見ないため、名前がCNにしかない証明書は拒否されます。
- 証明書チェーン全体をデコードできますか?
- はい。すべてのPEMブロックをまとめて貼り付けるか、.pemまたは.p7bのバンドルをドロップしてください。各証明書が順に表示され、各署名は次の証明書の鍵で検証されます。
- 自己署名とはどういう意味ですか?
- 別のCAではなく、証明書自身の鍵で署名されていることです。ルートCAの証明書は本来自己署名です。Webサイトの場合、自己署名証明書は手動でインストールした環境でしか信頼されません。
- 秘密鍵やCSRもデコードできますか?
- いいえ。読み取れるのは証明書だけです。秘密鍵、公開鍵、証明書署名要求を貼り付けた場合はその旨を表示します。
- ここに証明書を貼り付けても安全ですか?
- 証明書は公開情報で、サーバーはすべての訪問者に送っています。しかもデコードは完全にブラウザ内で行われます。ただし、秘密鍵はどんなWebサイトにも貼り付けないでください。