SSL в java с сертификатом Let's Encrypt

Пытаюсь создать приложение на SSL сокетах с сертификатом Let's Encrypt.

Для начала с помощью OpenSSL преобразовал в PKCS12 такой командой:

pkcs12 -export -in cert/cert.pem -inkey cert/privkey.pem -out cert/keystore.p12 -name domain.ru -CAfile cert/fullchain.pem -caname root

Далее загрузил сертификат таким образом:

KeyStore ks = KeyStore.getInstance("PKCS12");
ks.load(new FileInputStream("keystore.p12"), "password".toCharArray());
        
TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
trustManagerFactory.init(ks);
        
KeyManagerFactory keyManagerFactory = KeyManagerFactory.getInstance("NewSunX509");
keyManagerFactory.init(ks, "password".toCharArray());
        
SSLContext sslcontext = SSLContext.getInstance("TLSv1.2");
sslcontext.init(keyManagerFactory.getKeyManagers(), null, null);

И создаю серверный сокет:

new Thread(() -> {
    SSLServerSocketFactory factory = sslcontext.getServerSocketFactory();
    try {
        SSLServerSocket server = (SSLServerSocket) factory.createServerSocket(8080);
        server.setNeedClientAuth(false);
        server.setWantClientAuth(false);
        server.setEnabledProtocols(new String[] {"TLSv1.2"});
        server.setUseClientMode(false);
        SSLSocket socket = (SSLSocket) server.accept();
        socket.startHandshake();
    } catch (IOException ex) {
        ex.printStackTrace();
    }
}).start();

Однако получаю такие ошибки: На сервере:

javax.net.ssl|ALL|0B|Thread-2|2021-08-01 16:44:00.083 MSK|X509Authentication.java:264|No X.509 cert selected for EC
javax.net.ssl|ALL|0B|Thread-2|2021-08-01 16:44:00.084 MSK|X509Authentication.java:264|No X.509 cert selected for EC
javax.net.ssl|FINE|0B|Thread-2|2021-08-01 16:44:00.996 MSK|Alert.java:238|Received alert message (
"Alert": {
  "level"      : "fatal",
  "description": "certificate_unknown"
}

На клиенте:

javax.net.ssl|FINE|01|main|2021-08-01 16:44:00.246 MSK|SSLCipher.java:438|jdk.tls.keyLimits:  entry = AES/GCM/NoPadding KeyUpdate 2^37. AES/GCM/NOPADDING:KEYUPDATE = 137438953472
javax.net.ssl|SEVERE|01|main|2021-08-01 16:44:01.976 MSK|TransportContext.java:316|Fatal (CERTIFICATE_UNKNOWN): PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target (
"throwable" : {
  sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

Я пытался также преобразовывать в PKCS12 в JKS но и это не даёт результата. Почему так?


Ответы (0 шт):