এতে স্বাক্ষরিত শংসাপত্রগুলি অকার্যকর করে স্ব-স্বাক্ষরিত রুট সিএ পুনরায় জারি করা


12

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

এখন আমি এই সিএ থেকে জারি করা বিদ্যমান সার্ভার শংসাপত্রগুলি অবৈধ না করে মূল সিএতে একটি x509 এক্সটেনশন (সিআরএল বিতরণ পয়েন্ট) যুক্ত করতে চাই। এটা কি সম্ভব?

আমার অন্ত্রের অনুভূতি "হ্যাঁ" কারণ আমি যেমন বুঝতে পেরেছি, সংশ্লিষ্ট ব্যক্তিগত কীতে অ্যাক্সেস প্রয়োজনীয় এবং শংসাপত্রের পরিচয় "সম্পূর্ণ কর্তৃত্ব" এর পক্ষে যথেষ্ট। এটি হ'ল, যদি না সার্টিফিকেটে পাবলিক কী সহ কিছু ধরণের বাজে কথা অন্তর্ভুক্ত থাকে যখন এটি তৈরি হয় (সম্ভবত)।

আমি এখনও এসএসএল শংসাপত্র পরিচালনায় মোটামুটি নতুন, কিন্তু আমি (মনে করি) স্ট্যান্ডার্ড ট্রাস্ট চেইনের মূল বিষয়গুলি বুঝতে পারি। আমি অন্যান্য পিকেআই ক্রিপ্টোর মৌলিক ব্যবহারেও আরামদায়ক: আমি এসএসএইচ কী পরিচালনা করি এবং স্বাক্ষর ও এনক্রিপশনের জন্য জিপিজি ব্যবহার করি। আমি কম্পিউটার বিজ্ঞান অধ্যয়ন করেছি, যদিও আমি ক্রিপ্টোগ্রাফিতে কেবলমাত্র একটি স্ব-শিক্ষিত ছদ্মবেশী।

আমি কখনই আসল আইআইআরসি-র জন্য সিএসআর করিনি (আমি মনে করি এটির প্রত্যক্ষ আউটপুট ছিল openssl req -new -x509)। আমার কাছে এখনও মূল সিএর ব্যক্তিগত কী রয়েছে অবশ্যই, এবং এটি ব্যবহার করে আমি মূল শংসাপত্রকে একটি শংসাপত্র স্বাক্ষরের অনুরোধে "বিপরীত" করতে সক্ষম হয়েছি: openssl x509 -x509toreq -in MyCA.pem -out MyCA.csr -signkey private/MyCA.key

আমি আশা করছিলাম এটি কার্যকরভাবে উপরে বর্ণিত ননগুলি "নিষ্কাশন" করবে এবং আমাকে শংসাপত্রটি পুনরায় তৈরি করার অনুমতি দেবে তবে এবার একটি crlDistributionPointsক্ষেত্র সহ, এবং ফলস্বরূপ মূল CA এর সাথে স্বাক্ষরিত সমস্ত শংসাপত্রগুলি ব্যতিক্রম ব্যতীত এখনও এই নতুন সিএর বিরুদ্ধে বৈধতা দেবে would যে ক্লায়েন্টরা আমার (বর্তমানে খালি) সিআরএল ফাইলটি ফিল্ডে মনোনীত HTTP URL থেকে পুনরুদ্ধার করবে।

সুতরাং আমি একটি এক্সটেনশন কনফিগার ফাইল তৈরি করেছি ext.conf:

[ cert_ext ] 
subjectKeyIdentifier=hash
crlDistributionPoints=URI:http://security.mycompany.co.za/root.crl

এবং আমি সিএসআর থেকে মূল সিএর নতুন সংস্করণ উত্পন্ন করেছি:

openssl x509 -extfile ./ext.conf -extensions cert_ext -req -signkey private/MyCA.key -in MyCA.csr -out MyNewCA.pem

এখন যখন আমি সাথে শংসাপত্র দেখতে openssl x509 -text -in MyNewCA.pem | less

