java - त्रुटि-ट्रस्टएन्चर्स पैरामीटर गैर-खाली होना चाहिए




hudson javamail (20)

आप Spring Boot 1.4.1 (या नए) को अपग्रेड करने के बाद भी इस त्रुटि का सामना कर सकते हैं क्योंकि यह Tomcat 8.5.5 साथ इसकी निर्भरता के हिस्से के रूप में लाता है। समस्या यह है कि टॉमकैट ट्रस्ट स्टोर से संबंधित है, अगर आपने अपने ट्रस्ट स्टोर स्थान को स्प्रिंग बूट कॉन्फ़िगरेशन में अपने कीस्टोर के समान ही निर्दिष्ट किया है तो आपको ट्रस्ट प्राप्त होगा। trustAnchors parameter must be non-empty संदेश trustAnchors parameter must be non-empty आवेदन शुरू करते समय।

server.ssl.key-store=classpath:server.jks
server.ssl.trust-store=classpath:server.jks

बस server.ssl.trust-store कॉन्फ़िगरेशन को हटा दें जब तक आपको पता न हो कि आपको इसकी आवश्यकता है, इस मामले में नीचे दिए गए लिंक से परामर्श लें।

निम्नलिखित समस्या में समस्या के बारे में अधिक जानकारी है:

मैं जेनकिंस / हडसन पर अपना ई-मेल कॉन्फ़िगर करने की कोशिश कर रहा हूं और मुझे लगातार त्रुटि मिलती है

java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be
    non-empty

मैंने त्रुटि के बारे में ऑनलाइन जानकारी की अच्छी मात्रा देखी है, लेकिन काम करने के लिए कोई भी नहीं मिला है। मैं फेडोरा लिनक्स (ओपनजेडीके नहीं) पर सूर्य के जेडीके का उपयोग कर रहा हूं।

यहां कुछ चीजें हैं जिनकी मैंने कोशिश की है। मैंने इस post से सलाह का पालन करने की कोशिश की लेकिन यह विंडोज़ से कैकर्ट को मेरे फेडोरा बॉक्स होस्टिंग पर जेनकिंस होस्ट करने की काम नहीं कर रहा था। मैंने इस guide पालन ​​करने की कोशिश की क्योंकि मैं अपने एसएमटीपी सर्वर के रूप में जीमेल को कॉन्फ़िगर करने की कोशिश कर रहा हूं लेकिन यह काम नहीं करता है। मैंने उन कैकरर्ट फ़ाइलों को मैन्युअल रूप से डाउनलोड करने और स्थानांतरित करने का प्रयास किया और उन्हें इस guide पर कमांड के बदलाव का उपयोग करके अपने जावा फ़ोल्डर में ले जाया।

मैं किसी भी सुझाव के लिए खुला हूं क्योंकि मैं वर्तमान में अभी अटक गया हूं। मुझे इसे विंडोज हडसन सर्वर से काम करने के लिए मिला है लेकिन मैं लिनक्स पर संघर्ष कर रहा हूं।


इंटरनेट पर मिले समाधानों में से कोई भी काम नहीं करता है लेकिन एक संशोधित पीटर क्रिड नौकरी करने लगता है।

सबसे पहले अपने जावा फ़ोल्डर को /usr/libexec/java_home । मेरे लिए यह 1.6.0.jdk संस्करण था। फिर इसके lib/security subfolder पर जाएं (मेरे लिए lib/security )

फिर यदि कोई पहले से है तो cacerts फ़ाइल हटाएं और cacerts sudo find / -name "cacerts" साथ सिस्टम पर किसी के लिए sudo find / -name "cacerts" । यह मेरे लिए कई एक्सकोड या अन्य एप्स के संस्करणों में स्थापित किया गया था, जो मैंने इंस्टॉल किया था, लेकिन /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/lib/security/cacerts जो मैंने चुना था।

उस फ़ाइल का प्रयोग करें और इसके लिए एक प्रतीकात्मक लिंक बनाएं (जब तक जावा फ़ोल्डर के अंदर) sudo ln -fsh "/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/lib/security/cacerts" और इसे काम करना चाहिए ।

