証明書と鍵のマッチャー
証明書、秘密鍵、CSR の任意の組み合わせ——PEM でも DER でも——をドロップすると、このワークベンチはどの鍵がどの証明書と合うかを証明し、証明書をチェーンに並べ、フォーマットを変換し、CSR を生成します。秘密鍵がブラウザの外に出ることは決してありません:すべてはこのタブ内でローカルに解析され、鍵はメモリ内にのみ保持され、アップロード、記録、保存されることは決してなく、このページはネットワークリクエストを行いません。1 枚の証明書を深くデコードするには SSL 証明書パーサーを、手早く自己署名証明書が欲しい場合は 自己署名証明書ジェネレーターを使ってください。
証明書、鍵、CSR を追加
照合の判定
証明書と秘密鍵を追加すると、判定がここに表示されます:どの鍵がどの証明書と合うか——同一の公開鍵によって証明され、ファイル名から推測されることは決してありません。
チェーンビルダー
証明書が 2 枚以上読み込まれると、ビルダーは発行者名とサブジェクト名の照合によって、リーフを先頭に、次に中間証明書、最後にルートという順序に並べます——そして、ブラウザの暗号機能が許す場合は、名前に頼るのではなく、各リンクの実際の署名を検証します。
CSR を生成
ここ、あなたのブラウザで生成される鍵のための証明書署名リクエストです:サブジェクトを入力し、鍵の種類を選び、CSR をダウンロードして CA に送ってください——それに加えて秘密鍵もダウンロードしますが、秘密鍵はあなた自身が安全に保管しなければなりません。鍵はここにのみ表示されます;このページは鍵を保持しません。
証明書署名リクエスト(PEM)
秘密鍵(PEM)——この鍵を安全に保管してください、ここにのみ表示されます
照合は実際にはどのように機能するのか
証明書と秘密鍵は 1 つのファイルの 2 つの半分ではありません;それらは 1 つの数学的対象を共有する 2 つのファイルです。鍵ペアが生成されると、公開の半分は証明書の中に(そしてその鍵で作られた CSR の中にも)置かれ、秘密の半分は鍵ファイルに残ります。2 つのアイテムが正確に一致するのは、それらが同じ公開鍵を保持しているときです——RSA では同じ法と指数、EC では同じ曲線上の同じ点です。このページはその公開鍵を標準のラッパー(SubjectPublicKeyInfo)でエンコードし、そのエンコードに SHA-256 を適用して、読み込まれたすべてのアイテムをそのハッシュでグループ化します。したがって各カードに表示されるハッシュは要約ではなく証拠です:同一のハッシュが偶然生じることはあり得ず、不一致も同じく確実です。だからこそ判定は率直に述べることができます——この鍵はこの証明書と合う、または読み込まれた鍵はどれも合わない。このチェックが捉える典型的な障害は 鍵が証明書と合わないときに書かれています:午前 2 時の再読み込みで、ディスク上の更新された証明書が、サーバーが読み込んでいる鍵とは別の鍵に属していた、というものです。
ファイル名は何も証明しません。server.crt、server.key、final-v2.pem、そして昨年の更新試行で残った CSR でいっぱいのディレクトリは、引き継いだインフラの通常の状態であり、名前は文書ではなく考古学です。一致するファイル拡張子や一致する日付も何も証明しません。では従来の openssl のチェック——証明書の法のハッシュと鍵の法のハッシュを比較する——はどうでしょうか?それはまさにこのページのチェックであり、RSA に限られ、一度に 1 組だけであり、EC 鍵には法がないため EC 鍵を完全に見落とします。公開鍵のフィンガープリントはすべてのアルゴリズムを均一にカバーします。それがここでグループ化のキーである理由です。
チェーン、順序、そして「検証済み」の意味
サーバーは最初にリーフ証明書を提示し、次に各中間証明書を順に提示することになっています。そうすることでクライアントは発行者からサブジェクトへのリンクをたどって、すでに信頼しているルートまで到達できます。同じ証明書を間違った順序で提示する——あるいは中間証明書が欠けている——と、欠けたリンクを自分で取得できないクライアントで古典的な「unable to get local issuer certificate」系のエラーが発生します。上のビルダーは名前だけから順序を再構築します。これは常に行えます。そしてさらに一歩進みます:RSA と ECDSA の署名については、発行者の公開鍵をインポートし、証明書の署名対象バイトに対する署名をチェックします。署名検証済みとラベル付けされたリンクは暗号学的に証明されています。名前の一致のみとラベル付けされたリンクはそうではありません——名前はつながりますが、署名はこのプラットフォームがチェックしないアルゴリズム(通常は RSA-PSS)を使っており、ページは名前の一致を証明に見せかけるのではなく、そのことを明言します。署名チェックが失敗した場合、名前は偶然か偽造であり、ビルダーは静かにバンドルを作るのではなく、失敗を赤で表示します。
フォーマット:PEM、DER、そして .pfx の問題
PEM はラベル付きヘッダーで DER バイトを Base64 で包んだもので、DER は生のエンコーディングです。その間の変換は何も失わず、何も証明しません——別の封筒に入った同じオブジェクトです——だからこそ各カードは両方のダウンロードを提供します。Windows や一部の Java ツールは DER や PKCS#12 を好み、ほとんどの Unix ツールは PEM を求めます。PKCS#12(.pfx/.p12)は別の話です:それ自体の完全性 MAC を持つ暗号化されたコンテナであり、すべての利用者が受け入れ、その名に値する保護を備えたものを作ることは、Web ページで手作りすべきことではありません。このツールは意図的にそれを提供しません。照合されたペアを自分でパッケージするには、ファイルがある場所で openssl を実行してください:openssl pkcs12 -export -inkey key.pem -in cert.pem -certfile chain.pem -out bundle.pfx——このページが、どの鍵、証明書、チェーンが実際に組み合わさるかを伝えた後に。
解析とチェーン化はこのサイトのために手書きされた DER コードです(BSD スタイル、サードパーティのパーサーなし);ハッシュ、署名検証、鍵生成はブラウザの WebCrypto を使います。このツールのどの部分もネットワークリクエストを行いません。
よくある質問
マッチャーは鍵と証明書が組み合わさることをどのように証明しますか?
ファイルではなく公開鍵を比較することによってです。すべての証明書、CSR、秘密鍵は同じエンコードされた公開鍵(SubjectPublicKeyInfo)を生みます;このページはそれに SHA-256 を適用し、ハッシュが一致するアイテムをグループ化します。同一の公開鍵は、その秘密鍵が数学的に、その証明書が発行された対象の鍵であることを意味します——openssl が法の比較で行うのと同じチェックを、すべてのファイルに対して一度に、そして RSA だけでなく EC 鍵に対しても行うものです。
本物の秘密鍵を Web ページに読み込んでも安全ですか?
このページでは、その作り方ゆえに安全です:すべてはブラウザ内でローカルに解析され、鍵はこのタブのメモリ内にのみ保持され、何もアップロード、記録、ストレージへの書き込みはされず、ページはネットワークリクエストを行いません。保つべき習慣は、鍵を貼り付ける前にどのツールでもその主張を確認すること——そして秘密鍵をチャット、チケット、またはリモートで処理するサーバー側の「チェッカー」に決して貼り付けないことです。
チェーンビルダーの「名前の一致のみ」とはどういう意味ですか?
チェーンビルダーは、各証明書の発行者名と次の証明書のサブジェクト名を照合して証明書を並べ、次に発行者の公開鍵で実際の署名を検証しようとします。署名アルゴリズムがブラウザの WebCrypto でチェックできるもの(実際には RSA と ECDSA)の場合、リンクは「署名検証済み」と、あるいはチェックが失敗すれば「署名失敗」とラベル付けされます。それ以外のもの——RSA-PSS が一般的なケースです——は正直に「名前の一致のみ」とラベル付けされます:名前は揃っていますが、このページはそのリンクを暗号学的に証明していません。
PKCS#12(.pfx)のエクスポートがないのはなぜですか?
PKCS#12 ファイルは、鍵と証明書を MAC 完全性を備えたパスワードベースの暗号化で包みます——注意深く、十分にテストされたエンコーディングを必要とするフォーマットです。他のソフトウェアに拒否される可能性のあるファイル(あるいは、さらに悪いことに弱く保護された鍵)を生みかねない手作り版を出す代わりに、このページは PEM と DER の間で変換し、.pfx のパッケージ化は openssl に委ねます:コマンドがページに表示されているので、鍵がすでにある場所で実行できます。
このページは暗号化された秘密鍵を読めますか?
1 つを識別してそう述べることはできますが、使うことはできません:暗号化された(パスワードで保護された)鍵は、復号されるまでその公開鍵を明かさず、照合は公開鍵で行われます。openssl でローカルにコピーを復号し(pkcs8 -topk8 -nocrypt、または rsa/ec)、復号したコピーを読み込んでください——信頼するマシン上で行い、コピーは後で削除してください。