আমি কীভাবে ওপেনএসএসএল ব্যবহার করে সাবজেক্টআল্টনামের সাথে স্ব-স্বাক্ষরিত শংসাপত্র তৈরি করতে পারি? [বন্ধ]


115

আমি এতে সাবজেক্টআল্টনেম সহ ওপেনএসএসএল দ্বারা একটি স্ব-স্বাক্ষরিত শংসাপত্র তৈরি করার চেষ্টা করছি the আমি শংসাপত্রের জন্য সিসিআর তৈরি করছি, আমার অনুমান যে আমাকে ওপেনএসএসএল x509 এর v3 এক্সটেনশন ব্যবহার করতে হবে। আমি ব্যাবহার করছি :

openssl req -new -x509 -v3 -key private.key -out certificate.pem -days 730

কেউ আমাকে সঠিক সিনট্যাক্স সাহায্য করতে পারেন?


2
এছাড়াও ওপেনসেল দিয়ে স্ব-স্বাক্ষরিত শংসাপত্র কীভাবে তৈরি করবেন তা দেখুন ? এটি সাবজেক্ট অল্টারনেট নামের সাথে শংসাপত্র তৈরি করতে তথ্য সরবরাহ করে এবং প্রযোজ্য অন্যান্য নিয়মগুলি আপনাকে জানায় যাতে ব্রাউজার এবং অন্যান্য ব্যবহারকারী এজেন্টদের সাথে শংসাপত্রটিতে সাফল্যের সর্বাধিক সম্ভাবনা থাকে।
jww

এই থ্রেড (নীচের অংশে অবস্থিত উত্তর stackoverflow.com/questions/27294589/... ) ব্যবহার certificatetools.com আপনি একটি ভাল ফলাফল এবং ব্যবহারযোগ্য CNF ফাইল দিব
জেমস নেলসন

উত্তর:


164

কেউ আমাকে সঠিক সিনট্যাক্স সাহায্য করতে পারেন?

এটি একটি তিন-পদক্ষেপ প্রক্রিয়া, এবং এতে openssl.cnfফাইলটি সংশোধন করা জড়িত । আপনি কেবল কমান্ড লাইন বিকল্প দিয়ে এটি করতে সক্ষম হতে পারেন, তবে আমি সেভাবে এটি করি না।

আপনার openssl.cnfফাইলটি সন্ধান করুন। এটি সম্ভবত অবস্থিত /usr/lib/ssl/openssl.cnf:

$ find /usr/lib -name openssl.cnf
/usr/lib/openssl.cnf
/usr/lib/openssh/openssl.cnf
/usr/lib/ssl/openssl.cnf

আমার ডেবিয়ান সিস্টেমে /usr/lib/ssl/openssl.cnfঅন্তর্নির্মিত opensslপ্রোগ্রাম দ্বারা ব্যবহৃত হয় । সাম্প্রতিক ডেবিয়ান সিস্টেমগুলিতে এটি অবস্থিত/etc/ssl/openssl.cnf

আপনি ফাইলটিতে openssl.cnfএকটি উত্সাহী যোগ করে কোনটি ব্যবহৃত হচ্ছে তা নির্ধারণ করতে পারেন XXXএবং opensslচোকস কিনা তা দেখুন ।


প্রথমে reqপ্যারামিটারগুলি সংশোধন করুন । আপনি যে নামগুলি ব্যবহার করতে চান তার সাথে একটি alternate_namesবিভাগ যুক্ত করুন openssl.cnf। কোনও বিদ্যমান alternate_namesবিভাগ নেই, তাই আপনি এটি কোথায় যুক্ত করবেন তা বিবেচ্য নয়।

[ alternate_names ]

DNS.1        = example.com
DNS.2        = www.example.com
DNS.3        = mail.example.com
DNS.4        = ftp.example.com

এরপরে, বিদ্যমান [ v3_ca ] বিভাগে নিম্নলিখিতটি যুক্ত করুন । সঠিক স্ট্রিং অনুসন্ধান করুন [ v3_ca ]:

subjectAltName      = @alternate_names

আপনি keyUsageনীচে নিম্নলিখিত পরিবর্তন করতে পারেন [ v3_ca ]:

keyUsage = digitalSignature, keyEncipherment

digitalSignatureএবং keyEnciphermentএকটি সার্ভার শংসাপত্রের জন্য স্ট্যান্ডার্ড ভাড়া। চিন্তা করবেন না nonRepudiation। এটি কম্পিউটার বিজ্ঞানের লোক / গাল যারা আইনজীবী হতে চেয়েছিলেন তাদের দ্বারা এটি একটি অকেজো বিষয়। এর অর্থ আইনী বিশ্বে কিছুই নয়।

শেষ পর্যন্ত, আইইটিএফ ( আরএফসি 5280 ), ব্রাউজারগুলি এবং সিএগুলি দ্রুত এবং আলগাভাবে চালায়, তাই আপনি কী কী ব্যবহার করবেন তা সম্ভবত বিবেচ্য নয়।


দ্বিতীয়ত, স্বাক্ষরকারী পরামিতিগুলি সংশোধন করুন। CA_defaultবিভাগের অধীনে এই লাইনটি সন্ধান করুন :

# Extension copying option: use with caution.
# copy_extensions = copy

এবং এটিকে পরিবর্তন করুন:

# Extension copying option: use with caution.
copy_extensions = copy

