3

.getPublicKey()公開鍵の型を返すメソッドを認識しています。ただし、この関数は、使用された鍵交換のタイプ (EDH または RSA) を通知しません。私が正しければ、公開鍵のタイプのみを返します。私の質問は: リモート サーバーとの SSL 接続を開始するときに使用されるキー交換と認証プロトコルを取得するにはどうすればよいですか?

4

2 に答える 2

3

SSLSocketまたはからSSLEngine、まず を取得しSSLSessionます。これにより、現在の SSL/TLS セッションに関する情報が得られます。

を使用するgetCipherSuite()と、キー交換タイプ (および暗号化アルゴリズム) を含む暗号スイート名が取得されます。Oracle JRE に実装されている暗号スイートは、SunJSSE プロバイダーのドキュメントにリストされています。TLS 仕様で命名規則を見つけることができます: 後TLS_(またはSSL_古い名前の場合) と前の最初の部分_WITH_は、鍵交換アルゴリズム ( DHE_DSSDHE_RSADH_anonDH_DSS、または)DH_RSAを示します: 比較的単純な正規表現で抽出できるはずです関連情報。NULLRSA

(あなたは言及してgetPublicKey()いますが、それをどこで呼んでいるのかは言っていません。サーバーの証明書にも適用する必要がありますSSLSession. .)

于 2012-08-12T21:03:47.940 に答える
-1

それが証明書.getPublicKey()の方法だと思い ます。PublicKey#getAlgorithm()を使用してアルゴリズムを見つけることができます

文字列 getAlgorithm()

このキーの標準アルゴリズム名を返します。たとえば、「DSA」は、この鍵が DSA 鍵であることを示します。標準のアルゴリズム名については、Java Cryptography Architecture API Specification & Reference の Appendix A を参照してください。

于 2012-08-12T21:03:02.330 に答える