কীভাবে নিজের সার্টিফিকেট চেইন তৈরি করবেন?


62

আমি আমার নিজের ওসিএসপি রেসপন্ডার সেট করতে চাই (কেবল পরীক্ষার উদ্দেশ্যে)। এটির জন্য আমার কাছে মূল শংসাপত্র এবং এটি থেকে কয়েকটি শংসাপত্র তৈরি হওয়া প্রয়োজন।

আমি ওপেনসেল ব্যবহার করে একটি স্ব-স্বাক্ষরিত শংসাপত্র তৈরি করতে পরিচালিত করেছি। আমি এটিকে মূল শংসাপত্র হিসাবে ব্যবহার করতে চাই। পরবর্তী পদক্ষেপটি হ'ল উদ্ভূত শংসাপত্র তৈরি করা। তবে কীভাবে এটি করা যায় সে সম্পর্কে ডকুমেন্টেশন খুঁজে পাচ্ছি না। কেউ কি জানেন যে আমি এই তথ্যটি কোথায় পাব?


পূর্ববর্তী সময়ে সম্পাদনা করুন , আমার প্রশ্নের এখনও পুরোপুরি উত্তর দেওয়া হয়নি। সমস্যাটি স্পষ্ট করতে আমি আমার শংসাপত্র শৃঙ্খলার প্রতিনিধিত্ব করব:

মূল -> এ -> বি -> সি -> ...

আমি বর্তমানে রুট এবং একটি শংসাপত্র তৈরি করতে সক্ষম হয়েছি, তবে কীভাবে আরও দীর্ঘ শৃঙ্খলা তৈরি করতে পারি তা খুঁজে পাইনি।

মূল শংসাপত্র তৈরির জন্য আমার আদেশটি হ'ল:

openssl req -new -newkey rsa:1024 -nodes -out ca.csr -keyout ca.key
openssl x509 -trustout -signkey ca.key -days 365 -req -in ca.csr -out ca.pem

শংসাপত্র এ এভাবে তৈরি করা হয়:

openssl genrsa -out client.key 1024
openssl req -new -key client.key -out client.csr
openssl ca -in client.csr -out client.cer

এই কমান্ডটি স্পষ্টতভাবে মূল শংসাপত্রের উপর নির্ভর করে, যার জন্য এটি ওপেনসেল কনফিগারেশন ফাইলটিতে প্রয়োজনীয় তথ্য সন্ধান করে।

শংসাপত্র বি তবে অবশ্যই A এর উপর নির্ভর করতে হবে যা কনফিগার ফাইলে নিবন্ধভুক্ত নয়, সুতরাং পূর্ববর্তী আদেশটি এখানে কাজ করবে না।

বি এবং এর বাইরে শংসাপত্রগুলি তৈরি করতে আমার কোন কমান্ড লাইন ব্যবহার করা উচিত?

সম্পাদনা
আমি এই নিবন্ধে উত্তর খুঁজে পেয়েছি । শংসাপত্র বি (চেন এ -> বি) এই দুটি কমান্ড দিয়ে তৈরি করা যেতে পারে:

# Create a certificate request
openssl req -new -keyout B.key -out B.request -days 365

# Create and sign the certificate
openssl ca -policy policy_anything -keyfile A.key -cert A.pem -out B.pem -infiles B.request

আমি openssl.cnf ফাইলটিও পরিবর্তন করেছি:

[ usr_cert ]
basicConstraints=CA:TRUE # prev value was FALSE

এই পদ্ধতিটি ভালভাবে কাজ করছে বলে মনে হচ্ছে।


সম্পাদনা বিভাগের নীচের লিঙ্কটি ভাঙা হয়েছে
উত্সাহী

2
2015 অবধি এই পোস্টের শেষ সম্পাদনায় উল্লিখিত নিবন্ধটি মারা গেছে। সুতরাং আপনি ওয়েব আর্কাইভের মাধ্যমে পৃষ্ঠাটি চেক করতে পারেন : web.archive.org/web/20100504162138/http://www.ibm.com/…
Iomanip

উত্তর:


28

আপনি সরাসরি ওপেনএসএসএল ব্যবহার করতে পারেন।

  1. একটি শংসাপত্র কর্তৃপক্ষের ব্যক্তিগত কী তৈরি করুন (এটি আপনার সবচেয়ে গুরুত্বপূর্ণ কী):

    openssl req -new -newkey rsa:1024 -nodes -out ca.csr -keyout ca.key
    
  2. আপনার সিএ স্ব স্বাক্ষরিত শংসাপত্র তৈরি করুন:

    openssl x509 -trustout -signkey ca.key -days 365 -req -in ca.csr -out ca.pem
    
  3. প্রথমে কী তৈরি করে ক্লায়েন্ট শংসাপত্র জারি করুন, তারপরে অনুরোধ করুন (বা বাহ্যিক সিস্টেমের সরবরাহিত একটি ব্যবহার করুন) তারপরে আপনার সিএর ব্যক্তিগত কী ব্যবহার করে শংসাপত্রটিতে স্বাক্ষর করুন:

    openssl genrsa -out client.key 1024
    openssl req -new -key client.key -out client.csr
    openssl ca -in client.csr -out client.cer
    

(আমার ওপেনসএসএলএনএফ ফাইলের সাথে এই কমান্ডগুলি ব্যবহার করার সাথে সাথে আপনাকে কিছু অপশন যুক্ত করতে হতে পারে You আপনাকে প্রথমে আপনার নিজের .conf ফাইলটি সেটআপ করতে হতে পারে))


ধন্যবাদ, আপনি আমার ওপেনএসএল.কম ফাইলটি টুইট করার পরে নির্দেশাবলী কাজ করেছিলেন।
স্ট্যাকড ক্রুকড

