استيراد شهادات CA في Windows JRE
-
29-09-2019 - |
سؤال
لدي تطبيق 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.