दिलचस्प पोस्ट
पायथन जोरदार टाइप किया गया है? कैसे सी # 4.0 में सोने (या देरी) करने के लिए एक कार्य डाल करने के लिए? मैं कैसे जांचूं अगर फ़ाइल jQuery या शुद्ध जावास्क्रिप्ट में मौजूद है? बिग हे, आप इसका अनुमान / अनुमान कैसे लगा सकते हैं? ओवरराइड किए गए विधियों के बदले में भिन्न हो सकते हैं? ब्राउज़र विंडो की 100% ऊंचाई बनाओ "दिनांक (): सिस्टम के समयक्षेत्र सेटिंग पर भरोसा करना सुरक्षित नहीं है …" IIS / ASP.NET के सभी उपयोगकर्ता खाते क्या हैं और वे अलग-अलग कैसे हैं? मैं अपने सिस्टम से RVM (रूबी संस्करण प्रबंधक) कैसे निकाल सकता हूँ? लिंक किए गए सर्वर MySQL कैसे बनाएँ स्पष्ट चर के चार्ट में गणना के बजाय% दिखाएं सी ++ आईओस्ट्रीम एंडल असफलता क्या है? एंज्युलर 2.0 के साथ गतिशील घटक को संकलित करने के लिए मैं गतिशील टेम्पलेट कैसे बना सकता हूं? पाइपों के उपयोग से दो कार्यक्रमों के बीच एक साधारण स्ट्रिंग कैसे भेजनी है? एसक्यूएल विभाजन मूल्यों को कई पंक्तियों में

जावा कुंजीस्टोर में स्व-हस्ताक्षरित प्रमाणपत्र को कैसे ठीक से आयात करना है जो डिफ़ॉल्ट रूप से सभी जावा अनुप्रयोगों के लिए उपलब्ध है?

मैं जावा में स्व-हस्ताक्षरित प्रमाण पत्र आयात करना चाहता हूं ताकि किसी भी जावा अनुप्रयोग को SSL कनेक्शन स्थापित करने का प्रयास किया जाए जो इस प्रमाणपत्र पर भरोसा करे।

अब तक, मैं इसे आयात करने में कामयाब रहा

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

फिर भी, जब मैं HTTPSClient.class को चलाने की कोशिश करता HTTPSClient.class मुझे अभी भी मिलता है:

  javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX पथ बिल्डिंग विफल: sun.security.provider.certpath.SunCertPathBuilderException: अनुरोधित लक्ष्य के लिए मान्य प्रमाणन पथ खोजने में असमर्थ 

वेब के समाधान से एकत्रित समाधान "जावा कुंजीस्टोर में स्व-हस्ताक्षरित प्रमाणपत्र को कैसे ठीक से आयात करना है जो डिफ़ॉल्ट रूप से सभी जावा अनुप्रयोगों के लिए उपलब्ध है?"

विंडोज़ का सबसे आसान तरीका कार्यक्रम पोर्टिले का उपयोग करना है

  1. पोर्ट्रिक डाउनलोड और इंस्टॉल करें
  2. सबसे पहले 100% सुनिश्चित करें कि आप जानते हैं कि आपके प्रोग्राम को चलाने के लिए जेआरई या जेडीके का इस्तेमाल किया जा रहा है। 64 बिट विंडोज 7 पर कुछ जेआरएस हो सकते हैं। प्रोसेस एक्सप्लोरर आपको इसके साथ मदद कर सकता है या आप इसका इस्तेमाल कर सकते हैं: System.out.println(System.getProperty("java.home"));
  3. फ़ाइल को दूसरे फ़ोल्डर में JAVA_HOME \ lib \ security \ cacerts कॉपी करें
  4. पोर्टिले में फ़ाइल> ओपन कीस्टोर फ़ाइल क्लिक करें
  5. Cacerts फ़ाइल का चयन करें
  6. यह पासवर्ड दर्ज करें: changeit
  7. टूल्स> विश्वसनीय प्रमाणपत्र आयात करें क्लिक करें
  8. फ़ाइल mycertificate.pem के लिए ब्राउज़ करें
  9. आयात पर क्लिक करें
  10. ट्रस्ट पथ के बारे में चेतावनी के लिए ठीक क्लिक करें
  11. जब यह प्रमाणपत्र के बारे में विवरण प्रदर्शित करता है, तो ठीक क्लिक करें।
  12. प्रमाण पत्र को विश्वसनीय मानने के लिए हाँ क्लिक करें
  13. जब यह एक उपनाम के लिए पूछता है, ठीक क्लिक करें और ठीक क्लिक करें, जब यह कहता है कि उसने प्रमाण पत्र आयात किया है
  14. सहेजें पर क्लिक करें इसे मत भूलना या परिवर्तन को त्याग दिया जाता है।
  15. फ़ाइल cacerts की प्रतिलिपि वापस करें, जहां आपको यह मिला।