3
@ টবুক: নোট করুন যে প্রশ্নের উত্তরের জন্য আরও একটি পদক্ষেপের প্রয়োজন রয়েছে - কীভাবে অন্য একটি শংসাপত্র তৈরি করবেন যা কেবলমাত্র পদক্ষেপ 3 এ তৈরি করা শংসাপত্রের উপর নির্ভর করে, তবে মূল শংসাপত্র নয়।
কোয়াকোট কোয়েসোট

3
"সিএ প্রাইভেট কী লোড করতে অক্ষম" সহ শেষ পদক্ষেপে ব্যর্থতা; আমি চাবি এবং শংসাপত্র সরবরাহ করে কিছুটা অংশে সেখানে যেতে পারি openssl ca -in client.csr -out client.cer -cern ca.pem -keyfile ca.key, তবে এটি একটি demoCAডিরেক্টরি এবং বিভিন্ন বর্ণনাকারী চায় ।
আইরিডন

23
"আপনাকে কিছু বিকল্প যুক্ত করতে হতে পারে ..." সত্যই এই উত্তরটি থেকে ইউটিলিটিটি সরিয়ে ফেলে।
Zach

14

একবার আপনি আপনার সিএ তৈরি করলে আপনি এটি সাইন ইন করতে ব্যবহার করতে পারেন:

  • একটি কী তৈরি করুন:

    openssl genrsa -out key_A.key  1024
    
  • একটি সিএসআর তৈরি করুন:

    openssl req -new -key key_A.key -out csr_A.csr
    You are about to be asked to enter information etc....
    
  • এটি সাইন করুন:

    openssl x509 -req -days 365 -in csr_A.csr -CA CA_certificate_you_created.crt \
    -CAkey CA_key_you_created.key -set_serial 01 -out crt_A.crt
    

    এবং তাই * _A এর পরিবর্তে * _ বি CA_certificate_you_created.crtদিয়ে crt_A.crtএবং এর CA_key_you_created.keyসাথেkey_A.key

আপনার পরিবর্তন:

basicConstraints=CA:TRUE  # prev value was FALSE

এর অর্থ হ'ল আপনি যে শংসাপত্রগুলি ইস্যু করেছেন তা অন্য শংসাপত্রগুলিতে স্বাক্ষর করতে ব্যবহার করা যেতে পারে।


THX

1
কি .crt ফাইল?
মিকিডি

9

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

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

যদি আমি সঠিকভাবে মনে করি, সিনট্যাক্সটি এরকম কিছু করে:

CA.pl -newca    # Create a new root CA  

CA.pl -newreq   # Create a new CSR

CA.pl -sign     # Sign a CSR, creating a cert  

CA.pl -pkcs12   # Turn an issued cert, plus its matching private key and trust chain, into a .p12 file you can install on another machine    

4
এটি সহায়ক ছিল। উবুন্টুতে 14.04-এ আমি ফাইলটি পেয়েছি/usr/lib/ssl/misc/CA.pl
কলিন এম

-1

আমি এই পোস্টটি পেয়েছি: https://stackoverflow.com/questions/19665863/how-do-i-use-a-self-sided-certificate-for-a-https-node-js-server

এটি নোড.জেএসের জন্য তবে এই গিটিহাব রেপিতে স্ক্রিপ্টটি মূল সিটি সার্ট এবং ডোমেন শংসাপত্র তৈরি করতে ওপেনএসএলএল কমান্ড ব্যবহার করে।

ব্যবহার করে চালান: bash make-root-ca-and-certificates.sh 'example.com'

অথবা লোকালহোস্ট ব্যবহারের জন্য: bash make-root-ca-and-certificates.sh 'localhost'

make-root-ca-and-certificates.sh

#!/bin/bash
FQDN=$1

# make directories to work from
mkdir -p certs/{server,client,ca,tmp}

# Create your very own Root Certificate Authority
openssl genrsa \
  -out certs/ca/my-root-ca.key.pem \
  2048

# Self-sign your Root Certificate Authority
# Since this is private, the details can be as bogus as you like
openssl req \
  -x509 \
  -new \
  -nodes \
  -key certs/ca/my-root-ca.key.pem \
  -days 1024 \
  -out certs/ca/my-root-ca.crt.pem \
  -subj "/C=US/ST=Utah/L=Provo/O=ACME Signing Authority Inc/CN=example.com"

# Create a Device Certificate for each domain,
# such as example.com, *.example.com, awesome.example.com
# NOTE: You MUST match CN to the domain name or ip address you want to use
openssl genrsa \
  -out certs/server/privkey.pem \
  2048

# Create a request from your Device, which your Root CA will sign
openssl req -new \
  -key certs/server/privkey.pem \
  -out certs/tmp/csr.pem \
  -subj "/C=US/ST=Utah/L=Provo/O=ACME Tech Inc/CN=${FQDN}"

# Sign the request from Device with your Root CA
# -CAserial certs/ca/my-root-ca.srl
openssl x509 \
  -req -in certs/tmp/csr.pem \
  -CA certs/ca/my-root-ca.crt.pem \
  -CAkey certs/ca/my-root-ca.key.pem \
  -CAcreateserial \
  -out certs/server/cert.pem \
  -days 500

# Create a public key, for funzies
# see https://gist.github.com/coolaj86/f6f36efce2821dfb046d
openssl rsa \
  -in certs/server/privkey.pem \
  -pubout -out certs/client/pubkey.pem

# Put things in their proper place
rsync -a certs/ca/my-root-ca.crt.pem certs/server/chain.pem
rsync -a certs/ca/my-root-ca.crt.pem certs/client/chain.pem
cat certs/server/cert.pem certs/server/chain.pem > certs/server/fullchain.pem
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.