私はセキュリティに不慣れで、マシンとサーバー間のSSL暗号化通信をデコードしようとしています。秘密鍵がこれであると理解している限り、私はなんとか秘密鍵と公開鍵を取得できました。
-----BEGIN RSA PRIVATE KEY-----
[private key content]
-----END RSA PRIVATE KEY-----
ただし、Wiresharkは通信をデコードするためにキーを.pem
形式にする必要があります。どうにかしてキーをこの形式に変換できますか?いいえの場合、それらのパッケージを使用するアプリケーションはそれらをどのようにデコードしますか?
「.PEM形式」は、実際には標準として存在しません。これは、「OpenSSLの機能」です。
PEMは Privacy Enhanced Mail の古い失敗した標準に由来します(それが頭字語の意味です)。最近、「PEM」は本当に意味します:次のようなテキスト:
-----BEGIN XXX-----
[some Base64 stuff here]
-----END XXX-----
つまり-----
で始まり、データのタイプの指定(「RSA PRIVATE KEY」など)を含むヘッダー行。同様のトレーラーライン;そして、これらの2行の間に、 Base64 でエンコードされたバイナリオブジェクト。
RSA秘密鍵の場合、主に2種類のPEMエンコード形式に遭遇します。ヘッダーに「BEGIN RSA PRIVATE KEY」が含まれている場合、これは PKCS#1 で記述された形式のRSA秘密鍵です。ヘッダーに「BEGIN PRIVATE KEY」(「RSA」なし)と表示されている場合、 PKCS#8 を使用します。これは、鍵タイプ(「RSA」)と秘密鍵の指定を含むラッパー形式です自体。
あなたの場合、PEMのように見え、-----BEGIN RSA PRIVATE KEY-----
で始まるものが表示された場合、それはisPEMです。それをテキストファイルに入れて、何らかの名前(たとえば「serverkey.pem」)で保存し、そのファイルをサーバーキーとして使用するようにWiresharkを構成します。これは Wiresharkのドキュメント で説明されています。
ただし、いくつかの詳細に注意してください。
ファイルがUTF-16でエンコードされている場合、Wiresharkはおそらくファイルを読み取ることができません(Windowsが "Unicode"と誤って呼ぶもの)。 UTF-16では、各文字が2バイト(または Pahawh Hmong などの一部の文字の場合は4バイト)にエンコードされます。 Windowsのメモ帳を使用している場合は、ファイルを保存するときに、「ANSI」または「UTF-8」エンコーディングを選択します。
クライアントとサーバーが「DHE」または「ECDHE」暗号スイートを使用している場合、サーバーの秘密鍵を知るだけではデータを復号化できません。クライアントとサーバーがそのような暗号スイートを使用することに同意し、それでもデータをインターセプトしたい場合は、active攻撃(a- Man-in-the-Middle )クライアントと通信するときにサーバーを偽装し、サーバーと通信するときにクライアントを偽装します。これははるかに多くの作業であり、Wiresharkはそこではあまり役に立ちません。
拡張子が「.pem」のファイルを作成して、使用してみてください。
これによると ページ で、秘密鍵はあなたが説明したようにPEMファイルに保存されます:
-----BEGIN RSA PRIVATE KEY-----
[code in whatever format it may be]
-----END RSA PRIVATE KEY-----