मेरे पास दोनों हैं - ऐप्पल के 2017-001 डाउनलोड से जावा ( https://support.apple.com/kb/dl1572 - मुझे लगता है कि सही कर्ट कहां से हैं) और ओरेकल का मैक ओएस एक्स सिएरा पर स्थापित है।


इस विचित्र संदेश का अर्थ है कि आपके द्वारा निर्दिष्ट ट्रस्टस्टोर नहीं मिला था, उदाहरण के लिए एक्सेस अनुमतियों के कारण खोला नहीं जा सका।

नीचे @ AdamPlumb का जवाब भी देखें।


इसके लिए एक और कारण यह वास्तव में वैध त्रुटि है। कुछ घृणास्पद वाईफाई हॉटस्पॉट मध्यस्थ हमले में प्रमाण पत्र और आदमी के साथ गड़बड़ करेंगे जो आपको जानता है कि कौन जानता है (भागो!)।

कुछ बड़े नियोक्ता वही चाल करेंगे, खासकर संवेदनशील नेटवर्क जोन में ताकि वे सभी एन्क्रिप्टेड ट्रैफिक की निगरानी कर सकें (अंतिम उपयोगकर्ता परिप्रेक्ष्य से बहुत अच्छा नहीं है लेकिन इसके लिए अच्छे कारण भी हो सकते हैं)।


ईजेपी ने मूल रूप से सवाल का जवाब दिया (और मुझे एहसास हुआ कि इसका एक स्वीकार्य उत्तर है) लेकिन मैंने अभी इस एज-केस गॉचा के साथ निपटाया और मेरे समाधान को अमर बनाना चाहता था। मेरे पास होस्ट किए गए जिरा सर्वर पर अमान्य एल्गोरिदम पैरामीटर एक्सेप्शन त्रुटि थी जिसे मैंने पहले SSL-केवल एक्सेस के लिए सेट अप किया था। मुद्दा यह था कि मैंने पीकेसीएस # 12 प्रारूप में अपना कीस्टोर स्थापित किया था, लेकिन मेरा ट्रस्टस्टोर जेकेएस प्रारूप में था। मेरे मामले में, मैंने अपनी सर्वर.एक्सएमएल फ़ाइल को पीकेसीएस को कीस्टोर टाइप निर्दिष्ट करने के लिए संपादित किया था, लेकिन ट्रस्टस्टोर टाइप निर्दिष्ट नहीं किया था, इसलिए यह कुंजीस्टोर टाइप जो कुछ भी है, उसे डिफ़ॉल्ट करता है। ट्रस्टस्टोर टाइप को स्पष्ट रूप से निर्दिष्ट करना क्योंकि जेकेएस ने इसे मेरे लिए हल किया है।


ईमेल भेजने पर मुझे वही त्रुटि मिली, लेकिन हमेशा नहीं । मेरे मामले में मैंने प्रत्येक बार एक नया Session ऑब्जेक्ट प्राप्त करने के लिए कोड की एक पंक्ति बदल दी है:

MimeMessage message = new MimeMessage(Session.getDefaultInstance(props, authenticator));

सेवा मेरे

MimeMessage message = new MimeMessage(Session.getInstance(props, authenticator));

तब से ई-मेल भेजना हर बार काम करता है। यह किसी की मदद कर सकता है।

त्रुटि मुझे मिली:

javax.mail.MessagingException: सॉकेट को टीएलएस में परिवर्तित नहीं किया जा सका;
नेस्टेड अपवाद है: javax.net.ssl.SSLException: java.lang.RuntimeException: अप्रत्याशित त्रुटि: java.security.InvalidAlgorithm पैरामीटर अपवाद: trustAnchors पैरामीटर com.sun.mail.smtp.SMTPTransport.startTLS (SMTPTransport पर गैर-खाली होना चाहिए। जावा: 1 9 07) com.sun.mail.smtp.SMTPTransport.protocolConnect (SMTPTransport.java:666) पर javax.mail.Service.connect (service.java:317) javax.mail.Service.connect (service.java) पर : 176) javax.mail.Service.connect (service.java:125) पर javax.mail.Transport.send0 (Transport.java:194) javax.mail.Transport.send (Transport.java:124) पर


