2013-11-25 5 views
1

Я пытаюсь отправить запрос на сервер, но он имеет следующую ошибку, так как я знаю, должен создать сертификат, но не уверен, как это сделать. Я нашел это answer, но не смог его реализовать.Как обойти исключение CertificateException Java?

java.security.cert.CertificateException: No subject alternative DNS name matching www.example.com found. 

Код

 URL url = new URL("https://www.example.com:1897/services/myservice"); 

     HttpsURLConnection con = (HttpsURLConnection) url.openConnection(); 

     con.setRequestMethod("POST"); 
     con.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); 
     con.setDoOutput(true); 
     con.setDoInput(true); 

     OutputStream os = con.getOutputStream(); 
     m.marshal(auth, os); 
     m.marshal(auth, System.out); 

     os.flush(); 
     con.getResponseCode(); 

ответ

1

Сервер может использовать сертификат, который испытывает недостаток в собственных расширений. Вы можете либо отключить проверку имени узла (что создает проблему безопасности), либо установить на сервере надлежащий сертификат (что может быть затруднено, если это не ваш сервер).

Более конкретно, я бы предположил, что либо сертификат сервера содержит расширение альтернативного имени темы, но это расширение не содержит имя хоста сервера, либо нет расширения SAN и атрибута Common Name Имя субъекта не соответствует серверу. В любом случае решением было бы получить сертификат с правильным именем хоста сервера в расширении SAN.

+0

Это означает, что мне нужно попросить их обновить свой сертификат с правильным именем хоста сервера в расширении SAN? если бы вы не объяснили больше или не указали мне несколько источников, чтобы получить дополнительную информацию, спасибо –

+0

Да, это то, о чем вы должны их спросить. Трудно сказать, конечно, не видя сертификата. – erickson

+0

Я могу отправить вам сертификат, если вы дадите мне свой адрес электронной почты. –

Смежные вопросы