certificados de importación StartCom CA de Windows JRE
-
29-09-2019 - |
Pregunta
Tengo una aplicación Java para acceder a un servicio que utiliza un certificado SSL StartCom. Para que esto funcione, tengo que añadir los certs StartCom CA al almacén de confianza de Java, porque no están allí de forma predeterminada todavía. Hemos puesto en práctica con éxito que en Linux a través de estos comandos
sudo keytool -import -trustcacerts -keystore $JAVA_HOME/jre/lib/security/cacerts -storepass changeit -noprompt -alias startcom.ca -file ca.crt
sudo keytool -import -trustcacerts -keystore $JAVA_HOME/jre/lib/security/cacerts -storepass changeit -noprompt -alias startcom.ca.sub.class1 -file sub.class1.server.ca.crt
sudo keytool -import -trustcacerts -keystore $JAVA_HOME/jre/lib/security/cacerts -storepass changeit -noprompt -alias startcom.ca.sub.class2 -file sub.class2.server.ca.crt
sudo keytool -import -trustcacerts -keystore $JAVA_HOME/jre/lib/security/cacerts -storepass changeit -noprompt -alias startcom.ca.sub.class3 -file sub.class3.server.ca.crt
sudo keytool -import -trustcacerts -keystore $JAVA_HOME/jre/lib/security/cacerts -storepass changeit -noprompt -alias startcom.ca.sub.class4 -file sub.class4.server.ca.crt
( este script )
El mismo comando (adaptado apropiadamente) no funciona en Windows sin embargo. Me sale:
keytool error: java.lang.RuntimeException: Usage error, trustcacerts is not a legal command
¿Cómo hacer que funcione?
Solución
Fue un simple error tipográfico. Al convertir el comando se me olvidó un guión antes "-trustcacerts". : (
Otros consejos
En Mac OS X 10.9 Mavericks me hizo esto:
Siempre que un directorio tmp que borro más tarde, pero no tiene que:
mkdir ~/tmp
cd ~/tmp
A continuación, descarga los CERT:
curl http://www.startssl.com/certs/ca.crt -O
curl http://www.startssl.com/certs/sub.class1.server.ca.crt -O
curl http://www.startssl.com/certs/sub.class2.server.ca.crt -O
curl http://www.startssl.com/certs/sub.class3.server.ca.crt -O
curl http://www.startssl.com/certs/sub.class4.server.ca.crt -O
Obtenga su inicio de Java:
$ /usr/libexec/java_home
/Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home
Uso herramienta de claves para instalarlo:
sudo keytool -import -trustcacerts -keystore /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home/jre/lib/securitycacerts -storepass changeit -noprompt -alias startcom.ca -file ca.crt
sudo keytool -import -trustcacerts -keystore /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home/jre/lib/security/cacerts -storepass changeit -noprompt -alias startcom.ca.sub.class1 -file sub.class1.server.ca.crt
sudo keytool -import -trustcacerts -keystore /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home/jre/lib/securitycacerts -storepass changeit -noprompt -alias startcom.ca.sub.class2 -file sub.class2.server.ca.crt
sudo keytool -import -trustcacerts -keystore /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home/jre/lib/securitycacerts -storepass changeit -noprompt -alias startcom.ca.sub.class3 -file sub.class3.server.ca.crt
sudo keytool -import -trustcacerts -keystore /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home/jre/lib/securitycacerts -storepass changeit -noprompt -alias startcom.ca.sub.class4 -file sub.class4.server.ca.crt
Quitar -trustcacerts
Sí, -trustcacerts
es la sintaxis correcta.
Sin embargo, para el guión relacionado con el trabajo bajo Cygwin tiene que quitar sudo
de todas las líneas keytool
-. sudo
no está disponible en Cygwin