java.security.cert.CertificateException: प्रमाणपत्र एल्गोरिदम बाधाओं के अनुरूप नहीं है




ssl java-7 (8)

फेडोरा 28 पर, बस लाइन पर ध्यान दें

security.useSystemPropertiesFile सच =

java.security गुणों का।

फेडोरा 28 ने अक्षम एल्गोरिदम नियंत्रण की बाहरी फ़ाइल पेश की

/etc/crypto-policies/back-ends/java.config

आप इस बाहरी फ़ाइल को संपादित कर सकते हैं या आप इसे java.security से बाहर कर सकते हैं।

मेरे पास एक मैपिंग एप्लिकेशन है जो एक यूआरएल दिया गया आर्कजीआईएस 9.3+ बेस मैप्स जोड़ सकता है। उन यूआरएल में से एक जो मैं जोड़ना चाहता हूं वह ग्राहक के यूआरएल से है और सुरक्षित है। मेरा मैपिंग एप्लिकेशन पहले जावा 6 का उपयोग कर रहा था और बिना किसी समस्या के सुरक्षित यूआरएल जोड़ने में सक्षम था। अब मैं जावा 7 में अपग्रेड कर चुका हूं और एक प्राप्त कर रहा हूं

"java.security.cert.CertificateException: Certificates does not conform to algorithm constraints"

अपवाद। सबसे पहले, मुझे विश्वास है कि यह मामला है क्योंकि जावा 7 में, डिफ़ॉल्ट रूप से, SSL प्रमाणपत्रों पर हस्ताक्षर करने के लिए MD2 एल्गोरिदम अक्षम है। आप इसे java.security फ़ाइल में देख सकते हैं:

"jdk.certpath.disabledAlgorithms=MD2"

लेकिन जब मैं उस यूआरएल के Certification Signature Algorithm की जांच करता हूं, तो यह SHA-1 कहता है। और भी अजीब बात यह है कि अगर मैं java.security फ़ाइल में "jdk.certpath.disabledAlgorithms=MD2" पंक्ति को टिप्पणी करता हूं, तो यूआरएल कोई समस्या नहीं करेगा। एसएसएल प्रक्रिया के दौरान MD2 कहीं और इस्तेमाल किया जाता है? क्या मुझसे कोई चूक हो रही है?


यह संभवतः हो रहा है क्योंकि आपकी सर्टिफिकेट श्रृंखला के साथ कहीं आपके पास प्रमाणपत्र है, अधिक पुरानी जड़, जो अभी भी एमडी 2 आरएसए अल्गोरिथम के साथ हस्ताक्षरित है।

आपको इसे अपने प्रमाणपत्र स्टोर में ढूंढने और इसे हटाने की आवश्यकता है।

फिर अपने प्रमाणन प्राधिकरण पर वापस आएं और उन्हें फिर नई रूट के लिए पूछें।

यह वही वैधता अवधि के साथ एक ही रूट होगा, लेकिन इसे SHA1RSA के साथ पुन: प्रस्तुत किया गया है।

उममीद है कि इससे मदद मिलेगी।



चूंकि यह परिणाम पहला है कि Google इस त्रुटि के लिए लौटाता है, मैं बस यह जोड़ूंगा कि यदि कोई भी वैश्विक फ़ाइल java.security को बदलने के बिना जावा सुरक्षा सेटिंग्स को बदलता है (उदाहरण के लिए आपको कुछ परीक्षण चलाने की आवश्यकता है), तो आप कर सकते हैं बस JVM पैरामीटर -Djava.security.properties = your / file / path द्वारा एक ओवरराइडिंग सुरक्षा फ़ाइल प्रदान करें जिसमें आप अक्षमताओं को ओवरराइड करके आवश्यक एल्गोरिदम सक्षम कर सकते हैं।


ग्रहण एसवीएन https भंडार से कनेक्ट करने में असफल रहा (एसएसएल / टीएलएस का उपयोग कर किसी भी ऐप पर भी लागू होना चाहिए)।

svn: E175002: कनेक्शन बंद कर दिया गया है: javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateException: प्रमाणपत्र एल्गोरिदम बाधाओं के अनुरूप नहीं है

यह मुद्दा नवीनतम जावा 8 ओपनजेडीके अपडेट के कारण हुआ था जो एमडी 5 संबंधित एल्गोरिदम अक्षम कर दिया गया था। जब तक नए प्रमाणपत्र जारी नहीं किए जाते हैं तब तक कामकाज के रूप में (यदि कभी भी), java.security फ़ाइल पर निम्न कुंजी बदलें

चेतावनी
ध्यान रखें कि इसमें सुरक्षा प्रभाव हो सकते हैं क्योंकि अक्षम एल्गोरिदम को कमजोर माना जाता है। एक विकल्प के रूप में, इस परिवर्तन के साथ बाह्य java.security फ़ाइल का उपयोग करने के लिए कमांड लाइन विकल्प द्वारा JVM आधार पर वर्कअराउंड लागू किया जा सकता है, उदाहरण के लिए:
java -Djava.security.properties=/etc/sysconfig/noMD5.java.security
ग्रहण के लिए , eclipse.ini नीचे -vmargs पर एक लाइन जोड़ें
-Djava.security.properties=/etc/sysconfig/noMD5.java.security

मूल कुंजी

jdk.certpath.disabledAlgorithms=MD2, MD5, RSA keySize < 1024
jdk.tls.disabledAlgorithms=SSLv3, RC4, MD5withRSA, DH keySize < 768

में बदलो

