サーバーとクライアントオールインワンチャットアプリケーションを作成していますが、SSL接続に切り替えようとしています。プログラムが動作するクライアントがスロー接続を行うためにしようとしたとき、私は今、keystore.jks
と証明書ファイル(.cer
)を作成したが、:Java SSL接続エラー - 無効なキーストア形式
System.setProperty("javax.net.ssl.keyStore", "certificates/keystore.jks");
System.setProperty("javax.net.ssl.trustStore", "certificates/certificate.cer");
System.setProperty("javax.net.ssl.keyStorePassword", "password");
if (this.role == ConnectionRole.SERVER) {
connectingAlert.getJFrame().setVisible(true);
setupServer();
do {
Thread.sleep(10);
} while (socket == null);
}
if (this.role == ConnectionRole.CLIENT) {
connectingAlert.getJFrame().setVisible(true);
setupClient(targetIP);
}
private void setupServer() throws IOException {
SSLServerSocketFactory sslSrvFact = (SSLServerSocketFactory) SSLServerSocketFactory.getDefault();
serverSocket = (SSLServerSocket) sslSrvFact.createServerSocket(8080, 1);
socket = (SSLSocket) serverSocket.accept();
setupStreams();
}
private void setupClient(String IPAddress) throws IOException {
SSLSocketFactory sslFact = (SSLSocketFactory) SSLSocketFactory.getDefault();
socket = (SSLSocket) sslFact.createSocket("localhost", 8080);
setupStreams();
}
private void setupStreams() throws IOException {
dataOut = new ObjectOutputStream(socket.getOutputStream());
dataIn = new ObjectInputStream(socket.getInputStream());
chatInterface = ChatInterface.getInstance();
}
私は全く新しいです。チュートリアルに従うだけです。 javax.net.ssl.trustStoreを追加すると、エラーが発生しなくなりました: 'javax.net.ssl.SSLHandshakeException:sun.security.validator.ValidatorException:PKIX path building failed:sun.security.provider.certpath.SunCertPathBuilderException:できません要求されたターゲットへの有効な証明書パスを見つける ' – user3278983
投稿で使用されたコードのバージョン(無効なフォーマットエラー)から' System.setProperty( "javax.net.ssl.trustStore"、 "certificates/certificate .cer ");'私は何のエラーが発生したかを示します。私はラインを追加した後。ポストにあるコードと同じコードで、リンクされた「重複している可能性のある」クエリーに行き、トップのコメントにあったコードの正確な行を使用しました。私は私が得たkeytoolエラーに関するコメントを投稿しました。後で今日私はキーストアと証明書を作成しようと再試行し、私がこれを行うために使用したコマンドについてコメントします。 – user3278983
私はしませんでした。それは私の問題かもしれないように聞こえる。だから私は、サーバー用とクライアント用に作成する必要があります。だから私は、サーバーとクライアントの両方のキーストアにある自己署名証明書を使用する必要があると思いますか? – user3278983