Estou recebendo este erro ‘HTTPS hostname wrong:’ ao tentar se conectar a um servidor usando https. Meu URL é algo parecido com isto
https://sub.domain.com/tamnode/webapps/app/servlet.
Eu conecto usando o seguinte código
// Create a URLConnection object for a URL URL url = new URL(requestedURL); HttpURLConnection.setFollowRedirects(false); // connect connection = (HttpURLConnection) url.openConnection(); connection.setDoOutput(true); connection.setRequestProperty("User-Agent", USER_AGENT); //$NON-NLS-1$ OutputStreamWriter wr = new OutputStreamWriter(connection .getOutputStream());
mas depois recebe um erro
IOException: HTTPS hostname wrong: should be . at sun.net.www.protocol.https.HttpsClient.checkURLSpoofing ....
Este é o código que funcionou no passado, mas não mais. Houve algumas mudanças na arquitetura do sistema, mas preciso obter mais dados antes de abordar os responsáveis.
O que pode causar esse erro? Posso desativar o cheque do URLSpoofing?
Parece que o certificado SSL para domain.com foi fornecido para sub.domain.com. Ou, mais provavelmente, o que foi domain.com foi renomeado para sub.domain.com sem atualizar o certificado SSL.
Cletus está certo sobre a causa provável.
Existe uma maneira de desativar a verificação de falsificação também.
Você pode criar um object que implemente o HostnameVerifier que retorna true sob mais circunstâncias do que ‘usual’.
Você replaceia o HostnameVerifier padrão chamando setHostnameVerifier no object de conexão no código da pergunta.
Esta resposta foi “inspirada por”: http://www.java-samples.com/showtutorial.php?tutorialid=211
Eu encontrei esse link com esta consulta: http://www.google.com/search?q=https+hostname+wrong+should+be
Mais uma nota: pense duas vezes antes de fazer isso. Você criará uma vulnerabilidade explorável na segurança entre seus componentes de cliente e servidor.
Eu tenho essa exceção – java.io.IOException: HTTPS hostname wrong: should be
.
Minha solução é que eu mudei meu certificado auto-assinado e faça o CN=localhost
.
OU
Adicione seu certificado nome-do-domínio cn=
ao seu arquivo host provavelmente localizado em c: / windows / system32 / drivers / etc / …
Thi resolve meu problema
static { //for localhost testing only javax.net.ssl.HttpsURLConnection.setDefaultHostnameVerifier( new javax.net.ssl.HostnameVerifier(){ @Override public boolean verify(String hostname, javax.net.ssl.SSLSession sslSession) { if (hostname.equals("your_domain")) { return true; } return false; } }); }