আমি সিআরএল এক্সটেনশন অংশটি দেখতে পাচ্ছি:

X509v3 extensions:
    X509v3 Subject Key Identifier: 
        82:D0:01:03:49:FF:30:16:FA:DC:0A:1E:C1:8C:3D:66:A1:78:FF:F8
    X509v3 CRL Distribution Points: 

        Full Name:
          URI:http://security.mycompany.co.za/root.crl`

কিন্তু হায়! আমার পূর্বে স্বাক্ষরিত শংসাপত্রগুলি এর তুলনায় আর বৈধ নয়:

openssl verify -verbose -CAfile MyCA.pem git.pem 
git.pem: OK

openssl verify -verbose -CAfile MyNewCA.pem git.pem 
git.pem: <redacted DN>
error 20 at 0 depth lookup:unable to get local issuer certificate

বেশিরভাগ ক্ষেত্রে আমি শংসাপত্রগুলি কীভাবে কাজ করে এবং কেন তা আরও অন্তর্দৃষ্টি খুঁজছি। তবে আমি সমস্যার সমাধানটিকেও স্বাগত জানাই যা এটির দিকে পরিচালিত করে, তাই এখানে কিছু ব্যাকগ্রাউন্ড তথ্যও রয়েছে।

আমি কীভাবে এই গোলযোগের মধ্যে পড়লাম: আমার সিএ এক্সপ্লোরার আরএমবি-এর মাধ্যমে উইন্ডোজে সার্টিফিকেট জিইআই ইনস্টল করা হয়, বা /usr/local/share/ca-certificatesতারপরে update-ca-certificatesডেবিয়ান এবং উবুন্টুতে ইনস্টল হয়ে গেলে অভ্যন্তরীণ পরিষেবাগুলিতে এইচটিটিপিএস দুর্দান্ত কাজ করে । তবে আমি সম্প্রতি একটি ব্যতিক্রম হয়েছি: উইন্ডোজে গিট, বিশেষত যদি এসএসএল ব্যাক-এন্ড হিসাবে উইন্ডোজ সুরক্ষা চ্যানেলটি ব্যবহার করার জন্য ইনস্টল করা থাকে। যা স্পষ্টতই ডিফল্টভাবে জোর দিয়েছিল যে এসএসএল শংসাপত্রগুলিতে অবশ্যই একটি সিআরএল ক্ষেত্র থাকতে হবে।

সুতরাং আমি অনুমান করি এটি সত্যই একটি উইন্ডোজ সিকিউর চ্যানেল সমস্যা কারণ আমি যে ত্রুটি বার্তাটি চালিয়ে যাচ্ছি তা সম্পূর্ণ মাইক্রোসফ্ট-নির্দিষ্ট বলে মনে হচ্ছে: fatal: unable to access 'https://angery@git.mycompany.co.za/gitblit/r/secret_project.git/': schannel: next InitializeSecurityContext failed: Unknown error (0x80092012) - The revocation function was unable to check revocation for the certificate.

যদি আমি ওপটিএসএসএল দিয়ে গিট ইনস্টল করি এবং git.http.sslcainfo দ্বারা নির্দেশিত ফাইলে আমার সিএকে ম্যানুয়ালি সংযুক্ত করি তবে এটি কার্যকর হয়, তবে আমি আশঙ্কা করি যে আমার ব্যবহারকারীরা যদি এই প্রক্রিয়াটির চেয়ে আরও বেশি প্রচেষ্টা অনুভব করেন তবে তারা এসএসএল পরিচয় যাচাইয়ের বিষয়টি অস্বীকার করবে fear "সহজ" উইন্ডোজ শংসাপত্র ইনস্টলার জিওআইয়ের মাধ্যমে ক্লিক করা।


1
কেবল সর্বজনীন কী এবং বিষয় একটি শংসাপত্রকে অনন্য করে তোলে। অতএব, আপনি যদি পরিবর্তন না করেন তবে আপনার হৃদয়ের সামগ্রীতে অন্য সমস্ত ক্ষেত্র এবং এক্সটেনশানগুলি পরিবর্তন করার সময় আপনার শংসাপত্রটি পুনরায় সই করতে সক্ষম হওয়া উচিত।
গ্যারেথTheRed

পুনঃটুইট করুন আমি কীভাবে এটি করব তা নিশ্চিত নই; আপনি আরও বিশদ সহ বিস্তারিত বা উত্তর পোস্ট করতে পারেন? আমি প্রত্যাশা করেছি যে -x509toreqবিদ্যমান রুট সিএ থেকে সমস্ত অনন্য তথ্য পুনরুদ্ধার করবে, তবে তা হয় না বা সেখান থেকে আমার প্রক্রিয়াতে কিছু ভুল আছে।
অ্যাঞ্জিরিস্যাডমিন

1
req -new -x509এবং x509 -req -signkeyউভয়ই এলোমেলো সংখ্যায় স্ব-স্বাক্ষরিত শংসাপত্রের সিরিয়াল ডিফল্ট (যদিও এটি ওভাররাইড করা যেতে পারে) কার্যকরভাবে একটি ননসকে। যদি আপনার শিশু শংসাপত্রের (বা তাদের কোনওটিতে) 'ইস্যুকার + সিরিয়াল' বিকল্পটি ('কীড' বিকল্পের পরিবর্তে বা অতিরিক্ত হিসাবে) ব্যবহার করে অথরিটিকি আইডেন্টিফায়ার থাকে তবে আপনি যদি caআপস্ট্রিম ডিফল্ট কনফিগারেশন ফাইল ব্যবহার করেন তবে আপনি যদি পুরানো হিসাবে একই সিরিয়াল দিয়ে নতুন মূল তৈরি করা প্রয়োজন; ব্যবহার -set_serial। ...
ডেভ_থমপসন_085

... তবে আপনি যদি বিদ্যমান নাম হিসাবে একই নাম এবং সিরিয়াল সহ একটি নতুন শংসাপত্র আমদানির চেষ্টা করেন তবে কিছুটা অসন্তুষ্ট হতে পারে; আপনাকে প্রথমে পুরানোটি পরিষ্কার করতে হবে।
dave_thompson_085

1
নিয়ার-ক্রস প্রতারিত security.stackexchange.com/questions/17331/... দ্রষ্টব্য: আমি মনে করি এটি ম্যানুয়ালি উইন্ডোজ পেতে একটি সিএ জন্য সিআরএল ক্যাশে যে ক্ষেত্রে CRLDP অভাব ব্যাপার না পারে সম্ভব, কিন্তু কিভাবে অসুবিধাজনক হবে যে আমি জানি না।
dave_thompson_085

উত্তর:


6

দুটি সার্টিফিকেট সাবজেক্টের নাম এবং সার্টিফিকেটের মিলের পাবলিক কী হিসাবে দীর্ঘ হিসাবে একই বিবেচিত হবে ।

অতএব, আপনাকে যা করতে হবে তা হ'ল কীগুলি পুনরায় ব্যবহার করা এবং এটি নিশ্চিত করা উচিত যে নতুন শংসাপত্রের সাবজেক্ট নামটি পুরানো মত একই। এর পরে, আপনি অন্য কোনও ক্ষেত্র এবং / অথবা এক্সটেনশানগুলির কোনও পরিবর্তন করতে পারেন এবং ফলস্বরূপ শংসাপত্রটি একই হিসাবে বিবেচিত হবে।

উদাহরণস্বরূপ, আপনার ওপেনএসএসএল কনফিগারেশন ফাইলটি তৈরি করুন:

[ req ]

prompt             = no
string_mask        = default
distinguished_name = x509_distinguished_name
x509_extensions     = x509_ext

[ x509_distinguished_name ]

# Note that the following are in 'reverse order' to what you'd expect to see.
# Adjust for your setup:

countryName = za
organizationName = My Company
organizationalUnitName = Security
commonName = My Root CA

[ x509_ext ]

basicConstraints = critical,CA:true
keyUsage = critical, keyCertSign, cRLSign
subjectKeyIdentifier = hash
crlDistributionPoints = URI:http://security.mycompany.co.za/root.crl

এবং যেমন সংরক্ষণ করুন rootca.cnf। নিশ্চিত করুন যে এর মূল উপাদানগুলি [req_distinguished_name]আপনার মূল রুট সিএ শংসাপত্রের সাথে একরকম (এটি অভিন্ন বিষয়টির নাম অংশ)।

পরবর্তী, চালান:

openssl req -new -x509 -key rootca.key -out MyNewCA.pem -config rootca.cnf

যেখানে rootca.keyব্যক্তিগত কী মূল শংসাপত্র ব্যবহার করা (এই অভিন্ন সরকারী / বেসরকারী মূল অংশ) হয়।

এটি তৈরি করে MyNewCA.pem, যা আপনি যাচাই করতে পারেন:

$ openssl x509 -noout -text -in MyNewCA.pem

Certificate:
Data:
    Version: 3 (0x2)
    Serial Number: 17564687072266118846 (0xf3c24dd49d5166be)
Signature Algorithm: sha256WithRSAEncryption
    Issuer: C=za, O=My Company, OU=Security, CN=My Root CA
    Validity
        Not Before: Jul 15 05:05:54 2017 GMT
        Not After : Aug 14 05:05:54 2017 GMT
    Subject: C=za, O=My Company, OU=Security, CN=My Root CA
    Subject Public Key Info:
        Public Key Algorithm: rsaEncryption
            Public-Key: (2048 bit)
            Modulus:
                00:c8:3d:32:8a:56:31:f6:27:1a:ce:9e:b2:1d:fb:
                ce:9f:ce:5b:42:25:aa:fe:8b:f4:34:32:ac:b3:02:
                50:71:f8:c3:43:0c:c7:2c:9f:fe:48:1b:c6:c0:e7:
                d6:44:a9:e7:d7:a0:7e:58:f4:b6:38:61:7e:d0:af:
                0f:56:21:e7:49:7a:66:13:f5:7a:fe:3d:ab:65:f8:
                01:eb:52:a7:3b:ae:a0:cf:50:57:b9:e0:09:0b:1f:
                90:14:fb:18:56:1d:57:99:a9:76:a2:63:d1:c2:d3:
                a3:f4:3a:ff:91:0d:ee:8d:44:13:58:00:09:93:da:
                e8:6a:fd:64:5f:c3:42:8e:2a:49:6e:0d:73:b7:b9:
                d4:6c:c6:ce:30:c5:82:24:a5:00:37:17:a0:1d:f1:
                c9:e9:e3:18:48:22:4f:33:96:a7:3c:a9:31:f1:3f:
                14:40:6a:74:e8:78:82:45:04:d4:4b:56:0b:cd:be:
                48:8d:03:fb:39:70:0b:91:99:70:06:bd:5e:8b:f2:
                d1:f4:6f:fc:ce:e7:f8:3c:0a:20:ea:35:b8:5f:2f:
                ee:8d:ff:d3:93:85:6b:fb:71:db:1b:e6:e9:1d:a7:
                f8:e4:ae:f4:71:fe:35:a7:89:24:af:69:a4:34:3b:
                14:66:05:02:5e:2a:1d:ac:e0:d2:48:6c:13:4e:75:
                58:93
            Exponent: 65537 (0x10001)
    X509v3 extensions:
        X509v3 Basic Constraints: critical
            CA:TRUE
        X509v3 Key Usage: critical
            Certificate Sign, CRL Sign
        X509v3 Subject Key Identifier: 
            3B:45:93:3A:2A:BC:39:29:36:13:6C:BD:B6:B4:31:C7:E7:BB:32:73
        X509v3 CRL Distribution Points: 

            Full Name:
              URI:http://security.mycompany.co.za/root.crl

