OpenSSL: एक CSR को इंटरेक्टिवली सॉल्व्ड सब्जेक्ट अल्टरनेटिव नेम (SANs) के साथ कैसे जनरेट करें?


11

मैं ओपनएसएसएल को कॉन्फ़िगर करना चाहता हूं, जब openssl req -newएक नया प्रमाणपत्र हस्ताक्षर अनुरोध उत्पन्न करने के लिए चल रहा है, तो मुझे सीएसआर पर शामिल करने के लिए किसी भी वैकल्पिक विषय नामों के लिए प्रेरित किया गया है।

मैंने इस लाइन को अपने [req_attributes]सेक्शन में जोड़ा है openssl.cnf:

subjectAltName                  = Alternative subject names

यह वांछित प्रभाव है कि मैं अब CSR उत्पन्न करते समय SAN के लिए प्रेरित हूँ:

$ openssl req -new -out test.csr -key ./test.key                            <<<
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [US]:
State or Province Name (full name) [New York]:
Locality Name (eg, city) []:
Organization Name (eg, company) [Example Co]:
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:test.example.com
Email Address []:

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
Alternative subject names []:DNS:alt1.example.com

उपरोक्त उदाहरण में, मैंने DNS:alt1.example.comSAN के लिए संकेत दिए जाने पर प्रवेश किया है ।

समस्या यह है कि परिणामी CSR अच्छी तरह से स्वरूपित नहीं होता है:

$ openssl req -text -in ./test.csr
Certificate Request:
    Data:
        Version: 0 (0x0)
        Subject: C=US, ST=New York, O=The Banes, CN=test.thebanes.org
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                Public-Key: (2048 bit)
                Modulus:
                    [...]
                Exponent: 65537 (0x10001)
        Attributes:
            X509v3 Subject Alternative Name:unable to print attribute

ओपनएसएसएल की शिकायत है कि यह विषय वैकल्पिक नाम विशेषता के मूल्य को प्रिंट करने में असमर्थ है। ऑनलाइन उदाहरणों से (जहां लोग अपने ओपनएसएल.एनएफ में एसएएन को हार्ड-कोड करते हैं, बजाय इसके कि मैं उनके लिए अंतःक्रियात्मक रूप से संकेत देना चाहता हूं), मैं इसके बजाय इसे देखने की उम्मीद करता हूं:

        Attributes:
            X509v3 Subject Alternative Name:
                DNS:alt1.example.com

तो, मैं संवादात्मक रूप से संकेतित SAN के साथ एक अच्छी तरह से गठित CSR कैसे उत्पन्न कर सकता हूं?