उबंटू 16.04 एलटीएस से 18.04 एलटीएस तक अपग्रेड करने के बाद, मैवेन 3 का उपयोग करने की कोशिश करते समय मुझे यह समस्या थी।

चेकिंग / usr / lib / jvm / java-8-oracle / jre / lib / security ने दिखाया कि मेरी cacerts फ़ाइल / प्रतीकात्मक लिंक थी जो / etc / ssl / certs / java / cacerts को इंगित करती है

मेरे पास संदिग्ध रूप से cacerts.original नाम की एक फ़ाइल भी थी

मैंने cacerts.original को cacerts का नाम दिया और इस मुद्दे को ठीक किया।


उबंटू 18.04 में, इस त्रुटि का एक अलग कारण है (जेईपी 22 9, jks keystore डिफ़ॉल्ट प्रारूप से pkcs12 प्रारूप में pkcs12 , और नई फ़ाइलों के लिए डिफ़ॉल्ट का उपयोग कर डेबियन कैकर्ट फ़ाइल पीढ़ी) और workaround :

# Ubuntu 18.04 and various Docker images such as openjdk:9-jdk throw exceptions when
# Java applications use SSL and HTTPS, because Java 9 changed a file format, if you
# create that file from scratch, like Debian / Ubuntu do.
#
# Before applying, run your application with the Java command line parameter
#  java -Djavax.net.ssl.trustStorePassword=changeit ...
# to verify that this workaround is relevant to your particular issue.
#
# The parameter by itself can be used as a workaround, as well.

# 1. Save an empty JKS file with the default 'changeit' password for Java cacerts.
#    Use 'printf' instead of 'echo' for Dockerfile RUN compatibility.
/usr/bin/printf '\xfe\xed\xfe\xed\x00\x00\x00\x02\x00\x00\x00\x00\xe2\x68\x6e\x45\xfb\x43\xdf\xa4\xd9\x92\xdd\x41\xce\xb6\xb2\x1c\x63\x30\xd7\x92' > /etc/ssl/certs/java/cacerts

# 2. Re-add all the CA certs into the previously empty file.
/var/lib/dpkg/info/ca-certificates-java.postinst configure

https://github.com/mikaelhg/broken-docker-jdk9-cacerts

डोकर-पुस्तकालय / openjdk / मुद्दों / 145

उबंटू 1769013: कृपया डेबियन अस्थिर (मुख्य) से सीए-प्रमाणपत्र-जावा 20180413 (मुख्य) मर्ज करें

उबंटू 1739631: जेडीके 9 के साथ ताजा इंस्टॉल जेनरेट की गई पीकेसीएस 12 कैकर्ट कीस्टोर फ़ाइल का उपयोग नहीं कर सकता

डेबियन 894979: सीए-सर्टिफिकेट्स-जावा: ओपनजेडीके 9 के साथ काम नहीं करता है, एप्लिकेशन अमान्य एल्गोरिदम पैरामीटर एक्सेप्शन के साथ असफल होते हैं: ट्रस्टएन्चर्स पैरामीटर गैर-खाली होना चाहिए

जेईपी 22 9: डिफ़ॉल्ट रूप से पीकेसीएस 12 कीस्टोर बनाएं

जेडीके -8044445: जेईपी 22 9: डिफ़ॉल्ट रूप से पीकेसीएस 12 कीस्टोर बनाएं

डेबियन सीए-सर्टिफिकेट्स-जावा चेंजलॉग

