سؤال

لدي تطبيق Java للوصول إلى خدمة تستخدم شهادة STARTCOM SSL. لكي ينجح هذا ، أحتاج إلى إضافة Certs StartCom إلى struststore من Java ، لأنهم لم يكونوا هناك افتراضيًا حتى الآن. لقد فعلت ذلك بنجاح على Linux باستخدام هذه الأوامر

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

(من هذا السيناريو)

نفس الأمر (تم تكييفه بشكل مناسب) لا يعمل على Windows. انا حصلت:

keytool error: java.lang.RuntimeException: Usage error, trustcacerts is not a legal command

ما كيفية تشغيله؟

هل كانت مفيدة؟

المحلول

كان خطأ مطبعي بسيط. في تحويل الأمر ، نسيت اندفاعة قبل "TrustCacerts". :(

نصائح أخرى

على Mac OS X Mavericks 10.9 لقد فعلت هذا:

أقوم دائمًا بعمل دليل TMP الذي أحذفه لاحقًا ، لكن ليس عليك ذلك:

mkdir ~/tmp
cd ~/tmp

ثم قم بتنزيل Certs:

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

احصل على منزل Java الخاص بك:

$ /usr/libexec/java_home
/Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home

استخدم keytool لتثبيته:

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

إزالة -trustcacerts

نعم، -trustcacerts هو بناء الجملة الصحيح.

ولكن لكي يعمل البرنامج النصي المرتبط تحت Cygwin ، تحتاج إلى إزالته sudo من جميع keytool خطوط - sudo غير متوفر في Cygwin.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top