Java:SSLクライアント側認証を追加する方法

ショックを受けた:

SSLを使用してクライアントとサーバーを接続する次のコードがあり、クライアント側の認証を追加します。

(サーバーのキーストア(JCEKSタイプ)とクライアントのキーストア(JKSタイプ)があります。サーバーはトラストストア(cacerts)を使用します。このトラストストアをクライアント認証にも使用したいため、両方の証明書をインポートしました)

クライアントコード:

System.setProperty("javax.net.ssl.trustStore", cerServer);
System.setProperty("javax.net.ssl.trustStoreType","JCEKS");
System.setProperty("javax.net.ssl.trustStorePassword", pwdCacerts);

SSLSocketFactory sslsocketfactory = (SSLSocketFactory)  SSLSocketFactory.getDefault();
SSLSocket sslsocket = (SSLSocket) sslsocketfactory.createSocket("localhost", port);

サーバーコード:

KeyStore ks = LoadKeyStore(new File(serverKeyStore), pwdKeyStore, "JCEKS");
KeyManagerFactory kmf; 
kmf = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
kmf.init(ks, pwdKeyStore.toCharArray());

SSLContext sc = SSLContext.getInstance("SSL");
sc.init(kmf.getKeyManagers(),null, null);   

SSLServerSocketFactory ssf = sc.getServerSocketFactory(); 
sslserversocket = (SSLServerSocket) ssf.createServerSocket(port);

助けてくれてありがとう。

編集:私はこのコードをサーバー側に追加します:

System.setProperty("javax.net.ssl.trustStore", cacerts);
System.setProperty("javax.net.ssl.trustStoreType","JKS");
System.setProperty("javax.net.ssl.trustStorePassword", pwdCacerts);

しかし、cacertsでクライアント証明書を削除しても、接続によってエラーが発生することはなく、そのため、その方法は間違っていると思います

ブルーノ:

システムでクライアント証明書認証を使用する場合は、次のものが必要です。

  • クライアント証明書を要求(または要求)するサーバー。これはsetWantClientAuth(true)、サーバーソケット(またはsetNeedClientAuth)の設定によって行われますサーバーが受け入れるCAをアドバタイズする必要もあります。これは通常、クライアント証明書チェーンが発行されたCAを含むサーバー上のトラストストアを使用して行われます(これは、設定によって行ったようです)javax.net.ssl.trustStore*サーバー上)。

  • クライアント証明書(中間CAがある場合はチェーン)とその秘密鍵を含むキーストアで構成されるクライアント。これは、javax.net.ssl.keyStore*(他の接続に影響を与える可能性がある)を設定するKeyManagerFactory、サーバー側で行ったのと同じ方法でを使用して行うことができます。

を使用してsetWantClientAuth(true)も、サーバーはクライアント証明書のない接続を受け入れるため、エラーが発生しない場合があります(サーバーはSSLSessionのピア証明書をチェックして、証明書があったかどうかを確認します)。setNeedClientAuth(true)クライアントが証明書を提示しないと、接続が切断されます。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

トークンでクライアント側とサーバー側を認証する正しい方法は?

分類Dev

Java11クライアント間で認証する方法-MongoDB4.4(SSL)?

分類Dev

Jetty:Jettyクライアント側でSSLを使用する方法

分類Dev

クライアント側でgooglerecaptchaを検証する方法は?

分類Dev

クライアント側でAPK署名証明書を検証する方法は?

分類Dev

クライアント側のpkcs12証明書をPostman Chrome、W7に追加する方法

分類Dev

特定のホストにTLS / SSLクライアント認証を使用する

分類Dev

JavaEEでJavaFXクライアントを認証する方法

分類Dev

QWC互換のWebサービスでクライアント側認証(双方向SSL)を実装するにはどうすればよいですか?

分類Dev

クライアント側の認証なしでサーバーからFirebaseユーザーを認証する方法は?

分類Dev

Firebaseで認証されているかどうかをクライアント側で確認する

分類Dev

OroCRMクライアント側の検証を無効にする方法は?

