डोमेन और उप-डोमेन के लिए स्व-हस्ताक्षरित प्रमाणपत्र बनाना - NET :: ERR_CERT_COMMON_NAME_INVALID


82

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

Common Name: *.myserver.net/CN=myserver.net

हालाँकि, इस प्रमाणपत्र को विश्वसनीय रूट प्रमाणन प्राधिकरण में आयात करने के बाद, मुझे NET::ERR_CERT_COMMON_NAME_INVALIDChrome में मुख्य डोमेन और उसके सभी उप-डोमेन के लिए त्रुटि हो रही है , उदाहरण के लिए: https://sub1.myserver.netऔर https://myserver.net

यह सर्वर यह साबित नहीं कर सका कि यह myserver.net है; इसका सुरक्षा प्रमाणपत्र * .myserver.net / CN = myserver.net से है।

यह गलत कनेक्शन या आपके कनेक्शन को बाधित करने वाले हमलावर के कारण हो सकता है।

क्या सामान्य नाम फ़ील्ड में कुछ गलत है जो इस त्रुटि का कारण बन रहा है?


इसे ठीक करने में भी काफी समय लगा दिया। मेरा जवाब यहाँ देखें stackoverflow.com/questions/42816218/…
एलेक्स वासिलेव

जवाबों:


20

जैसा कि राहुल ने कहा, यह एक सामान्य क्रोम और एक OSX बग है। मैं पिछले दिनों इसी तरह के मुद्दे रख रहा था। वास्तव में मैं अंततः 2 बनाने में थक गया [हाँ मुझे पता है कि यह कई नहीं है] काम के लिए एक स्थानीय साइट का परीक्षण करते समय अतिरिक्त क्लिक।

इस समस्या के संभावित समाधान के लिए [विंडोज़ का उपयोग करते हुए], मैं उपलब्ध कई स्वयं हस्ताक्षर प्रमाण पत्र उपयोगिताओं में से एक का उपयोग करूंगा ।

अनुशंसित कदम:

  1. एक स्व हस्ताक्षरित प्रमाण पत्र बनाएँ
  2. Windows प्रमाणपत्र प्रबंधक में प्रमाणपत्र आयात करें
  3. Chrome प्रमाणपत्र प्रबंधक में आयात प्रमाणपत्र
    नोट: चरण 3 Google द्वारा बग को संबोधित करने के बाद अनुभवी समस्या का समाधान करेगा ... समय में बासी होने पर विचार करने योग्य भविष्य में कोई ईटीए नहीं है। **

    जितना मैं क्रोम के लिए उपयोग करना पसंद करता हूं । विकास, मैंने खुद को हाल ही में फ़ायरफ़ॉक्स डेवलपर संस्करण में पाया है । जिसके पास यह मुद्दा नहीं है।

    उम्मीद है की यह मदद करेगा :)

आपके द्वारा जोड़ा गया बग A) केवल OS X के लिए मान्य है, और B) एक अनुगामी के साथ डोमेन की चिंता करता है ",", जिनमें से कोई भी @Zed के लिए मान्य नहीं हैं।
फिलिप

हम्म जो लिंक होगा?
थॉमस। ऑनलाइन

क्रोमियम बग (98627) के लिए लिंक
फिलिप

भले ही मैंने विंडोज पर काम करने का प्रस्ताव ठीक किया हो, क्योंकि मैंने कई बार इसका इस्तेमाल किया है।
थॉमस डनली

"मैं जितना विकास के लिए क्रोम का उपयोग करना पसंद करता हूं, मैंने खुद को फ़ायरफ़ॉक्स डेवलपर संस्करण में हाल ही में पाया है। जिसमें यह मुद्दा नहीं है।" यहाँ अधिक सहमत नहीं हो सका ..
ऐश

58

Chrome 58 ने विषय वैकल्पिक नाम के बिना प्रमाणपत्र के लिए समर्थन छोड़ दिया है

आगे बढ़ते हुए, यह आपके द्वारा इस त्रुटि का सामना करने का एक और कारण हो सकता है।


2
इस गाइड ने मुझे मैक ओएसएक्स पर एक स्व-हस्ताक्षरित प्रमाण पत्र बनाने में मदद की: अलेक्जेंडरज़िटलर.
com

1
विषय वैकल्पिक नामों के बारे में कुछ भी कहने में त्रुटि के बावजूद, इसने मेरा मुद्दा ठीक कर दिया। धन्यवाद!
शार्पिरो