এটি সানকে শংসাপত্রের অনুলিপি করা নিশ্চিত করে। ডিএনএসের নামগুলি অনুলিপি করার অন্যান্য উপায়গুলি নষ্ট হয়ে গেছে।


তৃতীয়ত, আপনার স্ব-স্বাক্ষরিত শংসাপত্র তৈরি করুন:

$ openssl genrsa -out private.key 3072
$ openssl req -new -x509 -key private.key -sha256 -out certificate.pem -days 730
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.
...

পরিশেষে, শংসাপত্র পরীক্ষা করুন:

$ openssl x509 -in certificate.pem -text -noout
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number: 9647297427330319047 (0x85e215e5869042c7)
    Signature Algorithm: sha256WithRSAEncryption
        Issuer: C=US, ST=MD, L=Baltimore, O=Test CA, Limited, CN=Test CA/emailAddress=test@example.com
        Validity
            Not Before: Feb  1 05:23:05 2014 GMT
            Not After : Feb  1 05:23:05 2016 GMT
        Subject: C=US, ST=MD, L=Baltimore, O=Test CA, Limited, CN=Test CA/emailAddress=test@example.com
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                Public-Key: (3072 bit)
                Modulus:
                    00:e2:e9:0e:9a:b8:52:d4:91:cf:ed:33:53:8e:35:
                    ...
                    d6:7d:ed:67:44:c3:65:38:5d:6c:94:e5:98:ab:8c:
                    72:1c:45:92:2c:88:a9:be:0b:f9
                Exponent: 65537 (0x10001)
        X509v3 extensions:
            X509v3 Subject Key Identifier:
                34:66:39:7C:EC:8B:70:80:9E:6F:95:89:DB:B5:B9:B8:D8:F8:AF:A4
            X509v3 Authority Key Identifier:
                keyid:34:66:39:7C:EC:8B:70:80:9E:6F:95:89:DB:B5:B9:B8:D8:F8:AF:A4

            X509v3 Basic Constraints: critical
                CA:FALSE
            X509v3 Key Usage:
                Digital Signature, Non Repudiation, Key Encipherment, Certificate Sign
            X509v3 Subject Alternative Name:
                DNS:example.com, DNS:www.example.com, DNS:mail.example.com, DNS:ftp.example.com
    Signature Algorithm: sha256WithRSAEncryption
         3b:28:fc:e3:b5:43:5a:d2:a0:b8:01:9b:fa:26:47:8e:5c:b7:
         ...
         71:21:b9:1f:fa:30:19:8b:be:d2:19:5a:84:6c:81:82:95:ef:
         8b:0a:bd:65:03:d1

7
আমি কেবল সেই ওপেনসেল ফাইলটি অনুলিপি করেছি এবং স্থানীয়ভাবে এটি সামঞ্জস্য করেছি। তারপরে সবকিছু তৈরি করা হয়েছে: openssl genrsa -out cert.key 3072 -nodes openssl req -new -x509 -key cert.key -sha256 -config openssl.cnf -out cert.crt -days 730 -subj "/C=US/ST=private/L=province/O=city/CN=hostname.example.com"
স্টুয়ান্ট

7
এছাড়া একটা চমৎকার এই নমনীয় এনভায়রনমেন্ট ভেরিয়েবল ব্যবহার বর্ণনা করতে চালাকি এখানে : subjectAltName=$ENV::ALTNAME(এবং env Var সেট। ALTNAME=DNS:example.com,DNS:other.example.net)।
ব্রুনো

6
নোট আপনি ব্যবহার যে IPপরিবর্তে DNSজন্য alternate_namesআপনি একটি IP ঠিকানা সঙ্গে কাজ করছি। আপনি স্থানীয়ভাবে কনফিগার ফাইলটি অনুলিপি করতে পারেন এবং তারপরে এটি ওপেনসেল কমান্ড লাইনে উল্লেখ করতে পারেন -config my_config.cnf। এবং আপনার কোনও অসুবিধা হতে পারে req_extensions = v3_req
অ্যাডভারসাস

5
আমি এটি কখনই ওএসএক্সে কাজ করার জন্য পাইনি, তবে এই লিঙ্কটিতে req.conf টেমপ্লেটটি ব্যবহার করে একটি কবজ হিসাবে কাজ করেছে: support.citrix.com/article/CTX135602 (আমি একটি উত্তরে বিশদটি বের করব তবে এই প্রশ্নটি অনিচ্ছাকৃতভাবে বন্ধ করা হয়েছে) )
রাইমো

3
কোনও কারণে এটি v3_ca বিভাগের অধীনে অ্যাল্টনাম = @ বিকল্প_নামগুলি পছন্দ করে না। এটি টাইপ হতে পারে? আমি এখানে ত্রুটিটি পেয়েছি: ত্রুটি: 22097069: X509 ভি 3 রুটিনগুলি: ডিও_এক্সT_NCONF: অবৈধ এক্সটেনশান স্ট্রিং: v3_conf.c: 139: নাম = সাবজেক্ট অল্টনেম, বিভাগ = @ বিকল্প_নামগুলি 140487468840608: ত্রুটি: 22098080: X509 ভি 3 রুটিন: এক্স509V3_X এক্সটেনশন v3_conf.c: 93: নাম = সাবজেক্টআল্টনেম, মান = @ বিকল্প_নাম
জেমস নেলসন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.