permitida opcion introduzca instalar herramienta exportar existe error ejemplo denegado crear contraseña claves certificado archivo almacén almacen acceso java certificate ssl-certificate keystore keytool

opcion - keystore java ejemplo



¿Cómo importar correctamente un certificado autofirmado en el almacén de claves de Java que está disponible para todas las aplicaciones Java de forma predeterminada? (7)

Sí quiero importar un certificado autofirmado a Java para que cualquier aplicación Java que intente establecer una conexión SSL confíe en este certificado.

Hasta ahora, logré importarlo en

keytool -import -trustcacerts -noprompt -storepass changeit -alias $REMHOST -file $REMHOST.pem keytool -import -trustcacerts -noprompt -keystore cacerts -storepass changeit -alias $REMHOST -file $REMHOST.pem

Aún así, cuando intento ejecutar HTTPSClient.class sigo teniendo:

javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target


El comando simple ''keytool'' también funciona en Windows y / o con Cygwin.

Si estás usando Cygwin aquí está el comando modificado que usé desde la parte inferior de la respuesta de "S.Botha":

  1. asegúrese de identificar el JRE dentro del JDK que va a utilizar
  2. Inicie su prompt / cygwin como administrador
  3. ir dentro del directorio bin de ese JDK, por ejemplo, cd / cygdrive / c / Program / Files / Java / jdk1.8.0_121 / jre / bin
  4. Ejecute el comando keytool desde adentro, donde usted proporciona la ruta a su nuevo certificado al final, como sigue:

    ./keytool.exe -import -trustcacerts -keystore ../lib/security/cacerts -storepass changeit -noprompt -alias myownaliasformysystem -file "D:/Stuff/saved-certs/ca.cert"

Aviso, porque si esto está bajo Cygwin está dando una ruta a un programa que no es Cygwin, entonces la ruta es similar a DOS y entre comillas.


Esto funcionó para mí. :)

sudo keytool -importcert -file filename.cer -alias randomaliasname -keystore $JAVA_HOME/jre/lib/security/cacerts -storepass changeit


Si está utilizando un certificado firmado por una Autoridad de certificación que no está incluido en el archivo de cacerts de Java de forma predeterminada, debe completar la siguiente configuración para las conexiones HTTPS. Para importar certificados en cacerts:

  1. Abra Windows Explorer y navegue hasta el archivo cacerts, que se encuentra en la subcarpeta jre / lib / security donde AX Core Client está instalado. La ubicación predeterminada es C: / Archivos de programa / ACL Software / AX Core Client / jre / lib / security
  2. Cree una copia de seguridad del archivo antes de realizar cambios.
  3. Dependiendo de los certificados que reciba de la autoridad de certificación que esté utilizando, es posible que necesite importar un certificado intermedio y / o certificado raíz en el archivo cacerts. Use la siguiente sintaxis para importar certificados: keytool -import -alias -keystore -trustcacerts -file
  4. Si está importando ambos certificados, el alias especificado para cada certificado debe ser único.
  5. Escriba la contraseña para el almacén de claves en el mensaje "Contraseña" y presione Entrar. La contraseña de Java predeterminada para el archivo cacerts es "changeit". Escriba ''y'' en el mensaje "¿Confiar en este certificado?" Y presione Entrar.

Tal vez quieras probar

keytool -import -trustcacerts -noprompt -keystore <full path to cacerts> -storepass changeit -alias $REMHOST -file $REMHOST.pem

Honestamente, no tengo ni idea de dónde pone tu certificado si solo escribes cacerts simplemente dale una ruta completa


Terminé escribiendo un pequeño script que agrega los certificados a los almacenes de claves, por lo que es mucho más fácil de usar.

Puede obtener la última versión de https://github.com/ssbarnea/keytool-trust