jdk.certpath.disabledAlgorithms=MD2, RSA keySize < 1024
jdk.tls.disabledAlgorithms=SSLv3, RC4, DH keySize < 768

java.security फ़ाइल linux 64 में /usr/lib64/jvm/java/jre/lib/security/java.security पर स्थित है


सहयोगियों।

मुझे हमारे आरईएसटी एपीआई के लिए स्वचालन परीक्षण के विकास के दौरान इस समस्या का सामना करना पड़ा है। जेडीके 7_80 केवल मेरी मशीन पर स्थापित किया गया था। जेडीके 8 स्थापित करने से पहले, सबकुछ ठीक काम करता था और मुझे JMeter साथ JMeter 2.0 टोकन प्राप्त करने की संभावना थी। जेडीके 8 स्थापित करने के बाद, Certificates does not conform to algorithm constraints साथ दुःस्वप्न Certificates does not conform to algorithm constraints

जेएमटर और शांति दोनों में टोकन प्राप्त करने की संभावना नहीं थी। अनुरोध करने के लिए जेएमटर जेडीके लाइब्रेरी का उपयोग करता है। लाइब्रेरी केवल एक अपवाद उठाती है जब अनुरोध को अनदेखा करते हुए लाइब्रेरी कॉल का उपयोग अंतराल से कनेक्ट करने के लिए किया जाता है।

अगली बात सभी java.security फ़ाइलों में अक्षम एल्गोरिदम को समर्पित सभी लाइनों पर टिप्पणी करना था।

C:\Java\jre7\lib\security\java.security
C:\Java\jre8\lib\security\java.security
C:\Java\jdk8\jre\lib\security\java.security
C:\Java\jdk7\jre\lib\security\java.security

फिर यह आखिरकार काम करना शुरू कर दिया। मुझे पता है, यह एक क्रूर बल दृष्टिकोण है, लेकिन इसे ठीक करने का यह सबसे आसान तरीका था।

# jdk.tls.disabledAlgorithms=SSLv3, RC4, MD5withRSA, DH keySize < 768
# jdk.certpath.disabledAlgorithms=MD2, MD5, RSA keySize < 1024

मेरे पास SOAP-UI में यह समस्या है और ऊपर कोई भी समाधान मेरी मदद नहीं करता है।

मेरे लिए उचित समाधान जोड़ना था

-Dsoapui.sslcontext.algorithm = TLSv1

vmoptions फ़ाइल में (मेरे मामले में यह था ... \ SoapUI-5.4.0 \ bin \ SoapUI-5.4.0.vmoptions)


पृष्ठभूमि

एमडी 2 व्यापक रूप से असुरक्षित के रूप में पहचाना गया था और इस प्रकार जावा में संस्करण जेडीके 6u17 में अक्षम किया गया था (रिलीज नोट्स http://www.oracle.com/technetwork/java/javase/6u17-141447.html , "प्रमाणपत्र श्रृंखला सत्यापन में एमडी 2 अक्षम करें") , साथ ही JDK 7, कॉन्फ़िगरेशन के अनुसार आपने java.security में इंगित किया है।

Verisign md2WithRSAEncryption हस्ताक्षर एल्गोरिदम के साथ कक्षा 3 रूट प्रमाणपत्र का उपयोग कर रहा था (धारावाहिक 70:ba:e4:1d:10:d9:29:34:b6:38:ca:7b:03:cc:ba:bf ), लेकिन बहिष्कृत यह और उसी कुंजी और नाम के साथ इसे दूसरे प्रमाणपत्र के साथ बदल दिया, लेकिन एल्गोरिदम sha1WithRSAEncryption साथ हस्ताक्षर किए। हालांकि, कुछ सर्वर अभी भी एसएसएल हैंडशेक के दौरान पुराने एमडी 2 हस्ताक्षरित प्रमाणपत्र भेज रहे हैं (विडंबना यह है कि, मैं Verisign द्वारा चलाए गए सर्वर के साथ इस समस्या में भाग गया!)।

आप यह सत्यापित कर सकते हैं कि यह मामला है:

openssl s_client -showcerts -connect <server>:<port>

जेडीके के हाल के संस्करण (जैसे 6u21 और 7 के सभी रिलीज़ संस्करण) को इस समस्या को स्वचालित रूप से एक ही जारीकर्ता और सार्वजनिक कुंजी के साथ एक विश्वसनीय एंकर (डिफ़ॉल्ट रूप से cacerts में) के साथ certs को हटाकर resolve करना चाहिए।

यदि आपके पास अभी भी नए जेडीके के साथ यह समस्या है

जांचें कि क्या आपके पास पुराने X509TrustManager इंटरफ़ेस को लागू करने वाला कस्टम ट्रस्ट मैनेजर है या नहीं। जेडीके 7+ को इस इंटरफ़ेस के साथ संगत माना जाना चाहिए, हालांकि मेरी जांच के आधार पर ट्रस्ट मैनेजर नए X509ExtendedTrustManager ( docs ) के बजाय X509TrustManager लागू करता है, X509ExtendedTrustManager अपने स्वयं के रैपर ( X509ExtendedTrustManager ) का उपयोग करता है और किसी भी तरह से इस समस्या के लिए आंतरिक फ़िक्स को छोड़ देता है ।

समाधान है:

  1. डिफ़ॉल्ट ट्रस्ट प्रबंधक का उपयोग करें, या

  2. X509ExtendedTrustManager सीधे (एक साधारण परिवर्तन) का विस्तार करने के लिए अपने कस्टम ट्रस्ट मैनेजर को संशोधित करें।







arcgis-server