Hostname HTTPS errado: deve ser . O que causa isso?

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; } }); }