Если у меня есть:
System.setProperty("javax.net.ssl.keyStore", '/etc/certificates/fdms/WS1001237590._.1.ks');
System.setProperty("javax.net.ssl.keyStorePassword", 'DV8u4xRVDq');
System.setProperty("sun.security.ssl.allowUnsafeRenegotiation", "true");
Я могу открыть безопасное соединение без проблем.
Однако я хотел бы иметь сертификаты, хранящиеся непосредственно на войне, поэтому я использую: (поток ввода файла в конечном итоге станет потоком ресурсов, но я делаю это, чтобы заставить его работать.)
System.setProperty("sun.security.ssl.allowUnsafeRenegotiation", "true");
KeyStore ks = KeyStore.getInstance("JKS");
ks.load(new FileInputStream("/etc/certificates/fdms/WS1001237590._.1.ks"), "DV8u4xRVDq".toCharArray());
KeyManagerFactory kmf = KeyManagerFactory.getInstance("SunX509");
kmf.init(ks, "DV8u4xRVDq".toCharArray());
SSLContext sc = SSLContext.getInstance("TLS");
sc.init(kmf.getKeyManagers(), null, null);
Теперь, если я открою одно и то же соединение, я получаю: javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure