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


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.