4

HttpURLConnectionJavaで証明書を使用せずにsslを使用することは可能ですか?

乱数または対称鍵を使用したい。

4

6 に答える 6

2

SSL / TLSは厳密には証明書を必要としませんがRFC 2818(特にセクション3.1)は明らかにX.509証明書を参照しているため、HTTPSは証明書を必要とします。

非常によく似た質問に対する詳細については、ServerFaultのこの回答を参照してください。

証明書なしで行うことはRFC2818の範囲外になりますが、それでも機能する可能性があります(そして意味があります)。ただし、他の実装でサポートされている場合は異なる場合があります。証明書を使用しないことを選択した場合でも、通信のセキュリティを確保するためにサーバーのIDを確認する方法が必要です。

編集:

JSSEのOracleプロバイダーは、 PSK暗号化システム(またはOpenPGP証明書)をサポートしていません。取得する共有キーに最も近いのは、Kerberos暗号スイートです。

于 2012-06-07T11:41:52.740 に答える
1

いいえ、できません。HTTPS経由で接続するには証明書が必要です。目的に応じて自己署名証明書を使用できます。

于 2012-06-07T11:15:37.563 に答える
1

はい。SSL/TLSでは、対称鍵(PSK暗号スイート)やユーザー名/パスワードの組み合わせ(SRP暗号スイート)など、いくつかの異なる認証方法を使用できます。Javaの組み込みメカニズムについては言えませんが、SecureBlackbox製品(Javaエディションを含む)では、SSL/TLSチャネルのクライアント側とサーバー側の両方で前述のメカニズムを使用できます。これは、提供されているHTTPSクライアントおよびサーバーコンポーネントにも当てはまります。

于 2012-06-07T11:34:24.277 に答える
1

はい、事前共有キーを使用してTLS接続を確立できます。証明書は必要ありません。

Cloverは、BouncyCastleを搭載したTLSPSKJSSEソケットファクトリをリリースしました。

https://github.com/clover?q=pskfactoriesを参照してください

あるいは、WolfSSLにはPSKをサポートするJSSE実装もあるようです。残念ながら、ネイティブコードに依存しているため、純粋なJavaの場合よりも、起動して実行するのに少し手間がかかる可能性があります。商用ライセンスを購入しない限り、GPLv2でもあります。

https://www.wolfssl.com/products/wolfssl-jni-jsse/を参照してください

于 2021-09-05T00:45:43.143 に答える
0

次の質問で受け入れられた回答を見てください。

ApacheHttpClient4.0でSSL証明書エラーを無視する方法

基本的に何もチェックせず、すべてを信頼するTrustManagerを作成する必要があります。開発中にこれがなぜ役立つのかはわかりますが、SSLの目的を否定するものです。TrustManagerは、第三者がデータの傍受や操作などを行うサーバーを装う中間者攻撃を回避するために存在します。したがって、サーバー証明書を検証しないと、だれでも「無効な」証明書を提供する可能性があります。

于 2012-06-07T13:02:35.827 に答える
-2

SSLには証明書が必要ですが、次のように自己署名証明書を作成できます。

keytool -genkey -keyalg RSA -alias selfsigned -keystore keystore.jks -storepass password -validity 360 -keysize 2048

この証明書はkeystore.jksに保存され、360日間有効です。

keystoreFilehttpサーバーの実装に応じて、通常は引数を指定してキーストアをポイントしkeystorePass、パスワードを設定します(Apache TomcatのHTTPコネクタから取得したプロパティ名ですが、他のhttpサーバーでも同様です。

于 2012-06-07T11:21:50.553 に答える