26

एक वैकल्पिक हल उन डोमेन नामों को जोड़ना है जिन्हें आप "subjectAltName" (X509v3 विषय वैकल्पिक नाम) के रूप में उपयोग करते हैं। यह आपके ओपनएसएसएल कॉन्फ़िगरेशन ( /etc/ssl/openssl.cnfलिनक्स पर) को बदलकर किया जा सकता है और v3_reqइस तरह दिखने के लिए अनुभाग को संशोधित कर सकता है :

[ v3_req ]

# Extensions to add to a certificate request

basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
subjectAltName = @alt_names

[alt_names]
DNS.1 = myserver.net
DNS.2 = sub1.myserver.net

इसके साथ, -extensions v3_reqअपना नया प्रमाणपत्र बनाते समय स्विच का उपयोग करना न भूलें । (यह भी देखें कि मैं OpenSSL का उपयोग करके SubjectAltName के साथ स्व-हस्ताक्षरित प्रमाण पत्र कैसे बना सकता हूं? )


1
subjectAltName = @alt_namesमेरे मुद्दे को पूरी तरह से हल करने का उपयोग । मैंने पूर्व में DNS पहचान को अपने डोमेन पर प्रदान किया था, हालांकि इसे प्रदान कर रहा था CN=*.example.com। सेटिंग DNS.1 = example.comऔर DNS.2 = *.example.comचालबाजी की। अजीब बात (मेरे लिए) यह थी कि यह सब ~ 2017-03-17 तक काम करता था और एक दिन बाद बंद हो गया था (विंडोज यूडेट्स का एक बड़ा बैच चला था)। लिनक्स पर मेरे लिए कुछ भी नहीं टूटा, हालांकि, यह केवल क्रोम , विंडोज पर फ़ायरफ़ॉक्स था ।
बॉसी

@bossi: दुर्भाग्य से मुझे Chrome / Ubuntu पर यह समस्या है। और प्रमाणित कुछ भी नहीं है फैंसी, सिंगल होस्ट, सिंगल डीएन (आंतरिक गिटलैब रिपॉजिटरी)।
पावेल कोस्सेवस्की

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

2
@bossi मैं शर्त लगाता हूं कि आपका विंडोज संस्करण बीटा ट्रैक पर है, है ना? Chrome ने subjectAltName Chrome 58 की तरह ही बिना वर्तमान में बीटा को हटाए हुए सेरेक्ट किया है। यह थोड़ा मुश्किल है क्योंकि न केवल मैंने इसके बारे में कुछ भी नहीं देखा था, लेकिन त्रुटि नाम बहुत भ्रामक है (यह सामान्य नाम नहीं है जो अमान्य है!) मैं आपके विपरीत था। यह केवल मेरे लिए लिनक्स पर हुआ था इसलिए मैंने वहां अपने स्थानीय प्रमाणित स्टोर को ठीक करने के लिए घंटों बिताए।
टोबियास जे

2
@ टोबिज 58.0.3029.19 beta (64-bit)यह है। मैंने सही subjectAltName-s के साथ प्रमाणित पेड़ को पुनर्जीवित किया है और अब सब कुछ काम करता है। और मैं मानता हूं, त्रुटि संदेश बहुत भ्रामक है, क्योंकि ऐसा नहीं है CommonNameकि यह अमान्य है। यदि संदेश पढ़ा "प्रमाणपत्र एक उचित याद आ रही है subjectAltName" , हर कोई बहुत अधिक खुशी होगी।
Pawel Kraszewski

18

openssl.confफ़ाइल बनाएँ :

[req]
default_bits = 2048
default_keyfile = oats.key
encrypt_key = no
utf8 = yes
distinguished_name = req_distinguished_name
x509_extensions = v3_req
prompt = no

[req_distinguished_name]
C = US
ST = Cary
L = Cary
O  = BigCompany
CN = *.myserver.net

[v3_req]
keyUsage = critical, digitalSignature, keyAgreement
extendedKeyUsage = serverAuth
subjectAltName = @alt_names

[alt_names]
DNS.1 = myserver.net
DNS.2 = *.myserver.net

इस कॉमन को चलाएं:

openssl req -x509 -sha256 -nodes -days 3650 -newkey rsa:2048 -keyout app.key -out app.crt  -config openssl.conf

