He estado usando el siguiente código para conectarme a uno de los servicios de google. Este código funcionaba bien en mi máquina local:Java SSLException: nombre de host en el certificado no coincide
HttpClient client=new DefaultHttpClient();
HttpPost post = new HttpPost("https://www.google.com/accounts/ClientLogin");
post.setEntity(new UrlEncodedFormEntity(myData));
HttpResponse response = client.execute(post);
que poner este código en un entorno de producción, que había bloqueado Google.com. A petición, permitieron la comunicación con el servidor de Google al permitirme acceder a una IP: 74.125.236.52, que es una de las direcciones IP de Google. Edité mi archivo hosts para agregar esta entrada también.
Todavía no pude acceder a la URL, lo que me pregunto por qué. Así que sustituye el código anterior con:
HttpPost post = new HttpPost("https://74.125.236.52/accounts/ClientLogin");
Ahora me sale un error como este:
javax.net.ssl.SSLException: nombre de host en el certificado no coincide: <74.125.236.52>! = <www.google.com>
supongo que esto se debe a que Google tiene varias direcciones IP. No puedo pedirle al administrador de la red que me permita acceder a todas esas direcciones IP; es posible que ni siquiera obtenga esta lista completa.
¿Qué debo hacer ahora? ¿Hay una solución en el nivel de Java? ¿O está totalmente en manos del chico de la red?
El certificado SSL por lo general viene con un dominio específico * Nombre * al que se aplica, y si ese nombre no coincide con el Al solicitar el nombre, su cliente le advierte que la conexión no está autenticada correctamente.Puede verificar si su cliente le permite especificar una anulación de certificado explícita para la conexión. –
El nombre de host en la URL debe coincidir con el nombre de host en el certificado. Deberías intentar hacerlo funcionar con el archivo hosts. De lo contrario, puede anular la rutina de validación de certificados para aceptar también google.com para 74.125.236.52 (¡no lo haga demasiado indulgente!). – Thilo
@Thilo: ¿Cómo anular la rutina de validación? – WinOrWin