JAVA SSLSocket keyStore и trustStore, ошибка неверного сертификата

В настоящее время я пишу приложение JAVA, которое получает запросы AJAX от сервера PHP.
Я использую сокеты для этого, и он отлично работает с HTTP-запросами.
Но теперь я хотел бы сделать то же самое с HTTP-запросами.

Поэтому я создал хранилище ключей с использованием сертификата и ключа RSA на сайте:

openssl pkcs12 -export -in <path_to_website_cert> -inkey <path_to_website_rsa_key> -out keystore.p12 -name website -CAfile <path_to_ca_cert> -caname root

Затем я преобразовал это в JKS:

keytool -importkeystore -deststorepass changeit -destkeypass changeit -destkeystore keystore.jks -srckeystore keystore.p12 -srcstoretype PKCS12 -srcstorepass password -alias website

Я также добавил сертификат в trustStore:

keytool -import -file <path_to_website_cert> -alias website -keystore <path_to_my_jdk>\jre\lib\security\cacerts

Вот код, который я использую для запуска моего сервера в моем приложении JAVA:

public void lancer_serveur_https() {
System.setProperty("javax.net.ssl.keyStoreType", "JKS");
System.setProperty("javax.net.ssl.keyStore", "C:/Users/f.guibert/Documents/Cert/incafu.jks");
System.setProperty("javax.net.ssl.keyStorePassword", "changeit");
System.setProperty("javax.net.ssl.trustStore", "C:/Users/f.guibert/Documents/Cert/trustStore");
System.setProperty("javax.net.ssl.trustStorePassword", "changeit");

try {
SSLServerSocketFactory ssf = (SSLServerSocketFactory) SSLServerSocketFactory.getDefault();
SSLServerSocket ss = (SSLServerSocket) ssf.createServerSocket(this.port);

while(true) {
try {
SSLSocket s = (SSLSocket) ss.accept();
s.setEnabledCipherSuites(s.getSupportedCipherSuites());

OutputStream out = s.getOutputStream();
BufferedReader in = new BufferedReader(new InputStreamReader(s.getInputStream()));

String line = null;
while (((line = in.readLine()) != null) && (!("".equals(line)))) {
System.out.println(line);
}

out.close();
in.close();
s.close();
} catch(Exception e) {
e.printStackTrace();
}
}
} catch (Exception ex) {
ex.printStackTrace();
}
}

После всех этих шагов, когда мой запрос AJAX отправлен, я получил эту ошибку с JAVA:

java.net.SocketException: Software caused connection abort: recv failed

И ошибка в моей веб-консоли (вкладка «Сеть») о том, что сертификат действителен только для домена:

*.mydomain.com, with error code SSL_ERROR_BAD_CERT_DOMAIN.

Я действительно застрял с этим, потому что я не знаю, что я делаю неправильно. Я думаю, что есть кое-что, что я неправильно понял с keyStore и trustStore, но не могу найти что.

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]