Установка этого в моем тесте:
System.setProperty("javax.net.debug", "ssl, рукопожатие");
Я вижу следующую информацию:
Код: Выделить всё
javax.net.ssl|DEBUG|10|main|2025-01-14 15:23:46.436 CET|CertificateMessage.java:1135|Consuming server Certificate handshake message (
"Certificate": {
"certificate_request_context": "",
"certificate_list": [
{
"certificate" : {
"version" : "v3",
"serial number" : "72990048E0A187EA",
"signature algorithm": "SHA256withRSA",
"issuer" : "CN=localhost",
"not before" : "2024-11-19 07:03:42.000 CET",
"not after" : "2024-11-20 07:03:42.000 CET",
"subject" : "CN=localhost",
"subject public key" : "RSA",
"extensions" : [
{
ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: DD CA 06 70 86 77 08 75 75 DE A5 E4 CA C0 FB BB ...p.w.uu.......
0010: DB A9 49 33 ..I3
2
]
}
]}
"extensions": {
}
},
Код: Выделить всё
public static void start(final int portNumber, final File tlsKeyStoreFile, boolean twoWay) throws Exception {
char[] storepass = "secret".toCharArray();
char[] keypass = "secret".toCharArray();
FileInputStream fis = new FileInputStream(tlsKeyStoreFile.getAbsoluteFile());
KeyStore keystore = KeyStore.getInstance("JKS");
keystore.load(fis, storepass);
// display certificate
Certificate cert = keystore.getCertificate("eric");
System.out.println(cert);
// setup the key manager factory
KeyManagerFactory kmf = KeyManagerFactory.getInstance("SunX509");
kmf.init(keystore, keypass);
// setup the trust manager factory
TrustManagerFactory tmf = TrustManagerFactory.getInstance("SunX509");
tmf = TrustManagerFactory.getInstance("PKIX");
tmf.init(keystore);
//Create ssl context
final SSLContext sslContext = SSLContext.getInstance("TLS");
sslContext.init(kmf.getKeyManagers(), tmf.getTrustManagers(), null);
//SSL socket
SSLServerSocket sslServerSocket = createSSLServerSocket(sslContext, twoWay);
sslServerSocket.setReuseAddress(true);
sslServerSocket.bind(new InetSocketAddress(portNumber));
thread = new Thread(new Runnable() {
@Override
public void run() {
try {
SSLSocket clientSocket = (SSLSocket) sslServerSocket.accept();
PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);
BufferedReader in = new BufferedReader(
new InputStreamReader(clientSocket.getInputStream()));
String inputLine;
while ((inputLine = in.readLine()) != null) {
out.println(inputLine);
if (inputLine.equals("BYE"))
sslServerSocket.close();
break;
}
} catch (IOException e) {
e.printStackTrace();
}
}
});
thread.start();
}
Код: Выделить всё
@BeforeClass
public void setupServer() throws Exception {
System.setProperty("javax.net.debug", "ssl,handshake");
port = PortUtil.findAvailablePort();
ServerTlsSocket.start(port, tlsKeyStoreFile);
}
Код: Выделить всё
builder = CliFactory.newTlsSocketBuilder("localhost", port, null, "",
tlsTrustStoreFile, tlsTrustStorePassword);
Есть какие-нибудь подсказки о том, чего мне здесь не хватает или как я могу отладить, чтобы найти проблему?
br
//Майк
Подробнее здесь: https://stackoverflow.com/questions/793 ... -client-bu