ca-certificates-java (20180413) unstable; urgency=medium

  * Always generate a JKS keystore instead of using the default format
    (Closes: #894979)
  * Look for Java 10 and Java 11 when detecting the JRE

 -- Emmanuel Bourg <[email protected]>  Fri, 13 Apr 2018 14:15:39 +0200

उबंटू> = 12.10 में, प्रमाणपत्र ca-certificates-java पैकेज में आयोजित किए जाते हैं। आप जिस जेडीके का उपयोग कर रहे हैं उसके बावजूद -Djavax.net.ssl.trustStore = / etc / ssl / certs / java / cacerts का उपयोग करके उन्हें उठाएंगे।


ओएसएक्स मैवरिक्स में अपग्रेड करने के बाद मेरे पास बहुत से सुरक्षा मुद्दे हैं

  • अमेज़ॅन एडब्ल्यूएस के साथ एसएसएल समस्या
  • सहकर्मी मेवेन और ग्रहण के साथ प्रमाणित नहीं है
  • ट्रस्टएन्चर्स पैरामीटर गैर-खाली होना चाहिए

मैंने इस जावा अपडेट को लागू किया और यह मेरे सभी मुद्दों को ठीक कर दिया: http://support.apple.com/kb/DL1572?viewlocale=en_US


दौड़ा

sudo update-ca-certificates -f 

तब प्रमाण फ़ाइल बनाने के लिए

sudo /var/lib/dpkg/info/ca-certificates-java.postinst configure 

और मैं व्यवसाय में वापस आ गया धन्यवाद दोस्तों, एक दयालुता यह स्थापना में शामिल नहीं है लेकिन अंत में वहाँ मिला।


मुझे इस तरह की चीजों की उम्मीद थी, क्योंकि मैं अपने Talend ओपन स्टूडियो में एक वैकल्पिक जेवीएम का उपयोग करता हूं। (इस समय समर्थन केवल jdk1.7 तक मौजूद है) मैं सुरक्षा उद्देश्यों के लिए 8 का उपयोग करता हूं ... वैसे भी

  • अपने प्रमाण पत्र को अद्यतन करें

    सुडो अपडेट-सीए-सर्टिफिकेट्स -एफ

फिर

  • अपने प्रारंभिक पैरामीटर में एक नया मान जोड़ें

    sudo gedit $ (आपके आर्किटेक्चर विशिष्ट ini यानी TOS_DI ... ini)

-Djavax.net.ssl.trustStore = / etc / ssl / प्रमाणपत्र / जावा / cacerts

-Djavax.net.ssl.trustAnchors = / etc / ssl / प्रमाणपत्र / जावा / cacerts

मेरे लिए, दूसरी प्रविष्टि काम किया। मुझे लगता है कि, TOS / TENT + jvm के संस्करण के आधार पर, इसका एक अलग पैरामीटर नाम है, लेकिन एक ही कीस्टोर फ़ाइल की तलाश है


मेरे पास लिनक्स पर जावा 9.0.1 पर यह त्रुटि संदेश था। यह जेडीके की एक ज्ञात बग के कारण था, जहां cacerts फ़ाइल .tar.gz बाइनरी पैकेज में खाली है ( http://jdk.java.net/9/ से डाउनलोड)।

http://www.oracle.com/technetwork/java/javase/9-0-1-relnotes-3883752.html के "ज्ञात समस्याएं" अनुच्छेद http://www.oracle.com/technetwork/java/javase/9-0-1-relnotes-3883752.html , "टीएलएस डिफ़ॉल्ट रूप से ओपनजेडीके 9 पर काम नहीं करता है"

डेबियन / उबंटू (और शायद अन्य डेरिवेटीज़) पर, "सी-प्रमाणपत्र-जावा" पैकेज से कैकरर्ट फ़ाइल को प्रतिस्थापित करने के लिए एक सरल कामकाज है:

sudo apt install ca-certificates-java
cp /etc/ssl/certs/java/cacerts /path/to/jdk-9.0.1/lib/security/cacerts

रेडहाट / सेंटोस पर, आप "सीए-प्रमाणपत्र" पैकेज से भी ऐसा कर सकते हैं:

sudo yum install ca-certificates
cp /etc/pki/java/cacerts /path/to/jdk-9.0.1/lib/security/cacerts

मेरे मामले में क्लाइंट एप्लिकेशन में उपयोग की गई जेकेएस फ़ाइल दूषित हो गई थी। मैंने नया बनाया और इसमें गंतव्य सर्वर एसएसएल प्रमाण पत्र आयात किया। फिर मैं क्लाइंट एप्लिकेशन में ट्रस्ट स्टोर के रूप में नई जेकेएस फ़ाइल का उपयोग करता हूं जैसे:

System.setProperty("javax.net.ssl.trustStore",path_to_your_cacerts_file);

स्रोत: जावा एसएसएल और प्रमाण कुंजीस्टोर

मैं नया जेकेएस बनाने के लिए (कीस्टोर एक्सप्लोरर) टूल का उपयोग करता हूं। आप इस लिंक सेस्टोर एक्सप्लोरर से डाउनलोड कर सकते हैं


मेरे लिए यह नवीनतम संस्करण (2.61) में जेनकिंस प्लगइन "ईमेल एक्सटेंशन प्लगइन" को अपग्रेड करके हल किया गया है। ये 2 प्लगइन्स जेनकींस में ईमेल कॉन्फ़िगरेशन के लिए ज़िम्मेदार हैं- ईमेल एक्सटेंशन प्लगइन ईमेल एक्सटेंशन टेम्पलेट प्लगइन


मैं http://architecturalatrocities.com/post/19073788679/fixing-the-trustanchors-problem-when-running-openjdk-7 से इस समाधान में भाग गया:

ओएस एक्स पर ओपनजेडीके 7 चलाते समय ट्रस्टअनर्स समस्या को ठीक करना। यदि आप ओएस एक्स पर ओपनजेडीके 7 चला रहे हैं और इस अपवाद को देखा है:

Unexpected error: java.security.InvalidAlgorithmParameterException: the trustAnchors
    parameter must be non-empty

एक साधारण फिक्स है, बस उसी कैकर्ट फ़ाइल में लिंक करें जो ऐप्पल के जेडीके 1.6 का उपयोग करता है:

cd $(/usr/libexec/java_home -v 1.7)/jre/lib/security   
ln -fsh /System/Library/Java/Support/CoreDeploy.bundle/Contents/Home/lib/security/cacerts

आपको इंस्टॉल किए गए प्रत्येक ओपनजेडीके संस्करण के लिए ऐसा करने की ज़रूरत है, बस उस संस्करण में -v 1.7 बदलें जिसे आप ठीक करना चाहते हैं। आपके द्वारा इंस्टॉल किए गए सभी जेआरई और जेडीके को देखने के लिए रन /usr/libexec/java_home -V चलाएं।

शायद ओपनजेडीके लोग इसे अपनी इंस्टॉल स्क्रिप्ट में जोड़ सकते हैं।


मैवेरिक में अपग्रेड करने के बाद, मैं जेडीके 1.7 का उपयोग करके ओएसएक्स पर इस सटीक समस्या में भाग गया। मेरे लिए काम करने वाला फिक्स जावा के ऐप्पल संस्करण को फिर से इंस्टॉल करना था, यहां उपलब्ध है: http://support.apple.com/kb/DL1572


यदि आप उबंटू पर जेडीके 9 और मेवेन के साथ इसका अनुभव करते हैं, तो आप यह जेवीएम विकल्प जोड़ सकते हैं - पहले जांचें कि पथ मौजूद है या नहीं:

-Djavax.net.ssl.trustStore=/etc/ssl/certs/java/cacerts

अगर फ़ाइल गुम है, तो सीए-सर्टिफिकेट-जावा स्थापित करने का प्रयास करें जैसा कि किसी ने नोट किया है:

sudo apt install ca-certificates-java

रेडहाट लिनक्स पर मुझे इस मुद्दे को / etc / pki / java / cacerts में certs आयात करके हल किया गया


सीए-सर्टिफिकेट्स-जावा पैकेज को हटाने और इसे फिर से स्थापित करने के लिए मेरे लिए काम किया (उबंटू मेट 17.10)।

sudo dpkg --purge --force-depends ca-certificates-java

sudo apt-get install ca-certificates-java

धन्यवाद, jdstrand: https://bugs.launchpad.net/ubuntu/+source/ca-certificates-java/+bug/983302/comments/1







jenkins