#!/bin/bash # version 1.0 # https://github.com/ssbarnea/keytool-trust REMHOST=$1 REMPORT=${2:-443} KEYSTORE_PASS=changeit KEYTOOL="sudo keytool" # /etc/java-6-sun/security/cacerts for CACERTS in /usr/lib/jvm/java-8-oracle/jre/lib/security/cacerts / /usr/lib/jvm/java-7-oracle/jre/lib/security/cacerts / "/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/lib/security/cacerts" / "/Applications/Xcode.app/Contents/Applications/Application Loader.app/Contents/MacOS/itms/java/lib/security/cacerts" do if [ -e "$CACERTS" ] then echo --- Adding certs to $CACERTS # FYI: the default keystore is located in ~/.keystore if [ -z "$REMHOST" ] then echo "ERROR: Please specify the server name to import the certificatin from, eventually followed by the port number, if other than 443." exit 1 fi set -e rm -f $REMHOST:$REMPORT.pem if openssl s_client -connect $REMHOST:$REMPORT 1>/tmp/keytool_stdout 2>/tmp/output </dev/null then : else cat /tmp/keytool_stdout cat /tmp/output exit 1 fi if sed -ne ''/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p'' </tmp/keytool_stdout > /tmp/$REMHOST:$REMPORT.pem then : else echo "ERROR: Unable to extract the certificate from $REMHOST:$REMPORT ($?)" cat /tmp/output fi if $KEYTOOL -list -storepass ${KEYSTORE_PASS} -alias $REMHOST:$REMPORT >/dev/null then echo "Key of $REMHOST already found, skipping it." else $KEYTOOL -import -trustcacerts -noprompt -storepass ${KEYSTORE_PASS} -alias $REMHOST:$REMPORT -file /tmp/$REMHOST:$REMPORT.pem fi if $KEYTOOL -list -storepass ${KEYSTORE_PASS} -alias $REMHOST:$REMPORT -keystore "$CACERTS" >/dev/null then echo "Key of $REMHOST already found in cacerts, skipping it." else $KEYTOOL -import -trustcacerts -noprompt -keystore "$CACERTS" -storepass ${KEYSTORE_PASS} -alias $REMHOST:$REMPORT -file /tmp/$REMHOST:$REMPORT.pem fi fi done

`` `


En Windows, la forma más fácil es usar el portecle programa.

  1. Descargue e instale portecle.
  2. Primero asegúrate al 100% de que sabes qué JRE o JDK se está utilizando para ejecutar tu programa. En un Windows 7 de 64 bits podría haber bastantes JRE. Process Explorer puede ayudarlo con esto o puede usar: System.out.println(System.getProperty("java.home"));
  3. Copie el archivo JAVA_HOME / lib / security / cacerts en otra carpeta.
  4. En Portecle, haga clic en Archivo> Abrir archivo de almacén de claves
  5. Seleccione el archivo cacerts
  6. Ingrese esta contraseña: cambiar
  7. Haz clic en Herramientas> Importar certificado de confianza
  8. Busque el archivo mycertificate.pem
  9. Haga clic en importar
  10. Haga clic en Aceptar para la advertencia sobre la ruta de confianza.
  11. Haga clic en Aceptar cuando muestre los detalles sobre el certificado.
  12. Haga clic en Sí para aceptar el certificado como confiable.
  13. Cuando solicita un alias, haga clic en Aceptar y vuelva a hacer clic en Aceptar cuando indique que ha importado el certificado.
  14. Clic en Guardar. No lo olvides o el cambio se descarta.
  15. Copia los cacerts de archivos donde los encontraste.

En Linux:

Puede descargar el certificado SSL de un servidor web que ya lo está usando así:

$ echo -n | openssl s_client -connect www.example.com:443 | / sed -ne ''/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p'' > /tmp/examplecert.crt

Opcionalmente verifique la información del certificado:

$ openssl x509 -in /tmp/examplecert.crt -text

Importe el certificado en el almacén de claves de cacerts de Java:

$ keytool -import -trustcacerts -keystore /opt/java/jre/lib/security/cacerts / -storepass changeit -noprompt -alias mycert -file /tmp/examplecert.crt

Editar:

En estos días, no siempre tenemos que agregar un certificado al almacén de claves porque puede obtener un certificado por $ 5 por año en ssls.com . Por si acaso esa es una opción para ti.


D:/Java/jdk1.5.0_10/bin/keytool -import -file "D:/Certificates/SDS services/Dev/dev-sdsservices-was8.infavig.com.cer" -keystore "D:/Java/jdk1.5.0_10/jre/lib/security/cacerts" -alias "sds certificate"