No se puede generar el certificado con el nombre alternativo del sujeto utilizando la utilidad keytool Java 1.7

13

Tengo un problema al generar un par de claves con nombre alternativo de sujeto usando la keytoolutilidad Java de Java 1.7. Estoy tratando de seguir las instrucciones que se encuentran aquí .

A continuación se muestra un ejemplo del comando que estoy usando (este ejemplo ha sido probado):

keytool -keystore c:\temp\keystore.jks -storepass changeme -keypass changeme -alias spam -genkeypair -keysize 2048 -keyalg RSA -dname "CN=spam.example.com, OU=Spam NA, O=Spam Inc, L=Anywhere, S=State, C=US" -ext san=dns:spam,ip:192.168.0.1

Luego genero la CSR usando el siguiente comando:

keytool -keystore c:\temp\keystore.jks -storepass changeme -alias spam -certreq -file c:\temp\spam.csr

Lo que genera la siguiente solicitud de certificado:

-----BEGIN NEW CERTIFICATE REQUEST-----
MIIC5TCCAc0CAQAwcDELMAkGA1UEBhMCVVMxDjAMBgNVBAgTBVN0YXRlMREwDwYDVQQHEwhBbnl3
aGVyZTERMA8GA1UEChMIU3BhbSBJbmMxEDAOBgNVBAsTB1NwYW0gTkExGTAXBgNVBAMTEHNwYW0u
ZXhhbXBsZS5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCExCFepag4KH+j8xgR
BjI58hOEiFuSrkgbL5/1steru3+FwDb98R8XO90kKreq/Qt7s/oHbTpFOwotdkGVxA2x44/R5OYr
Qdfk3v32ypJTxms/8tu0Zi9wbH2ruA/h5AhtZ9TV/xLPFSe5eFvN0pUl90p+9zfd0ZCmPQ69k3Lb
JWlw7eIs7sD1yRqlYZL+HJWrsdtYTHjpqEURcZ5jN0H2YeM/eBWZr7eMKrT4xGRwotFj9AfHCiUj
HH4XTJgkrbBtw96pkPYMj/C7TfUE/slCxafEBIkVKlkHLBb9ra3PVfW/QoDGsf2FjtNKOKFxyy7p
A3A5ufdvrCVZ5EKWGrbbAgMBAAGgMDAuBgkqhkiG9w0BCQ4xITAfMB0GA1UdDgQWBBS1GytnaPx2
SAZCyto2BKh7Yw7bgTANBgkqhkiG9w0BAQsFAAOCAQEAIiwY6RIIJkgUQsdK2XiLJDhBnoxfsKjQ
zkWdZjETNxdD9LSng4AZroKjl05NRdjVkew5QM/gNt8s4jcI8OE0EOaZz6ZmlHK39bPtifJ9xlhy
0Q2Q5VAZ6mUB3BU4QF17MLmtEuI+FsG+S7ZKTK+j1Mcn8E+XvS5EbA0NJJkiIhfikr7nUEgB+qUU
CW0vM53FhVPO/piphNUuE60lMlomnDnCHW9xevAolb3rVCvqTdZ2q3G6BNFG07YEL/jaKKIctrnN
W6W4aGb6ppdXXExkx6EIj7hleoSxZHDVjxiIb3U16WFObtwCpTe9ygHcZtZswRkTzwJZLHipCkcQ
GY3lwA==
-----END NEW CERTIFICATE REQUEST-----

Cuando examino el CSR usando el Decodificador CSR en SSL Shopper , no muestra que incluya el SAN especificado. Este certificado es para uso interno en nuestro entorno, y se requiere la SAN porque los usuarios pueden acceder al sitio utilizando FQDN, solo el nombre del servidor o la dirección IP.

Estoy continuando a solucionar problemas, pero no soy que experimenta con los CERT, así que estoy en una pérdida, y la mayoría de otras personas en nuestro entorno no está utilizando keytoolpara generar sus certs.

Pensamientos? ¿Alternativas? Ciertamente, estoy dispuesto a utilizar un método diferente para generar la clave y la CSR, siempre que pueda importarlo en un almacén de claves de Java en algún momento.

Doug R.
fuente
"CN = spam.example.com" : la colocación de un nombre DNS en el CN ​​está en desuso por parte de los foros IETF y CA / Browser. En su lugar, ponga un nombre amigable en la CN como "Spam Inc". Ponga todos los nombres DNS en la SAN.

Respuestas:

13

También debe pasar la -extbandera al segundo comando:

$ keytool -keystore keystore.jks -storepass changeme -alias spam -certreq -ext san=dns:spam,ip:192.168.0.1 -file spam.csr

Entonces el certificado contiene el nombre alternativo:

$ openssl x509 -noout -text -in spam.csr | grep -A2 "Requested Extensions"
        Requested Extensions:
            X509v3 Subject Alternative Name:
                DNS:spam, IP Address:192.168.0.1
Dawud
fuente
1
Gracias. Estaba iniciando sesión para publicar que había descubierto eso de la noche a la mañana (con un poco de ayuda de alguien local). Ojalá entendiera por qué , porque los keytooldocumentos no parecen decir (al menos para mí) que es necesario. Pero al menos es una respuesta con la que puedo vivir y sé que no me estoy volviendo loco. Gracias.
Doug R.