Não foi possível gerar o certificado com o Nome Alternativo do Assunto usando o utilitário keytool Java 1.7

13

Estou tendo um problema ao gerar um par de chaves com o nome alternativo do assunto usando o keytoolutilitário Java do Java 1.7. Estou tentando seguir as instruções encontradas aqui .

Um exemplo do comando que estou usando a seguir (este exemplo foi testado):

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

Em seguida, giro o CSR usando o seguinte comando:

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

O que gera a seguinte solicitação 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-----

Quando examino o CSR usando o decodificador de CSR no SSL Shopper , ele não mostra que inclui a SAN especificada. Este certificado é para uso interno em nosso ambiente e a SAN é necessária porque os usuários podem estar acessando o site usando FQDN, apenas o nome do servidor ou o endereço IP.

Eu estou continuando a solução de problemas, mas eu não tenho que experimentou com certs, então eu estou em uma perda, ea maioria das outras pessoas em nosso ambiente não está usando keytoolpara gerar seus certificados.

Pensamentos? Alternativas? Certamente, estou disposto a usar um método diferente para gerar a chave e o CSR, desde que eu possa importá-lo para um keystore Java em algum momento.

Doug R.
fonte
"CN = spam.example.com" - a colocação de um nome DNS na CN é preterida pelos IETF e pelos Fóruns da CA / Navegador. Em vez disso, coloque um nome amigável na CN como "Spam Inc". Coloque todos os nomes DNS na SAN.

Respostas:

13

Você também precisa passar a -extflag para o segundo comando:

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

Em seguida, o certificado contém o nome 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
fonte
1
Obrigado. Eu estava logando para postar que eu tinha descoberto isso da noite para o dia (com uma pequena ajuda de alguém local). Gostaria de entender o porquê disso, porque os keytooldocumentos não parecem dizer (pelo menos para mim) que é necessário. Mas pelo menos é uma resposta com a qual posso viver e sei que não estou totalmente enlouquecendo. Obrigado.
Doug R.