आउटपुट फाइलें app.crtऔर app.keyमेरे लिए काम करते हैं।


2
में एक टाइपो है DNS.1 = *.myserver.net। होना चाहिए DNS.2 = *.myserver.net। मेरे लिए बस ठीक काम करता है।
आर्टेम स्टेपिन

2
यदि आप खिड़कियों पर हैं, तो यह व्यवस्थापक के रूप में चल रहे cmd का उपयोग करके इंस्टॉल किए गए Opensl का उपयोग करके किया जा सकता है और निम्न स्थान: "C: \ Program Files \ Git \ usr \ bin \ खुलता है। exe" req -x509 -sha256 -nodes -दिसंबर 3650 -newkey rsa: 2048 -keyout app.key -out app.crt -config opensl.conf
जॉर्ज

मैंने CN = localhost, DNS.1 = localhost, DNS.2 = * .localhost: 8080 लिखा है और यह मेरे लिए काम नहीं कर रहा है। मुझे और क्या बदलना चाहिए?
एसकरौर्थ 19

14

आपका वाइल्डकार्ड रूट डोमेन को कवर नहीं*.example.com करता है, लेकिन उप- डोमेन पर किसी भी प्रकार को कवर करेगा जैसे कि याexample.comwww.example.comtest.example.com

पसंदीदा तरीका है कि फैबियन के उत्तर में सब्जेक्ट अल्टरनेटिव नेम्स को स्थापित किया जाए, लेकिन ध्यान रखें कि क्रोम को वर्तमान में सब्जेक्ट अल्टरनेटिव नेम्स में से एक के रूप में अतिरिक्त रूप से सूचीबद्ध करने की आवश्यकता है (क्योंकि यह उसके उत्तर में सही ढंग से प्रदर्शित है)। मैंने हाल ही में इस समस्या का पता लगाया क्योंकि मेरे पास example.comSAN के साथ कॉमन नाम था www.example.comऔर test.example.com, लेकिन NET::ERR_CERT_COMMON_NAME_INVALIDक्रोम से चेतावनी मिली । मुझे example.comकॉमन नाम और SAN दोनों में से एक के साथ एक नया प्रमाणपत्र हस्ताक्षर अनुरोध उत्पन्न करना था । तब क्रोम ने पूरी तरह से प्रमाण पत्र पर भरोसा किया। और वेबसाइटों की पहचान के लिए एक विश्वसनीय प्राधिकारी के रूप में क्रोम में रूट प्रमाणपत्र आयात करना न भूलें।


यदि इसे पढ़ने वाला कोई भी व्यक्ति होस्टिंग के लिए पैनथॉन का उपयोग करता है, तो वे इस समस्या को बनाते हुए आपके प्लेटफ़ॉर्म में अपलोड करते समय आपके सर्टिफ़िकेट से जुड़े सामान्य नाम को पुनर्गठित करते हैं। आपको कस्टम स्टैटिक आईपी के खिलाफ परीक्षण करना होगा जो वे यह देखने के लिए देते हैं कि क्या सेटअप के दौरान सर्टिफिकेट का सामान्य नाम बरकरार था।
सेराओसे

1
प्रतिभाशाली! "आपका वाइल्डकार्ड * .example.com रूट डोमेन example.com को कवर नहीं करता है, लेकिन www.example.com या test.example.com जैसे उप-डोमेन पर किसी भी प्रकार को कवर करेगा।" यह मेरे मामले में समस्या थी। ठीक बस दोनों शामिल करना था DNS.1 = example.comऔर DNS.2 = *.example.comके तहत [alt_names]में openssl.cnf
बेन जॉनसन

5

मुझे लगता है कि यह क्रोम में बग हो सकता है। कुछ समय पहले एक ऐसा ही मुद्दा था: इसे देखें।

एक अलग ब्राउज़र में प्रयास करें। मुझे लगता है कि यह ठीक काम करना चाहिए।


1

हर कोई जो इसका सामना कर रहा है और इसे जांचने के लिए जोखिम को स्वीकार करना चाहता है, एक समाधान है: क्रोम में इंकॉग्निटो मोड पर जाएं और आप "उन्नत" को खोलने में सक्षम होंगे और "प्रोसीड टू some.url" पर क्लिक करेंगे।

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