लिनक्स पर:

आप एक वेब सर्वर से SSL प्रमाणपत्र डाउनलोड कर सकते हैं जो पहले से इसे इस तरह प्रयोग कर रहा है:

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

वैकल्पिक रूप से प्रमाण पत्र की पुष्टि करें:

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

जावा कंसर्ट्स कीस्टस्टोर में प्रमाण पत्र आयात करें:

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

संपादित करें:

इन दिनों हमें एक प्रमाण पत्र को मुख्य स्टार्स में जोड़ना नहीं पड़ता है क्योंकि आप ssls.com से प्रति वर्ष $ 5 के लिए प्रमाण पत्र प्राप्त कर सकते हैं। बस के मामले में है कि आप के लिए एक विकल्प है

मैंने एक छोटी सी स्क्रिप्ट लिखना समाप्त कर दिया, जो कि मुख्य दुकानों में प्रमाण पत्र जोड़ता है, इसलिए यह उपयोग करना बहुत आसान है।

आप 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 

“ `

  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" 

यदि आप एक प्रमाण पत्र प्राधिकारी द्वारा हस्ताक्षरित प्रमाण पत्र का उपयोग कर रहे हैं जो डिफ़ॉल्ट रूप से जावा cacerts फ़ाइल में शामिल नहीं है, तो आपको HTTPS कनेक्शन के लिए निम्न कॉन्फ़िगरेशन को पूरा करना होगा। सीएक्ट्स में प्रमाणपत्र आयात करने के लिए:

  1. विंडोज एक्सप्लोरर को खोलें और cacerts फ़ाइल पर जाएँ, जो जेआर \ lib \ security सबफ़ोल्डर में स्थित है जहां एएक्स कोर क्लाइंट स्थापित है। डिफ़ॉल्ट स्थान सी है: \ प्रोग्राम फ़ाइलें एसीएल सॉफ्टवेयर एएक्स कोर क्लाइंट \ जेआर \ बीबीटी \ सुरक्षा
  2. कोई भी परिवर्तन करने से पहले फ़ाइल की बैकअप प्रतिलिपि बनाएँ।
  3. आप उपयोग कर रहे हैं सर्टिफिकेट प्राधिकरण से प्राप्त प्रमाणपत्रों के आधार पर, आपको एक मध्यवर्ती प्रमाणपत्र और / या रूट प्रमाणपत्र को cacerts फ़ाइल में आयात करना पड़ सकता है प्रमाणपत्र आयात करने के लिए निम्न सिंटैक्स का उपयोग करें: keytool -import -alias -keystore -trustcacerts -file
  4. यदि आप दोनों प्रमाण-पत्रों को आयात कर रहे हैं तो प्रत्येक प्रमाणपत्र के लिए निर्दिष्ट उपनाम अद्वितीय होना चाहिए।
  5. "पासवर्ड" संकेत पर कीस्टोर के लिए पासवर्ड टाइप करें और Enter दबाएं Cacerts फ़ाइल के लिए डिफ़ॉल्ट जावा पासवर्ड "changeit" है "इस प्रमाणपत्र पर विश्वास करें" प्रॉम्प्ट पर 'y' टाइप करें और Enter दबाएं

यह मेरे लिए काम किया 🙂

 sudo keytool -importcert -file filename.cer -alias यादृच्छिक नाम -keystore $ java_home / jre / lib / security / cacerts -storepass changeit 

कोशिश कर सकते हैं

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

मुझे ईमानदारी से पता नहीं है कि यह आपके प्रमाण पत्र को कहां रखता है अगर आप सिर्फ cacerts लिखते हैं तो इसे पूर्ण पथ दें

सरल कमांड 'कीटोल' भी विंडोज पर और / या साइगविन के साथ काम करता है।

यदि आप साइगविन का उपयोग कर रहे हैं तो संशोधित कमांड है जिसे मैंने "एस.बोटा" के नीचे से इस्तेमाल किया है:

  1. सुनिश्चित करें कि आप JDK के अंदर JRE को पहचानते हैं कि आप उपयोग करेंगे
  2. अपने शीघ्र / साइगविन को व्यवस्थापक के रूप में प्रारंभ करें
  3. उस जेडीके जैसे सीडी / साइग्रेड / सी / प्रोग्राम \ फाइल / जावा / जेडीके 1.8.0_121 / जेआर / बिन की बिन निर्देशिका में जाएं
  4. इसके अंदर से मुख्य टोल कमांड निष्पादित करें, जहां आप अंत में अपने नए प्रमाण का पथ प्रदान करते हैं, जैसे:

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

ध्यान दें, क्योंकि अगर यह सिगविन के अंतर्गत है तो आप गैर-साइगविन प्रोग्राम का पथ दे रहे हैं, इसलिए पथ DOS- जैसा है और उद्धरण में।