क्या जावा का ट्रस्टमैनेजर कार्यान्वयन किसी प्रमाणपत्र की समयसीमा समाप्त होने पर अनदेखा करता है?
मैंने निम्नलिखित कोशिश की:
- keytool
और पैरामीटर -startdate "1970/01/01 00:00:00"
का उपयोग करके मैंने एक समाप्त प्रमाणपत्र के साथ एक पी 12 कीस्टोर बनाया।समाप्त हो चुके प्रमाणपत्रों पर जावा ट्रस्टमैनगर व्यवहार
Keystore type: PKCS12
Keystore provider: SunJSSE
Your keystore contains 1 entry
Alias name: fake
Creation date: 5 ╠ά± 2011
Entry type: PrivateKeyEntry
Certificate chain length: 1
Certificate[1]:
Owner: CN=Malicious, OU=Mal, O=Mal, L=Fake, ST=GR, C=GR
Issuer: CN=Malicious, OU=Mal, O=Mal, L=Fake, ST=GR, C=GR
Serial number: -1c20
Valid from: Thu Jan 01 00:00:00 EET 1970 until: Fri Jan 02 00:00:00 EET 1970
Certificate fingerprints:
MD5: A9:BE:3A:3D:45:24:1B:4F:3C:9B:2E:02:E3:57:86:11
SHA1: 21:9D:E1:04:09:CF:10:58:73:C4:62:3C:46:4C:76:A3:81:56:88:4D
Signature algorithm name: SHA1withRSA
Version: 3
*******************************************
मैं बिलाव के लिए सर्वर प्रमाणपत्र के रूप में इस प्रमाण पत्र का इस्तेमाल किया: -
मैं प्रमाण पत्र का निर्यात किया।
फिर एक Apache httpclient मैं बिल्ला से जुड़ा का उपयोग कर, लेकिन पहले मैं ग्राहक के विश्वास-स्टोर करने के लिए समाप्ति प्रमाणपत्र जोड़ा (एक TrustManager
TrustManagerFactory tmf = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
का उपयोग करने और समाप्ति प्रमाणपत्र लोड हो रहा है)।
मैं कनेक्शन विफल होने की उम्मीद कर रहा था।
इसके बजाय कनेक्शन सफल होता है।
System.setProperty("javax.net.debug", "ssl");
का उपयोग करना मैं देख रहा हूँ:
***
Found trusted certificate:
[
[
Version: V3
Subject: CN=Malicious, OU=Mal, O=Mal, L=Fake, ST=GR, C=GR
Signature Algorithm: SHA1withRSA, OID = 1.2.840.113549.1.1.5
Key: Sun RSA public key, 1024 bits
modulus: 10350555024148635338735220482157687267055139906998169922552357357346372886164908067983097037540922519808845662295379579697361784480052371935565129553860304254832565723373586277732296157572040989796830623403187557540749531267846797324326299709274902019299
public exponent: 65537
Validity: [From: Thu Jan 01 00:00:00 EET 1970,
To: Fri Jan 02 00:00:00 EET 1970]
Issuer: CN=Malicious, OU=Mal, O=Mal, L=Fake, ST=GR, C=GR
SerialNumber: [ -1c20]
]
मैं देख रहा हूँ टीएलएस में हाथ मिलाना कि समाप्ति प्रमाणपत्र बिलाव कनेक्टर द्वारा भेज रहा है।
लेकिन ग्राहक (यानी ट्रस्टमैनेजर) कनेक्शन को अस्वीकार नहीं करता है।
क्या यह डिफ़ॉल्ट व्यवहार है?
क्या मुझे लगता है कि किसी भी तरह से ट्रस्टमैनर को समाप्ति की जांच करने के लिए कॉन्फ़िगर करना है?
अद्यतन:
मैंने पाया कि वास्तविक इस्तेमाल किया TrustManager X509TrustManagerImpl है। यहां X509TrustManagerImpl कहता है कि इस वर्ग में कम से कम तर्क है। क्या मैं गलत ट्रस्टमैनेजर का उपयोग कर रहा हूं?
UPDATE2: जावाडोक X509TrustManager से यह स्पष्ट नहीं है कि यह प्रमाण पत्र समाप्ति
void checkServerTrusted(X509Certificate[] chain,String authType)
throws CertificateException
आंशिक या पूर्ण प्रमाण पत्र सहकर्मी द्वारा प्रदान की श्रृंखला को देखते हुए की जांच करता है, एक प्रमाण पत्र पथ का निर्माण पर विश्वसनीय रूट और वापसी करें यदि यह मान्य हो सकता है और के लिए विश्वसनीय है प्रामाणिक पर आधारित SSL प्रमाणीकरण एटियन प्रकार। प्रमाणीकरण प्रकार कुंजी एक्सचेंज एल्गोरिदम सिफर सूट का हिस्सा स्ट्रिंग के रूप में प्रतिनिधित्व किया गया है, जैसे "आरएसए", "DHE_DSS"। नोट: कुछ निर्यात करने योग्य सिफर सूट के लिए, कुंजी एक्सचेंज एल्गोरिदम हैंडशेक के दौरान रन टाइम पर निर्धारित किया जाता है। उदाहरण के लिए, TLS_RSA_EXPORT_WITH_RC4_40_MD5 के लिए, AuthType होना चाहिए RSA_EXPORT जब एक अल्पकालिक RSA कुंजी कुंजी आदान प्रदान के लिए प्रयोग किया जाता है, और आरएसए जब से कुंजी सर्वर प्रमाणपत्र प्रयोग किया जाता है। जांच केस-संवेदी है।
धन्यवाद
क्या आपको कोई समाधान मिला है, टॉमैक्ट चेक सर्टिफिकेट की समाप्ति को कैसे बल दिया जाए? कोई मौजूदा अन्य 'X509TrstManager' कार्यान्वयन जो यह करता है? – Andremoniy
@Andremoniy: आपको अपना खुद का कस्टम ट्रस्ट मैनेजर – Cratylus