दुर्भाग्य से मुझे लगता है कि "शुद्ध" के साथ ऐसा करने का कोई समाधान नहीं है openssl- आपको एक ऐसी स्क्रिप्ट की आवश्यकता होगी जो इसके लिए अपनी कॉन्फ़िगर फ़ाइल को मंगा ले। :( PS एक गैर-संवादात्मक तरीके से ऐसा करने का एक सिद्ध समाधान यहां है: stackoverflow.com/a/9158662/2693875
ग्रेग डबिकि

जवाबों:


4

मैं अपने आप को इस छोटे से डली के साथ जूझ रहा हूँ ... क्या एक PITA!

मेरा समाधान: मैंने सभी Opensl.cnf फ़ाइल को टेम्प्लेट टूलकिट फ़ाइल में स्थानांतरित कर दिया है, जिसमें केवल संस टुकड़ा को प्रतिस्थापन टुकड़ा के रूप में छोड़ दिया गया है, फिर उसके चारों ओर एक पर्ल स्क्रिप्ट लिपटी है।

पर्ल स्क्रिप्ट SANs प्रविष्टियों के लिए संकेत देती है, फिर उन्हें टेम्पलेट में सम्मिलित करती है, टेम्पलेट को एक अस्थायी फ़ाइल में सहेजती है और फिर मैं अस्थायी फ़ाइल के साथ Opensl req को कॉल करता है जिसे अस्थायी फ़ाइल में इंगित किया गया है। CSR उत्पन्न होने के बाद अस्थायी फ़ाइल को छोड़ दें।

आप यह भी देखना चाह सकते हैं: http://www.openssl.org/docs/apps/config.html

ऐसे अन्य लोग हैं जो $ ENV को निष्पादन से पहले ही ओवरराइड करते हैं और पर्ल या शेल में ओप्सनल रीक पर कॉल को लपेटते हैं और उसी चीज को थोड़े अधिक कुशल तरीके से पूरा करते हैं: http://blog.loftninjas.org/2008/11/11/ को विन्यस्त-ssl-अनुरोध-साथ-subjectaltname-साथ-openssl /


$ ENV समाधान मेरे लिए काम नहीं किया। :(
ग्रेग डबिकि

2

मैं भी इसका हल ढूंढ रहा हूं। और यह वह है, जो आप चाहते हैं:

[req]
default_bits      = 2048
default_key_file  = private.key.pem
...
...
attributes        = req_attributes

[req_attributes]
subjectAltName = Alternative DNS names, Email adresses or IPs (comma seperated list)
#optional default value
subjectAltName_default = DNS:myhost.com.au,IP:127.0.0.1,EMAIL:my@here.org

और आप वैकल्पिक विषय नाम के लिए इसे तुरंत प्राप्त कर सकते हैं :)

#openssl req -in mytest1/temp.csr.pem -noout -text
    Certificate Request:
    Data:
        Version: 0 (0x0)
        Subject: C=DE, ST=Sachsen, L=Heidenau, O=IT Rab\xC3\xB6se, OU=ssl
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
            RSA Public Key: (1024 bit)
                Modulus (1024 bit):
                    00:d8:cd:14:ca:d0:06:6c:8c:11:e9:52:bc:46:39:
                    c1:cf:5a:6e:dd:3b:a8:85:15:6b:13:82:82:4a:48:
                    cb:53:ea:70:ea:f4:02:b2:ef:b1:41:b2:d7:11:c7:
                    11:ba:07:1b:be:8c:30:bc:60:d2:82:83:a1:e1:19:
                    75:3b:69:03:01:3c:2b:7b:85:f4:2e:a9:58:68:8f:
                    0e:f4:5e:50:e1:3f:9e:cf:46:a0:eb:69:aa:1e:cb:
                    3a:99:cb:1d:93:60:d0:3b:38:96:87:45:19:51:f4:
                    40:72:e5:a7:5e:62:37:41:44:48:64:47:95:14:97:
                    4f:27:d0:0c:e7:6f:c1:e1:37
                Exponent: 65537 (0x10001)
        Attributes:
            X509v3 Subject Alternative Name:DNS:www.google.de,EMAIL:im@you.org
    Signature Algorithm: sha1WithRSAEncryption
        9d:2b:e4:eb:1b:c0:b6:0b:b4:62:a7:4d:01:68:98:68:36:98:
        1e:e9:bc:59:24:0f:1b:32:7b:da:9d:39:a4:0f:2c:70:3e:aa:
        f7:07:e7:6b:9b:3b:00:b3:71:e0:54:07:78:c7:6e:57:e3:89:
        07:e1:93:f1:77:e7:cc:0e:d0:ed:c5:d0:a3:5d:1a:cd:bb:d8:
        5f:64:25:81:1b:a8:2f:ef:c7:84:7a:f6:b8:52:4e:4c:1c:8d:
        83:b7:9b:02:8e:b2:39:68:a1:fe:f1:59:8b:e0:c4:91:f1:a9:
        c7:b3:82:a3:d2:92:2b:e5:79:9f:29:b6:63:e7:cf:9d:17:98:
        fe:70

यह CSR को देखते हुए काम करता है, लेकिन जब मैं एक प्रमाण पत्र बनाता हूं, तो यह SAN नहीं रखता है।
जेस

अगर प्रारूप SAN के लिए सही है? कोमा ने अलग की सूची केवल IP, EMAIL समर्थित नहीं होने पर, SAN-उपसर्ग DNS के साथ जांचें। उदाहरण: INPUT >>DNS:my.dns.com, DNS:my.otherdns.org
13

ठीक है। यह openssl wtf का सामान्य कार्य है ! आप भी प्रदान करना चाहिए SAN के CAरूप -extensions <string>में -extfile <file>mta.openssl.org/pipermail/openssl-users/2016-Januge/…
raiserle

1

यह "विषयअनाम" इस खंड में नहीं होना चाहिए: विशेषताएँ = req_attributes। लेकिन req_extensions = के लिए एक अनुभाग में (जो भी आप चाहते हैं उसे कॉल करें)।

और बीएस जैसे सभी के लिए कोई ज़रूरत नहीं है

subjectAltName           = Alternative subject names
subjectAltName_default   = DNS:www.g00gle.com

आप जो चाहते हैं, उसमें वही लिखें, जो आप चाहते हैं:

subjectAltName = DNS:*.g00gle.com, DNS:g00gle.com, DNS:192.168.1.2

(अंतिम चेतावनी के बिना " https://192.168.1.2 " जैसी आंतरिक पहुंच बनाता है )

तो कुछ इस तरह:

[ req ]
req_extensions     = my_extensions

[my_extensions]
subjectAltName     = DNS:*.g00gle.com, DNS:g00gle.com, DNS:192.168.1.2

चीयर्स!


1
यह वह नहीं है जो ओपी ने पूछा - वह एक इंटरैक्टिव समाधान चाहता था ।
ग्रेग डबकी

1
क्या IP को "IP: 192.168.1.2" का उपयोग करके रिकॉर्ड नहीं किया जाना चाहिए, DNS-फॉर्मेट रिकॉर्ड के लिए नहीं? मैंने इस पते पर 2013 से ब्राउज़रों के बीच बग के बारे में उल्लेख किया था जब DNS या IP का उपयोग करके IP पते को SAN - michaelm.info/blog/?p=1281 के रूप में संग्रहीत किया गया था - लेकिन इस बग को अब तक निक्स किया जाना चाहिए।
क्रिस वुड्स
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.