बेशक यह उत्पादन में किसी वेबसाइट का उपयोग करने के लिए नहीं है, जहां यह त्रुटि इंगित करती है कि वेबसाइट सुरक्षा में कोई समस्या है।


0

यदि आप इस त्रुटि से थक गए हैं। आप क्रोम को इस तरह से कार्य नहीं कर सकते हैं। मैं यह नहीं कह रहा हूं कि यह सिर्फ एक तरीका है।

वर्कअराउंड के रूप में, Google Chrome को होस्टनाम से मिलान करने के लिए एक सर्वर सर्टिफिकेट के सामान्य नाम का उपयोग करने के लिए Google Chrome को अनुमति देने के लिए एक विंडोज़ रजिस्ट्री कुंजी बनाई जा सकती है, यदि प्रमाण पत्र एक विषय-वस्तु एक्सटेंशन को याद नहीं कर रहा है, जब तक कि यह स्थानीय रूप से स्थापित CA के लिए सफलतापूर्वक मान्य और चेन नहीं करता है। प्रमाण पत्र।

डेटा प्रकार: बूलियन [विंडोज: REG_DWORD] विंडोज रजिस्ट्री स्थान: HKEY_LOCAL_MACHINE \ SOFTWARE \ नीतियां \ Google \ Chrome विंडोज / मैक / लिनक्स / एंड्रॉइड प्राथमिकता नाम: EnableCommonNameFallbackor.orLocalAnchors मूल्य: 0x00000001 (Windows), true (लिनक्स) (Android) (मैक) एक विंडोज रजिस्ट्री कुंजी बनाने के लिए, बस इन चरणों का पालन करें:

नोटपैड को खोलें और निम्न सामग्री को नोटपैड विंडोज रजिस्ट्री एडिटर संस्करण 5.00 में पेस्ट करें

[HKEY_LOCAL_MACHINE \ SOFTWARE \ नीतियां \ Google \ Chrome] "EnableCommonNameFallbackForLocalAnchors" = dword: 00000001 फ़ाइल पर जाएं> फ़ाइल के रूप में सहेजें: anyfilename.reg इस प्रकार को सहेजें: सभी फ़ाइलें

फ़ाइल के लिए पसंदीदा स्थान का चयन करें

सहेजें पर क्लिक करें

चलाने के लिए सहेजी गई फ़ाइल पर डबल क्लिक करें

रजिस्ट्री संपादक की चेतावनी पर हां पर क्लिक करें

सिमेंटेक सपोर्ट पेज पर यह जानकारी मिली: https://support.symantec.com/en_US/article.TECH240507.html


0

स्थानीय विकास और परीक्षण के लिए PWA बनाते समय प्रदान किए गए उत्तर मेरे (क्रोम या फ़ायरफ़ॉक्स) काम नहीं आए। उत्पादन के लिए उपयोग न करें! मैं निम्नलिखित का उपयोग करने में सक्षम था:

  1. निम्नलिखित विकल्पों के साथ ऑनलाइन प्रमाणपत्र उपकरण साइट:
    • आम नाम: 192.168.1.12 जैसे "लोकलहोस्ट" और अपने सिस्टम के आईपी दोनों को जोड़ें
    • विषय वैकल्पिक नाम: "DNS" = "लोकलहोस्ट" और "आईपी" = जोड़ें <your ip here, e.g. 192.168.1.12>
    • "सीआरएस" ड्रॉप डाउन विकल्प "सेल्फ साइन" पर सेट
    • अन्य सभी विकल्प चूक थे
  2. सभी लिंक डाउनलोड करें
  3. आयात .p7b डबल क्लिक करके विंडोज में प्रमाणित करें और "इंस्टॉल" / OSX का चयन करें ? / लिनक्स?
  4. Google के PWA उदाहरण का उपयोग करके ऐप्स को नोड में जोड़ा गया ...
    • जोड़ना const https = require('https'); const fs = require('fs');server.js फ़ाइल के शीर्ष पर
    • टिप्पणी दें return app.listen(PORT, () => { ... });server.js फ़ाइल के नीचे
    • नीचे जोड़ें https.createServer({ key: fs.readFileSync('./cert.key','utf8'), cert: fs.readFileSync('./cert.crt','utf8'), requestCert: false, rejectUnauthorized: false }, app).listen(PORT)

मुझे क्रोम या फ़ायरफ़ॉक्स में कोई अधिक त्रुटि नहीं है

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.