Я пытаюсь использовать SOAPConnection позвонить по протоколу HTTPS, и я уже указывают на KeyStore и доверенных следующим образом:allowUnsafeRenegotiation, но до сих пор CertificateException
System.setProperty("javax.net.ssl.keyStore", "C:/kei/tasks/MIP/Cert/ccc_acp.keystore");
System.setProperty("javax.net.ssl.keyStorePassword", "password");
System.setProperty("javax.net.ssl.trustStore", "C:/kei/tasks/MIP/Cert/trusteaistore.keystore");
System.setProperty("javax.net.ssl.trustStorePassword", "password");
System.setProperty("javax.net.debug", "all");
, но я все еще получаю
javax.net .ssl.SSLHandshakeException: java.security.cert.Certificate Исключение: нет существующих альтернативных имен
Я google и найдите следующий временный зол социологическое загрязнение
System.setProperty("sun.security.ssl.allowUnsafeRenegotiation", "true");
, но даже я установил allowUnsafeRenegotation истинно, я все еще получаю
javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateException: Нет Subject Alternative Names настоящие
И я пытаюсь использовать SOAPUI 5.1.3, и в предпочтении> ssl, я устанавливаю хранилище ключей и пароль хранилища ключей (но не место для установки доверия), на этот раз я могу подключиться к целевому серверу через https!
так
1) почему SoapUI 5.1.3 не нужно устанавливать (но доверенных сертификатов только хранилище ключей), но все еще может подключиться к HTTPS-сервер?
2) зачем использовать системное свойство для указания того же хранилища ключей, но я не могу подключиться к серверу https с помощью SOAPConnection?
3) почему я установил свойство allowUnsafeRenegotitation в true, но, похоже, он все еще проверяет публичный сертификат. сервера https и вернуть CertificateException?
***************** редактировать на 15/5/2015
Я разместить код здесь
public static void main(String args[]){
System.setProperty("javax.net.ssl.keyStore", "C:/kei/tasks/MIP/Cert/ccc_acp.keystore");
System.setProperty("javax.net.ssl.keyStorePassword", "password");
MipCccSoapTest mipCccSoapTest = new MipCccSoapTest();
mipCccSoapTest.testHttpConnection();
}
private void testHttpConnection(){
try{
doTrustToCertificates();
URL url = new URL("https://10.7.3.43:9443/iboss/CustomerCareM1");
HttpsURLConnection conn = (HttpsURLConnection)url.openConnection();
HttpsURLConnection.getDefaultSSLSocketFactory();
System.out.println("ResponseCoede ="+conn.getResponseCode());
}catch(Exception ex){
ex.printStackTrace();
}
System.exit(0);
//end testing
}
// trusting all certificate
public void doTrustToCertificates() throws Exception {
Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
TrustManager[] trustAllCerts = new TrustManager[]{
new X509TrustManager() {
public X509Certificate[] getAcceptedIssuers() {
return null;
}
public void checkServerTrusted(X509Certificate[] certs, String authType) throws CertificateException {
return;
}
public void checkClientTrusted(X509Certificate[] certs, String authType) throws CertificateException {
return;
}
}
};
SSLContext sc = SSLContext.getInstance("SSL");
sc.init(null, trustAllCerts, new SecureRandom());
HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
HostnameVerifier hv = new HostnameVerifier() {
public boolean verify(String urlHostName, SSLSession session) {
if (!urlHostName.equalsIgnoreCase(session.getPeerHost())) {
System.out.println("Warning: URL host '" + urlHostName + "' is different to SSLSession host '" + session.getPeerHost() + "'.");
}
return true;
}
};
HttpsURLConnection.setDefaultHostnameVerifier(hv);
}
и я получаю следующее сообщение об ошибке
javax.net.ssl.SSLHandshakeException: Получен фатальное предупреждение: handshake_failure на sun.security.ssl.Alerts.getSSLException (Unknown Source)
, но хранилище ключей должно быть правильным, так как я использую одно и то же хранилище ключей в SOAPUI 5.1.3, которое может успешно вызвать сервер.
**************** редактировать на 18/5/2015 *************
После того как я закомментируйте следующие код
Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
TrustManager[] trustAllCerts = new TrustManager[]{
new X509TrustManager() {
public X509Certificate[] getAcceptedIssuers() {
return null;
}
public void checkServerTrusted(X509Certificate[] certs, String authType) throws CertificateException {
return;
}
public void checkClientTrusted(X509Certificate[] certs, String authType) throws CertificateException {
return;
}
}
};
SSLContext sc = SSLContext.getInstance("SSL");
sc.init(null, trustAllCerts, new SecureRandom());
HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
он может подключиться к серверу https.
«Небезопасное пересмотр» не имеет ничего общего с сертификатами. – EJP