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?

¿Fue útil?

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top