java - create - Dirección IP como nombre de host(CN) al crear un certificado?(El nombre de host HTTPS es incorrecto: debe ser<ipAddress>)
keytool java example (1)
La identidad que necesita ingresar en el certificado debe ser la que está buscando a través de la URL. Por ejemplo, si usa https://www.example.net
, su certificado debe ser válido para www.example.net
; si usa https://10.0.0.1/
, su certificado debe ser válido para 10.0.0.1
.
El RDN de nombre común en el DN del sujeto del certificado normalmente solo se usa cuando (a) no hay una entrada de DNS de nombre alternativo del sujeto y (b) está buscando un nombre de host, no una dirección de IP. Esto se define en RFC 2818 Sección 3.1 :
Si está presente una extensión subjectAltName de tipo dNSName, DEBE utilizarse como identidad. De lo contrario, DEBE utilizarse el campo de Nombre común (más específico) en el campo Asunto del certificado. Aunque el uso del Nombre común es una práctica existente, está en desuso y se recomienda a las Autoridades de certificación que usen el Nombre DNS en su lugar.
[...]
En algunos casos, el URI se especifica como una dirección IP en lugar de un nombre de host. En este caso, iPAddress subjectAltName debe estar presente en el certificado y debe coincidir exactamente con la IP en el URI.
En general, no se recomienda el uso de la dirección IP en los certificados (consulte los problemas mencionados en RFC 6125. Sin embargo, si realmente lo necesita, necesitará un certificado con la dirección IP como una entrada SAN de tipo de dirección IP, que puede generar como se describe en esta respuesta .
Posible duplicado:
¿Cómo se resuelven los nombres de los servidores de certificados SSL? ¿Puedo agregar nombres alternativos usando keytool?
Creé un certificado y configuré el CN en la dirección IP de mi servidor, que está en formato xxx.xxx.xxx.xxx. Pero cuando intento ejecutar mi código en Java, recibo un HTTPS hostname wrong: should be <xxx.xxx.xxx.xx>
un mensaje de error HTTPS hostname wrong: should be <xxx.xxx.xxx.xx>
.
¿Qué podría estar mal? Estoy seguro de que me estoy conectando a la dirección IP correcta. Sin embargo, no especifiqué el puerto del servidor en el certificado. ¿Se requiere el puerto cuando se proporciona el valor para CN? Pero estoy usando el puerto predeterminado para https que es 8443. Además, traté de cambiar mi CN de la dirección IP de mi servidor a "localhost". Funciona después de eso. Estoy pensando si la parte CN no acepta una dirección IP como valor?
¿Puede explicar cómo funciona el CN y cuál es el valor requerido para él?
¡Gracias!