Signature Algorithm: sha256WithRSAEncryption
     4d:96:d4:03:4f:e3:7c:26:be:59:f8:23:87:60:f7:4c:d3:a1:
     1c:77:a1:14:e3:e7:da:c8:2a:a3:1b:06:2a:4d:55:1c:83:26:
     73:46:0d:8a:e4:b7:d1:1e:38:cc:78:90:00:01:b3:8e:f9:3c:
     62:be:04:09:90:4e:22:87:b1:aa:bd:f9:73:bd:a7:76:ad:d5:
     ae:2d:7a:1c:1e:1a:67:c8:57:4c:f9:6d:8b:62:d6:e5:ea:e0:
     40:5c:12:28:7e:ea:f0:0c:d6:cd:f4:1d:d5:56:09:ad:43:b4:
     eb:8c:68:ce:56:a2:a8:ae:a4:d5:35:bb:58:b8:ed:82:82:b5:
     ef:cb:e2:6d:76:61:ed:ee:a5:1f:68:95:07:ed:5b:f0:65:92:
     d2:dc:1d:c6:fa:7f:e0:c9:38:c2:c6:6f:03:38:e7:3a:b0:24:
     06:e0:bc:07:dd:e7:a0:dc:74:09:e5:37:7b:66:e1:6f:47:4c:
     71:ff:02:48:7f:d4:4f:ce:cb:91:e9:ee:cd:b6:f1:0a:03:19:
     3e:19:05:7d:8f:48:e7:f1:cc:07:37:3d:91:3c:6f:54:71:3c:
     a2:6c:55:c3:03:c1:7f:eb:9e:70:f1:8f:a1:fb:62:33:8b:86:
     2c:79:bc:76:e2:01:9a:68:df:af:40:a1:b2:9c:f6:a1:e1:6e:
     2a:dd:1a:d6

মূলটির জায়গায় এই নতুন শংসাপত্রটি ব্যবহার করুন।

আপনি অন্যান্য ক্ষেত্র এবং এক্সটেনশানগুলি যেমন শংসাপত্রের বৈধতা সময়সীমা পরিবর্তন করতে পারেন তবে মনে রাখবেন যে basicConstraints = critical,CA:trueরুট সিএ শংসাপত্রের কোনও সত্যিকারের বাধা (সত্য ) ব্যতীত আপনার উচিত হবে না ।


আরও বিবেচনা করার পরে, আপনার সমস্যাটি কেবল এই বিষয়টিতেই নেমে যেতে পারে যে আপনার প্রতিস্থাপন রুট সিএ শংসাপত্রটির basicConstraintসম্ভবত এবং সম্ভবত keyUsageএক্সটেনশন নেই। আপনার ext.confপ্রথমটিতে সেই দুটি এক্সটেনশন যুক্ত করার চেষ্টা করা এবং -x509toreqআপনার পোস্ট করা পদ্ধতিটি ব্যবহার করে ফলাফলটি নতুন রুট সিএ শংসাপত্রটি পরীক্ষা করার উপযুক্ত হতে পারে ।


বিস্তৃত উত্তরের জন্য ধন্যবাদ, এটি সত্যই আমাকে জিনিসগুলি আরও ভালভাবে বুঝতে সহায়তা করেছে। এটি এবং @ ডেভ_থমপসন_0৮৫ এর মন্তব্যে আমি আমার সিএকে এমনভাবে পুনরায় জেনারেট করতে পেরেছি যাতে শিশু শংসাপত্রগুলি অকার্যকর হয় না। আমার আসল প্রয়াসে কিছু জিনিস ভুল ছিল (আমার সম্ভবত আরও বিশদ সহ একটি উত্তর পোস্ট করা উচিত?) এছাড়াও সেই স্পষ্ট-ইন-রেট্রোস্পেক্টটি কিন্তু গুরুত্বপূর্ণ বিষয়টির জন্য ধন্যবাদ যে "সাবজেক্ট নাম" সেই নির্দিষ্ট ক্ষেত্রগুলি নিয়ে গঠিত একটি ক্ষেত্র। আমি যে কোনওভাবে সন্দেহ করি যে অন্য যে কোনও উত্তর পোস্ট করবে, তাই আমি এটি গ্রহণ করছি।
অ্যাঞ্জরিসিসাদমিন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.