分類Dev

クライアント側でSSLを実装するには?

分類Dev

クライアント側の SSL 証明書を使用して GitHub Pages へのアクセスを制限する方法は?

分類Dev

Java-クライアント証明書認証を使用すると、SSLストリームがキャンセルされます

分類Dev

クライアント側だけでなくサーバー側の検証を強制する方法は?

分類Dev

.NetCoreでクライアントSSL証明書を使用する方法

分類Dev

Websphere MQクライアントのクライアント証明書でSSLを有効にする方法は?

分類Dev

自己署名証明書を使用するJava SSL / httpsクライアント

分類Dev

JAX-WSクライアントでクライアント証明書を指定する方法とクライアント証明書認証

分類Dev

クライアント認証用のトラストストアを追加する

分類Dev

さまざまなSSLクライアント認証証明書を使用してApache HttpClientのプールを作成する方法

分類Dev

認証にクライアント証明書を必要とするURLをリクエストする方法

分類Dev

Spring SecurityとMarkLogicのJavaクライアントAPIを介してユーザーを認証する方法は?

分類Dev

アレイを更新する方法、クライアント側

分類Dev

クライアント証明書認証のためにルートCAをAzureAppServiceに追加する

分類Dev

クライアント側のボタンクリックを検証する方法

分類Dev

クライアントSSL証明書を無効にする

分類Dev

相互認証のためにSSL接続中にクライアント証明書をロードする方法は?

Related 関連記事

  1. 1

    トークンでクライアント側とサーバー側を認証する正しい方法は?

  2. 2

    Java11クライアント間で認証する方法-MongoDB4.4(SSL)?

  3. 3

    Jetty:Jettyクライアント側でSSLを使用する方法

  4. 4

    クライアント側でgooglerecaptchaを検証する方法は?

  5. 5

    クライアント側でAPK署名証明書を検証する方法は?

  6. 6

    クライアント側のpkcs12証明書をPostman Chrome、W7に追加する方法

  7. 7

    特定のホストにTLS / SSLクライアント認証を使用する

  8. 8

    JavaEEでJavaFXクライアントを認証する方法

  9. 9

    QWC互換のWebサービスでクライアント側認証(双方向SSL)を実装するにはどうすればよいですか?

  10. 10

    クライアント側の認証なしでサーバーからFirebaseユーザーを認証する方法は?

  11. 11

    Firebaseで認証されているかどうかをクライアント側で確認する

  12. 12

    OroCRMクライアント側の検証を無効にする方法は?

  13. 13

    クライアント側でSSLを実装するには?

  14. 14

    クライアント側の SSL 証明書を使用して GitHub Pages へのアクセスを制限する方法は?

  15. 15

    Java-クライアント証明書認証を使用すると、SSLストリームがキャンセルされます

  16. 16

    クライアント側だけでなくサーバー側の検証を強制する方法は?

  17. 17

    .NetCoreでクライアントSSL証明書を使用する方法

  18. 18

    Websphere MQクライアントのクライアント証明書でSSLを有効にする方法は?

  19. 19

    自己署名証明書を使用するJava SSL / httpsクライアント

  20. 20

    JAX-WSクライアントでクライアント証明書を指定する方法とクライアント証明書認証

  21. 21

    クライアント認証用のトラストストアを追加する

  22. 22

    さまざまなSSLクライアント認証証明書を使用してApache HttpClientのプールを作成する方法

  23. 23

    認証にクライアント証明書を必要とするURLをリクエストする方法

  24. 24

    Spring SecurityとMarkLogicのJavaクライアントAPIを介してユーザーを認証する方法は?

  25. 25

    アレイを更新する方法、クライアント側

  26. 26

    クライアント証明書認証のためにルートCAをAzureAppServiceに追加する

  27. 27

    クライアント側のボタンクリックを検証する方法

  28. 28

    クライアントSSL証明書を無効にする

  29. 29

    相互認証のためにSSL接続中にクライアント証明書をロードする方法は?

ホットタグ

アーカイブ