2010-09-10 3 views
31

Tengo un servidor con un certificado autofirmado, pero también requiere la autenticación cert del lado del cliente. Me está costando trabajo intentar obtener el certificado de servidor de CA sin procesar para poder importarlo a un almacén de claves. Alguien tiene algunas sugerencias sobre cómo hacer eso fácilmente? Gracias.Java keytool manera fácil de agregar servidor cert de url/puerto

Respuesta

4

Puede exportar un certificado utilizando Firefox, this site tiene instrucciones. Luego, usa keytool para agregar el certificado.

18

Hubo algunas maneras que he encontrado para hacer esto:

 
    java InstallCert [host]:[port] 
    keytool -exportcert -keystore jssecacerts -storepass changeit -file output.cert 
    keytool -importcert -keystore [DESTINATION_KEYSTORE] -file output.cert 
+0

He usado clase InstallCert de Andreas Sterbenz antes también, su utilidad si necesita un certificado para un anfitrión que no acepta solicitudes HTTP GET –

+0

gracias wuntee, que ayudó yo mucho, porque tengo stock aquí: http://stackoverflow.com/questions/9210514/unable-to-find-valid-certification-path-to-request-target-error-even-after-c: D ty –

59

Was mirando cómo confiar en un certificado mientras usa jenkins cli, y encontró https://issues.jenkins-ci.org/browse/JENKINS-12629 que tiene alguna receta para eso.

Esto le dará el certificado:

openssl s_client -connect ${HOST}:${PORT} </dev/null 

si usted está interesado sólo en la parte del certificado, cortar a cabo mediante la canalización a:

| sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' 

y redirigir a un archivo:

> ${HOST}.cert 

A continuación, se importa utilizando herramienta de claves:

keytool -import -noprompt -trustcacerts -alias ${HOST} -file ${HOST}.cert \ 
    -keystore ${KEYSTOREFILE} -storepass ${KEYSTOREPASS} 

de una sola vez:

HOST=myhost.example.com 
PORT=443 
KEYSTOREFILE=dest_keystore 
KEYSTOREPASS=changeme 

# get the SSL certificate 
openssl s_client -connect ${HOST}:${PORT} </dev/null \ 
    | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > ${HOST}.cert 

# create a keystore and import certificate 
keytool -import -noprompt -trustcacerts \ 
    -alias ${HOST} -file ${HOST}.cert \ 
    -keystore ${KEYSTOREFILE} -storepass ${KEYSTOREPASS} 

# verify we've got it. 
keytool -list -v -keystore ${KEYSTOREFILE} -storepass ${KEYSTOREPASS} -alias ${HOST} 
+0

¿Puedo poner HOST = *. Example.com? –

Cuestiones relacionadas