কীভাবে ওপেনএসএসএল দ্বারা স্ব-স্বাক্ষরিত শংসাপত্র তৈরি করবেন


1291

আমি এমবেডড লিনাক্স ডিভাইসে HTTPS সমর্থন যুক্ত করছি adding আমি এই পদক্ষেপগুলি সহ একটি স্ব-স্বাক্ষরিত শংসাপত্র তৈরি করার চেষ্টা করেছি:

openssl req -new > cert.csr
openssl rsa -in privkey.pem -out key.pem
openssl x509 -in cert.csr -out cert.pem -req -signkey key.pem -days 1001
cat key.pem>>cert.pem

এটি কাজ করে তবে আমি গুগল ক্রোমের সাথে কিছু ত্রুটি পেয়েছি:

এটি সম্ভবত আপনি খুঁজছেন এমন সাইট নয়!
সাইটের সুরক্ষা শংসাপত্র বিশ্বাসযোগ্য নয়!

আমি কিছু অনুপস্থিত করছি? এটি কি স্ব-স্বাক্ষরিত শংসাপত্র তৈরির সঠিক উপায়?


40
স্ব-স্বাক্ষরিত শংসাপত্রগুলি ইন্টারনেটের জন্য নিরাপদ হিসাবে বিবেচিত হয়। ফায়ারফক্স সাইটটিকে একটি অবৈধ শংসাপত্র হিসাবে গণ্য করবে, অন্যদিকে ক্রোম এমন আচরণ করবে যাতে সংযোগটি সরল HTTP ছিল। আরও বিশদ: জারভ.নেট.সিকিউরিটি
সাইনড-

34
আপনাকে আপনার ব্রাউজারগুলিতে আপনার সিএ শংসাপত্রটি আমদানি করতে হবে এবং আপনার শংসাপত্রের উপর নির্ভর করা ব্রাউজারগুলিকে বলতে হবে - এটি ব্রাউজারগুলির দ্বারা ইতিমধ্যে বিশ্বাসযোগ্য কোনও বৃহত অর্থের জন্য কোনও সংস্থার দ্বারা স্বাক্ষরিত হন -অনেক সতর্কতা উপেক্ষা করুন এবং ক্লিক করুন এটা অতীতে. আমি নিজেই শেষ বিকল্পটি পছন্দ করি।
Trojanfoe

12
আপনার মতো "স্টক" ওপেনএসএসএল সেটিংস ব্যবহার করা উচিত নয়। এর কারণ আপনি সাবজেক্ট অল্টারনেট নেম (সান) এ ডিএনএস নাম রাখতে পারবেন না। আপনাকে একটি alternate_namesবিভাগের সাথে একটি কনফিগারেশন ফাইল সরবরাহ করতে হবে এবং -configবিকল্পটি দিয়ে এটি পাস করতে হবে । এছাড়াও, প্রচলিত নাম (সিএন) এ ডিএনএস নাম রাখার বিষয়টি আইইটিএফ এবং সিএ / ব্রাউজার ফোরাম উভয়ই অবচিত (তবে নিষিদ্ধ নয়)। সিএন-তে যে কোনও ডিএনএস নাম অবশ্যই এসএএন-তে উপস্থিত থাকতে হবে। সান ব্যবহার এড়ানোর কোনও উপায় নেই। নীচে উত্তর দেখুন।
jww

5
@Jww এর মন্তব্য ছাড়াও। প্রতি মে ২০১ Chrome ক্রোম আর w / o (emtpy) SAN এর শংসাপত্রগুলি গ্রহণ করে না: "এই সাইটের শংসাপত্রটিতে কোনও ডোমেন নাম বা আইপি ঠিকানা সম্বলিত সাবজেক্ট বিকল্প বিকল্প এক্সটেনশন নেই" "
জেরার্ডজেপি

6
এই দিনগুলিতে, যতক্ষণ না আপনার ওয়েবসার্ভার তার এফকিউডিএন দ্বারা ইন্টারনেটে 80 পোর্টে অ্যাক্সেসযোগ্য থাকে আপনি লেটসেক্রিপ্ট ব্যবহার করতে পারেন এবং বিনামূল্যে সিএ সার্টিফিকেট পেতে পারেন (90 দিনের জন্য বৈধ, পুনর্নবীকরণ স্বয়ংক্রিয়ভাবে তৈরি করা যেতে পারে) যা কোনও ব্রাউজারের সতর্কতা দেয় না / বার্তা। www.letsencrypt.com
বার্নি 27'18

উত্তর:


2130

আপনি এক কমান্ডে এটি করতে পারেন:

openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365

আপনি যদি কোনও পাসফ্রেজ দিয়ে আপনার ব্যক্তিগত কী রক্ষা করতে না চান তবে আপনি সংযুক্ত করতে পারেন -nodes(এর জন্য সংক্ষিপ্তও no DES)। অন্যথায় এটি আপনাকে "কমপক্ষে একটি 4 অক্ষর" পাসওয়ার্ডের জন্য অনুরোধ করবে।

daysপ্যারামিটার (365) যদি আপনি কোন সংখ্যা দিয়ে প্রতিস্থাপন করতে পারেন মেয়াদ শেষের তারিখ প্রভাবিত করার। এরপরে এটি আপনাকে "দেশের নাম" এর মতো জিনিসের জন্য অনুরোধ করবে তবে আপনি কেবল Enterডিফল্টগুলিকে আঘাত করতে এবং গ্রহণ করতে পারবেন ।

-subj '/CN=localhost'শংসাপত্রের বিষয়বস্তু সম্পর্কে প্রশ্নগুলি দমন করতে যুক্ত করুন ( localhostআপনার পছন্দসই ডোমেনটি দিয়ে প্রতিস্থাপন করুন )।

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


8
যে কেউ আগ্রহী, তাদের জন্য এখানে ডকুমেন্টেশন রয়েছে , যদি আপনি নিজের কিছু যাচাই করতে চান।

17
তৃতীয় পক্ষের সাথে সই করা কীভাবে আরও সুরক্ষা সরবরাহ করে?
জেমস মিলস

201
এটি অটোমেশনে অন্য যে কেউ ব্যবহার করছে তাদের জন্য, এখানে বিষয়টির জন্য সমস্ত সাধারণ পরামিতি রয়েছে:-subj "/C=US/ST=Oregon/L=Portland/O=Company Name/OU=Org/CN=www.example.com"
অ্যালেক্স এস

16
@ জেমসমিলস আমার অর্থ, এটি সম্পর্কে চিন্তা করুন - যদি তার ভ্যানের পাশে "ফ্রি ক্যান্ডি" লেখা একটি ছায়াময় চেহারার লোক যদি আপনাকে ভিতরে toোকার জন্য আমন্ত্রণ জানায়, আপনি পুরোপুরি দু'বার চিন্তা করতে যাবেন এবং এ সম্পর্কে সতর্ক থাকবেন - তবে যদি আপনি বিশ্বাস করেন এমন কেউ যদি - সত্যিকারের বিশ্বাসের মতো হয় - তবে "নও ম্যান, সে হ'ল" আপনি যদি সেই ফ্রি ক্যান্ডি সম্পর্কে সমস্তরকম হতে চলেছেন।
BrainSlugs83

73
-sha256SHA-256- ভিত্তিক শংসাপত্র তৈরি করতে ব্যবহার করতে ভুলবেন না।
Gea- সুয়ান লিন

533

আমি কিছু অনুপস্থিত করছি? এটি কি স্ব-স্বাক্ষরিত শংসাপত্র তৈরির সঠিক উপায়?

স্ব-স্বাক্ষরিত শংসাপত্র তৈরি করা সহজ। আপনি কেবল openssl reqকমান্ডটি ব্যবহার করুন । ব্রাউজার এবং কমান্ড লাইন সরঞ্জামগুলির মতো ক্লায়েন্টের বৃহত্তম নির্বাচন দ্বারা গ্রাস করা যেতে পারে এমন একটি তৈরি করা কঠিন।

এটি মুশকিল কারণ ব্রাউজারগুলির নিজস্ব প্রয়োজনীয় সেটগুলির সেট রয়েছে এবং তারা আইইটিএফের তুলনায় আরও প্রতিরোধী । ব্রাউজারগুলি দ্বারা ব্যবহৃত প্রয়োজনীয়তাগুলি সিএ / ব্রাউজার ফোরামে নথিভুক্ত করা হয় (নীচে উল্লেখগুলি দেখুন)। দুটি মূল ক্ষেত্রে এই বিধিনিষেধগুলি দেখা দেয়: (1) আস্থার অ্যাঙ্করগুলি এবং (2) ডিএনএসের নাম।

আধুনিক ব্রাউজারগুলি (আমরা ২০১৪ / ২০১৫ সালে যে ওয়ারেজ ব্যবহার করছি) এমন একটি শংসাপত্র চায় যা কোনও বিশ্বাস নোঙ্গরকে আবার চেইন করে, এবং তারা চায় ডিএনএসের নামগুলি শংসাপত্রের নির্দিষ্ট উপায়ে উপস্থাপন করা। এবং ব্রাউজারগুলি সক্রিয়ভাবে স্ব-স্বাক্ষরিত সার্ভার শংসাপত্রগুলির বিরুদ্ধে চলছে।

কিছু ব্রাউজার হ'ল স্ব-স্বাক্ষরিত সার্ভার শংসাপত্র আমদানি করা সহজ করে না। প্রকৃতপক্ষে, আপনি অ্যান্ড্রয়েডের ব্রাউজারের মতো কিছু ব্রাউজারের সাথে পারবেন না। সুতরাং সম্পূর্ণ সমাধান হ'ল আপনার নিজস্ব কর্তৃপক্ষ হয়ে উঠুন।

আপনার নিজস্ব কর্তৃপক্ষ হওয়ার অনুপস্থিতিতে, আপনাকে শংসাপত্রটি সাফল্যের সর্বাধিক সম্ভাবনা দেওয়ার জন্য ডিএনএসের নামগুলি সঠিকভাবে পেতে হবে। তবে আমি আপনাকে নিজের কর্তৃপক্ষ হতে উত্সাহিত করব। এটি আপনার নিজের কর্তৃপক্ষ হয়ে উঠা সহজ, এবং এটি সমস্ত আস্থার বিষয়গুলিকে পিছনে ফেলে দেবে (নিজের চেয়ে বেশি কে বিশ্বাস করবে?)।


এটি সম্ভবত আপনি খুঁজছেন এমন সাইট নয়!
সাইটের সুরক্ষা শংসাপত্র বিশ্বাসযোগ্য নয়!

এটি কারণ সার্ভার শংসাপত্রগুলি বৈধ করতে ব্রাউজারগুলি বিশ্বাস নোঙ্গরগুলির একটি পূর্বনির্ধারিত তালিকা ব্যবহার করে। একটি স্ব-স্বাক্ষরিত শংসাপত্র কোনও বিশ্বস্ত অ্যাঙ্কারে ফিরে চেইন করে না।

এটি এড়ানোর সর্বোত্তম উপায় হ'ল:

  1. আপনার নিজস্ব কর্তৃপক্ষ তৈরি করুন (যেমন, সিএ হন )
  2. সার্ভারের জন্য একটি শংসাপত্র স্বাক্ষর করার অনুরোধ (সিএসআর) তৈরি করুন
  3. আপনার সিএ কী দিয়ে সার্ভারের সিএসআর সাইন করুন
  4. সার্ভারে সার্ভার শংসাপত্র ইনস্টল করুন
  5. ক্লায়েন্টে সিএ শংসাপত্র ইনস্টল করুন

পদক্ষেপ 1 - আপনার নিজস্ব কর্তৃপক্ষ তৈরির অর্থ কেবল স্ব-স্বাক্ষরিত শংসাপত্র তৈরি করা CA: trueএবং সঠিক কী ব্যবহার। এর অর্থ সাবজেক্ট এবং ইস্যুকারী একই সত্তা, বেসিক সীমাবদ্ধতায় সিএ সত্য হিসাবে সেট করা হয় (এটি সমালোচনামূলক হিসাবে চিহ্নিত করা উচিত), কী ব্যবহার keyCertSignএবং crlSign(আপনি যদি সিআরএল ব্যবহার করছেন) এবং সাবজেক্ট কী আইডেন্টিফায়ার (এসকেআই) হয় কর্তৃপক্ষ কী সনাক্তকারী (একেআই) এর সমান K

আপনার নিজস্ব শংসাপত্র কর্তৃপক্ষ হতে, দেখুন * আপনি কীভাবে আপনার শংসাপত্র কর্তৃপক্ষের সাথে শংসাপত্র স্বাক্ষর করার অনুরোধটি স্বাক্ষর করবেন? স্ট্যাক ওভারফ্লো তারপরে, ব্রাউজার দ্বারা ব্যবহৃত ট্রাস্ট স্টোরে আপনার সিএ আমদানি করুন।

ধাপ 2 - 4 মোটামুটিভাবে কী আপনি একটি সর্বজনীন সার্ভার যখন তোমার মত সিএ পরিষেবা পক্ষভুক্ত মুখোমুখি জন্য এখন কি Startcom বা CAcert । পদক্ষেপ 1 এবং 5 আপনাকে তৃতীয় পক্ষের কর্তৃত্ব এড়াতে এবং আপনার নিজের কর্তৃত্বের (নিজের চেয়ে বেশি ভাল কে বিশ্বাস করবে?) হিসাবে কাজ করার অনুমতি দেয়।

ব্রাউজার সতর্কতা এড়ানোর পরবর্তী সর্বোত্তম উপায় হ'ল সার্ভারের শংসাপত্রকে বিশ্বাস করা। তবে অ্যান্ড্রয়েডের ডিফল্ট ব্রাউজারের মতো কিছু ব্রাউজার আপনাকে এটি করতে দেয় না। সুতরাং এটি প্ল্যাটফর্মে কখনও কাজ করবে না।

ব্রাউজার (এবং অন্যান্য অনুরূপ ব্যবহারকারী এজেন্ট) ইস্যু না স্ব-স্বাক্ষরিত সার্টিফিকেট নির্ভর থিংস (IOT) ইন্টারনেট একটি বড় সমস্যা হতে যাচ্ছে। উদাহরণস্বরূপ, আপনি যখন আপনার তাপস্থাপক বা রেফ্রিজারেটরের সাথে এটি প্রোগ্রাম করার জন্য সংযুক্ত হন তখন কী ঘটবে? উত্তরটি হ'ল ব্যবহারকারীর অভিজ্ঞতার দিক থেকে ভাল কিছু নয়।

ডাব্লু 3 সি এর ওয়েবঅ্যাপসেক ওয়ার্কিং গ্রুপ বিষয়টি দেখতে শুরু করেছে। উদাহরণস্বরূপ, প্রস্তাব দেখুন: এইচটিটিপিকে অ-সুরক্ষিত হিসাবে চিহ্নিত করা হচ্ছে


কীভাবে ওপেনএসএসএল দ্বারা স্ব-স্বাক্ষরিত শংসাপত্র তৈরি করবেন

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

ডিএনএসের নামগুলি সানটিতে লাইনটির সাথে কনফিগারেশন ফাইলের মাধ্যমে স্থাপন করা হয়েছে subjectAltName = @alternate_names(কমান্ড লাইনের মাধ্যমে এটি করার কোনও উপায় নেই)। তারপরে alternate_namesকনফিগারেশন ফাইলে একটি বিভাগ রয়েছে (আপনার স্বাদ অনুসারে আপনার এটি টিউন করা উচিত):

[ alternate_names ]

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

# Add these if you need them. But usually you don't want them or
#   need them in production. You may need them for development.
# DNS.5       = localhost
# DNS.6       = localhost.localdomain
# IP.1        = 127.0.0.1
# IP.2        = ::1

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

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

সম্পর্কিত: ব্রাউজারগুলি সিএ / ব্রাউজার ফোরাম নীতি অনুসরণ করে; এবং আইইটিএফ নীতিগুলি নয়। ওপেনএসএসএল (যা সাধারণত আইইটিএফ অনুসরণ করে) এর সাথে একটি শংসাপত্র তৈরি করা তার অন্যতম কারণ ব্রাউজারের অধীনে কখনও কখনও বৈধতা দেয় না (ব্রাউজারগুলি সিএ / বি অনুসরণ করে)। তারা বিভিন্ন মান, তাদের বিভিন্ন প্রদানের নীতি এবং বিভিন্ন বৈধতা প্রয়োজনীয়তা আছে।


একটি স্ব স্ব স্বাক্ষরিত শংসাপত্র তৈরি করুন ( -x509বিকল্পের সংযোজনটি লক্ষ্য করুন ):

openssl req -config example-com.conf -new -x509 -sha256 -newkey rsa:2048 -nodes \
    -keyout example-com.key.pem -days 365 -out example-com.cert.pem

একটি স্বাক্ষর করার অনুরোধ তৈরি করুন ( -x509বিকল্পের অভাব লক্ষ্য করুন ):

openssl req -config example-com.conf -new -sha256 -newkey rsa:2048 -nodes \
    -keyout example-com.key.pem -days 365 -out example-com.req.pem

একটি স্ব-স্বাক্ষরিত শংসাপত্র মুদ্রণ করুন :

openssl x509 -in example-com.cert.pem -text -noout

একটি স্বাক্ষর করার অনুরোধ মুদ্রণ করুন :

openssl req -in example-com.req.pem -text -noout

কনফিগারেশন ফাইল ( -configবিকল্প মাধ্যমে পাস )

[ req ]
default_bits        = 2048
default_keyfile     = server-key.pem
distinguished_name  = subject
req_extensions      = req_ext
x509_extensions     = x509_ext
string_mask         = utf8only

# The Subject DN can be formed using X501 or RFC 4514 (see RFC 4519 for a description).
#   Its sort of a mashup. For example, RFC 4514 does not provide emailAddress.
[ subject ]
countryName         = Country Name (2 letter code)
countryName_default     = US

stateOrProvinceName     = State or Province Name (full name)
stateOrProvinceName_default = NY

localityName            = Locality Name (eg, city)
localityName_default        = New York

organizationName         = Organization Name (eg, company)
organizationName_default    = Example, LLC

# Use a friendly name here because it's presented to the user. The server's DNS
#   names are placed in Subject Alternate Names. Plus, DNS names here is deprecated
#   by both IETF and CA/Browser Forums. If you place a DNS name here, then you
#   must include the DNS name in the SAN too (otherwise, Chrome and others that
#   strictly follow the CA/Browser Baseline Requirements will fail).
commonName          = Common Name (e.g. server FQDN or YOUR name)
commonName_default      = Example Company

emailAddress            = Email Address
emailAddress_default        = test@example.com

# Section x509_ext is used when generating a self-signed certificate. I.e., openssl req -x509 ...
[ x509_ext ]

subjectKeyIdentifier        = hash
authorityKeyIdentifier    = keyid,issuer

# You only need digitalSignature below. *If* you don't allow
#   RSA Key transport (i.e., you use ephemeral cipher suites), then
#   omit keyEncipherment because that's key transport.
basicConstraints        = CA:FALSE
keyUsage            = digitalSignature, keyEncipherment
subjectAltName          = @alternate_names
nsComment           = "OpenSSL Generated Certificate"

# RFC 5280, Section 4.2.1.12 makes EKU optional
#   CA/Browser Baseline Requirements, Appendix (B)(3)(G) makes me confused
#   In either case, you probably only need serverAuth.
# extendedKeyUsage    = serverAuth, clientAuth

# Section req_ext is used when generating a certificate signing request. I.e., openssl req ...
[ req_ext ]

subjectKeyIdentifier        = hash

basicConstraints        = CA:FALSE
keyUsage            = digitalSignature, keyEncipherment
subjectAltName          = @alternate_names
nsComment           = "OpenSSL Generated Certificate"

# RFC 5280, Section 4.2.1.12 makes EKU optional
#   CA/Browser Baseline Requirements, Appendix (B)(3)(G) makes me confused
#   In either case, you probably only need serverAuth.
# extendedKeyUsage    = serverAuth, clientAuth

[ alternate_names ]

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

# Add these if you need them. But usually you don't want them or
#   need them in production. You may need them for development.
# DNS.5       = localhost
# DNS.6       = localhost.localdomain
# DNS.7       = 127.0.0.1

# IPv6 localhost
# DNS.8     = ::1

ক্রোমের জন্য আপনাকে নিম্নলিখিতগুলি করার প্রয়োজন হতে পারে। অন্যথায় ক্রোম অভিযোগ করতে পারে একটি সাধারণ নামটি অবৈধ ( ERR_CERT_COMMON_NAME_INVALID) । স্যানের একটি আইপি ঠিকানা এবং এই সিএনএন-এর মধ্যে সম্পর্ক কী তা আমি নিশ্চিত নই।

# IPv4 localhost
# IP.1       = 127.0.0.1

# IPv6 localhost
# IP.2     = ::1

X.509 / PKIX শংসাপত্রগুলিতে ডিএনএস নামগুলি পরিচালনা করার বিষয়ে অন্যান্য নিয়ম রয়েছে। বিধিগুলির জন্য এই নথিগুলি পড়ুন:

আরএফসি 6797 এবং আরএফসি 7469 তালিকাভুক্ত করা হয়েছে, কারণ তারা অন্যান্য আরএফসি এবং সিএ / বি নথিগুলির চেয়ে বেশি সীমাবদ্ধ। আরএফসি 6797 এবং 7469 কোনও আইপি ঠিকানার অনুমতি দেয় না


4
alternate_namesবিভাগে ওয়াইল্ডকার্ড ব্যবহার করা কি সম্ভব ? বিশেষত সাব-সাব ডোমেন। এই উত্তরটি এখানে উল্লেখ করে আমার একটি প্রশ্ন রয়েছে: সার্ভারফল্ট /
লিওনার্ডচালিস

3
আমি সবেমাত্র তার নির্দিষ্ট প্রশ্নের জবাব দিয়েছি। আমি মনে করি যখন উত্তরটি এত সহজ ছিল তখন এই দীর্ঘ সুরক্ষা বিবরণ যুক্ত করার কোনও অর্থ হয় না
ডিয়েগো ওয়াইটিসেন

14
@ ডিয়েগস - আপনার উত্তর সম্পূর্ণ বা সঠিক নয়। এটি সঠিক না হওয়ার কারণটি আপনি যে দীর্ঘ পোস্টে পড়তে চান না তা নিয়ে আলোচনা করা হয়েছে :)
jww

1
ধন্যবাদ! আমি আপনার পোস্ট খুব সহায়ক বলে মনে হয়েছে। এফওয়াইআই আমি সম্প্রতি ভল্টের সাথে খেলছিলাম এবং এটি ডিএনএস.এক্স 127 এর চেয়ে আইপি.এক্স 127.0.0.1 এ জোর দিয়ে দেখেছি ... আমি এটি পরীক্ষা করে দেখিনি যে এটি স্ট্যান্ডার্ডে আছে কি না।
চমেহ

4
আপনাকে @jww ধন্যবাদ। আপনি বলেছিলেন, "১. আপনার নিজস্ব কর্তৃপক্ষ তৈরি করুন (অর্থাত্ সিএ হয়ে যান)" , তারপরে বলেছিলেন, "৫. ক্লায়েন্টে সিএ শংসাপত্র ইনস্টল করুন" । রুট কীটি আপোস হয়ে গেলে, কোনও দূষিত ব্যক্তি সেই কীটির সাথে যে কোনও ডোমেনের জন্য একটি সারিতে স্বাক্ষর করতে পারে, এবং যদি তারা আপনাকে তাদের ওয়েবসাইটে যেতে প্ররোচিত করে, তবে তারা এখন ম্যান-ইন-দ্য-মিডল আক্রমণ করতে পারে। রুট সিএ তৈরির উপায় কি এমন আছে যে এটি কেবলমাত্র মধ্যস্থতাকারী CAগুলিতে স্বাক্ষর করতে পারে শংসাপত্রগুলি নয়? তারপরে আপনি কোনও নাম বাধা দিয়ে আপনার মধ্যস্থতাকারী সিএ সুরক্ষিত করতে পারেন।
রবিন জিম্মারম্যান

408

ডকুমেন্টেশন থেকে আরও বিস্তারিতভাবে বর্ণিত @ ডিয়েগোসের উত্তরে বর্ণিত বিকল্পগুলি এখানে :

openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days XXX
req

পিকেসিএস # 10 শংসাপত্রের অনুরোধ এবং শংসাপত্র উত্পন্ন উত্সব।

-x509

এই বিকল্পটি শংসাপত্রের অনুরোধের পরিবর্তে স্ব স্বাক্ষরিত শংসাপত্রের আউটপুট দেয়। এটি সাধারণত পরীক্ষার শংসাপত্র বা স্ব স্বাক্ষরিত রুট সিএ তৈরি করতে ব্যবহৃত হয়।

-newkey arg

এই বিকল্পটি একটি নতুন শংসাপত্রের অনুরোধ এবং একটি নতুন ব্যক্তিগত কী তৈরি করে। যুক্তি বিভিন্ন রূপের একটি গ্রহণ করে। আরএসএ: ন্যবটস , যেখানে ন্যুটগুলি বিটের সংখ্যা, আকারে একটি আরএসএ কী ন্যুট তৈরি করে ।

-keyout filename

এটিতে নতুন তৈরি করা ব্যক্তিগত কী লিখতে ফাইলের নাম দেয়।

-out filename

এটি লিখতে আউটপুট ফাইলের নাম বা ডিফল্টভাবে স্ট্যান্ডার্ড আউটপুট নির্দিষ্ট করে।

-days n

যখন -x509 বিকল্পটি ব্যবহার করা হচ্ছে তখন এটি শংসাপত্রের শংসাপত্রের জন্য কত দিনের সংখ্যা নির্দিষ্ট করে। ডিফল্ট 30 দিন।

-nodes

যদি এই বিকল্পটি নির্দিষ্ট করা থাকে তবে একটি ব্যক্তিগত কী তৈরি করা থাকলে এটি এনক্রিপ্ট করা হবে না।

ডকুমেন্টেশন আসলে উপরের তুলনায় আরও বিস্তারিত; আমি এখানে এটি সংক্ষিপ্ত।


3
XXXমূল কমান্ডে 'এর জন্য শংসাপত্র প্রত্যয়ন করা দিনের সংখ্যা' দিয়ে প্রতিস্থাপিত হবে। ডিফল্ট 30 দিন। উদাহরণস্বরূপ, -days XXXহয়ে -days 365যদি আপনি আপনার যা নিশ্চিতভাবে ঘটবে 365 দিন জন্য বৈধ হতে চাই। আরও জন্য ডক্স দেখুন
নাথন জোনস 21 ই

ডকুমেন্টেশন যোগ করার জন্য ধন্যবাদ। কমান্ডটি
দি রেড মটর

313

2020 পর্যন্ত, নিম্নলিখিত কমান্ডটি সান সহ আপনার সমস্ত প্রয়োজনগুলি সরবরাহ করে:

openssl req -x509 -newkey rsa:4096 -sha256 -days 3650 -nodes \
  -keyout example.key -out example.crt -extensions san -config \
  <(echo "[req]"; 
    echo distinguished_name=req; 
    echo "[san]"; 
    echo subjectAltName=DNS:example.com,DNS:example.net,IP:10.0.0.1
    ) \
  -subj "/CN=example.com"

ওপেনএসএসএল ≥ 1.1.1 এ, এটি সংক্ষিপ্ত করা যেতে পারে:

openssl req -x509 -newkey rsa:4096 -sha256 -days 3650 -nodes \
  -keyout example.key -out example.crt -subj "/CN=example.com" \
  -addext "subjectAltName=DNS:example.com,DNS:example.net,IP:10.0.0.1"

এটি এমন একটি শংসাপত্র তৈরি করে

  • ডোমেনগুলির জন্য বৈধ example.comএবং example.net(SAN),
  • IP ঠিকানা 10.0.0.1(SAN) এর জন্যও বৈধ ,
  • তুলনামূলকভাবে শক্তিশালী (2020 হিসাবে) এবং
  • 3650দিনের জন্য বৈধ (10 বছর)।

এটি নিম্নলিখিত ফাইলগুলি তৈরি করে:

  • ব্যক্তিগত কী: example.key
  • সনদপত্র: example.crt

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

মন্তব্য # 1: ক্রিপ্টো প্যারামিটার

যেহেতু শংসাপত্রটি স্ব-স্বাক্ষরিত এবং ব্যবহারকারীরা ম্যানুয়ালি স্বীকৃত হওয়া প্রয়োজন, তাই এটি একটি স্বল্প মেয়াদ উত্তীর্ণ বা দুর্বল ক্রিপ্টোগ্রাফি ব্যবহার করে বোঝায় না।

ভবিষ্যতে আপনি 4096আরএসএ কী এবং হ্যাশ অ্যালগরিদম এর চেয়ে শক্তিশালী বিটের চেয়ে বেশি ব্যবহার করতে চাইতে পারেন sha256, তবে ২০২০ সালের মতো এটি বুদ্ধিমান মান। সমস্ত আধুনিক ব্রাউজার দ্বারা সমর্থিত হয়ে এগুলি যথেষ্ট শক্তিশালী।

মন্তব্য # 2: প্যারামিটার " -nodes"

তাত্ত্বিকভাবে আপনি -nodesপ্যারামিটারটি ছাড়তে পারেন (যার অর্থ "কোনও ডিইএস এনক্রিপশন নেই"), কোনও ক্ষেত্রে example.keyপাসওয়ার্ড দিয়ে এনক্রিপ্ট করা হবে। তবে এটি কোনও সার্ভার ইনস্টলেশনের জন্য প্রায়শই কার্যকর নয়, কারণ আপনাকে হয় পাসওয়ার্ডটি সার্ভারেও সংরক্ষণ করতে হবে, অথবা প্রতিটি পুনরায় বুট করার সময় আপনাকে নিজে এটি প্রবেশ করতে হবে।

মন্তব্য # 3: এছাড়াও দেখুন


1
আর্গ / সিএন = লোকালহোস্টটি সি: / প্রোগ্রাম ফাইলে / গিট / সিএন = লোকালহোস্টে প্রসারিত হওয়ার ফলে ঠিক কী দোষ করা উচিত তা আমি বুঝতে পারি না, তাই আমি পুরো কমান্ডটি কেবল সিমি সিএমডি.এক্সে চালিয়েছি এবং এটি ঠিক কাজ করেছে। ঠিক যদি কেউ এর সাথে লড়াই করে চলেছে।
ইউরি পজনিয়াক

1
@ ফ্র্যাঙ্কলিনইউ আপনি কি নিশ্চিত যে এখন থেকে 10 বছরে আরএসএ: 2048 যথেষ্ট হবে? কারণ এটি বৈধতা সময়কাল। যেমনটি ব্যাখ্যা করা হয়েছে, স্বল্প মেয়াদোত্তীর্ণতা বা দুর্বল ক্রিপ্টো ব্যবহার করা বোধগম্য নয়। সর্বাধিক 2048-বিট আরএসএ কীগুলির সর্বাধিক 1-3 বছরের মেয়াদ থাকে। ওপেনএসএসএল 1.1.1 সম্পর্কিত, আমি এখনও সেখানে শ্যা 256 রেখে দিচ্ছি, সুতরাং আপনি আরও শক্তিশালী হ্যাশ চাইলে এটি পরিবর্তন করা আরও সুস্পষ্ট এবং স্পষ্ট।
vog

1
@ ডেভফারগুসন শংসাপত্রের //CN=localhostপরিবর্তে তখন তৈরি হয় না /CN=localhost? সঠিক পালাতে এখানে সহায়তা করবে? উদাহরণস্বরূপ, প্রতিস্থাপন করে /CN=localhostদিয়ে "/CN=localhost"একটি পরিষ্কার ভাবে সমস্যার সমাধান?
vog

4
অনেকগুলি বয়লারপ্লেট সহ দীর্ঘ-বায়ুযুক্ত কনফিগারেশন ফাইল তৈরি না করেই "ওয়ান-লাইনার" তৈরি করতে নতুন প্রয়োজনীয় SAN ব্যবহার করে 1000+ 1s। সাবাশ!
জোশুয়া পিন্টার

1
@ সাবধানবাগ ধন্যবাদ! আমি কেবল উত্তরে এটি সম্পাদনা করেছি। উত্তর এখন উইন্ডোজ / মিনজিডাব্লুয়ের জন্য সঠিক?
vog

142

আমি মন্তব্য করতে পারি না, তাই আমি এটি আলাদা উত্তর হিসাবে রাখব put আমি স্বীকৃত ওয়ান-লাইনারের উত্তর সহ কয়েকটি সমস্যা পেয়েছি:

  • ওয়ান-লাইনারে কীতে একটি পাসফ্রেজ অন্তর্ভুক্ত রয়েছে।
  • ওয়ান-লাইনার SHA-1 ব্যবহার করে যা অনেক ব্রাউজারে কনসোলে সতর্কতা ছুড়ে দেয়।

এখানে একটি সরলিকৃত সংস্করণ যা পাসফ্রেজগুলি সরিয়ে দেয়, সতর্কতা দমন করতে সুরক্ষার ব্যবস্থা তৈরি করে এবং পূর্ণ প্রশ্ন তালিকাকে সরিয়ে দিতে সাব-ইন পাস করার জন্য মন্তব্যে একটি পরামর্শ অন্তর্ভুক্ত করেছে:

openssl genrsa -out server.key 2048
openssl rsa -in server.key -out server.key
openssl req -sha256 -new -key server.key -out server.csr -subj '/CN=localhost'
openssl x509 -req -sha256 -days 365 -in server.csr -signkey server.key -out server.crt

আপনার প্রয়োজনীয় ডোমেনটি দিয়ে 'লোকালহোস্ট' প্রতিস্থাপন করুন। আপনাকে প্রথম দুটি কমান্ড একের পর এক চালাতে হবে কারণ ওপেনএসএসএল একটি পাসফ্রেজের জন্য অনুরোধ করবে।

দুজনকে .pem ফাইলে একত্রিত করতে:

cat server.crt server.key > cert.pem

6
Github.com/molnarg/node-http2 এর জন্য আমার একটি ডেভ শংসাপত্র প্রয়োজন এবং এই উত্তরটি কেবল সেরা।
কপাজ

1
শংসাপত্র এবং একটি একক ফাইলের মধ্যে কী একত্রিত করার জন্য: cat server.crt server.key >foo-cert.pem। উদাহরণটির সাথে কাজ করেopenssl-1.0.2d/demos/ssl/
18446744073709551615

আমি এইভাবে তৈরি করা শংসাপত্রটি এখনও SHA1 ব্যবহার করছে।
ব্যবহারকারী169771

1
Tks, কাজ করে মহান একটি স্ব শংসাপত্র স্বাক্ষর তৈরি করতে FreeBSD 10 OpenLDAP 2.4দিয়েTLS
থিয়াগো পেরেইরা

2
কী.পেম ফাইল সম্পর্কে কী?
quikchange

72

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

আবার দৌড়ানোর দ্রুততম উপায় হ'ল একটি স্বল্প, একা একা কনফ ফাইল

  1. একটি ওপেনএসএসএল কনফিগারেশন ফাইল তৈরি করুন (উদাহরণ req.cnf:)

    [req]
    distinguished_name = req_distinguished_name
    x509_extensions = v3_req
    prompt = no
    [req_distinguished_name]
    C = US
    ST = VA
    L = SomeCity
    O = MyCompany
    OU = MyDivision
    CN = www.company.com
    [v3_req]
    keyUsage = critical, digitalSignature, keyAgreement
    extendedKeyUsage = serverAuth
    subjectAltName = @alt_names
    [alt_names]
    DNS.1 = www.company.com
    DNS.2 = company.com
    DNS.3 = company.net
    
  2. এই কনফিগার ফাইলটি উল্লেখ করে শংসাপত্র তৈরি করুন

    openssl req -x509 -nodes -days 730 -newkey rsa:2048 \
     -keyout cert.key -out cert.pem -config req.cnf -sha256
    

Https://support.citrix.com/article/CTX135602 থেকে কনফিগারেশন উদাহরণ


1
এটি আমার জন্য সর্বশেষ প্যারামিটার-এক্সটেনশনগুলি 'v3_req' অপসারণের পরে কাজ করেছিল যা একটি ত্রুটি সৃষ্টি করেছিল। উইন্ডোজের জন্য ওপেনএসএসএল ব্যবহার করা। অবশেষে, আমি এই সমস্যাটি সমাধান করতে পরিচালনা করি! ধন্যবাদ।
সিজিডো 10:25

1
@ কিওপ্যাক্স আপনি ঠিক বলেছেন - সেই প্যারামিটারটি সিএনএফ ফাইলের 3 লাইনের সাথে অপ্রয়োজনীয়; আপডেট করা হয়েছে।
রাইমো

2
সলিড ওয়ে। ধন্যবাদ। আমি যুক্ত করার পরামর্শ দিই -sha256
চেরোভিম

5
আপনি এখন সান সঙ্গে কমান্ড লাইন উল্লেখ করতে পারেন -extension 'subjectAltName = DNS:dom.ain, DNS:oth.er'দেখুন github.com/openssl/openssl/pull/4986
আলেক্সান্ডার DuBreuil

2
দেখে মনে হচ্ছে এই বিকল্পটি -addextএখনই বলা হয়েছে।
আলেকজান্ডার জারুবকিন

67

আমি -sha256 যুক্ত করার পরামর্শ দেবSHA-2 হ্যাশ অ্যালগরিদম ব্যবহার পরামিতি , কারণ বড় ব্রাউজারগুলি "SHA-1 শংসাপত্রগুলি" সুরক্ষিত হিসাবে দেখানোর বিষয়ে বিবেচনা করছে।

গৃহীত উত্তর থেকে একই কমান্ড লাইন - @ -ডুডোগুলি যুক্ত -শ 256 সহ

ওপেনএসএল রেক -x509 -sha256 -নউকি আরএসএ: 2048 -কিয়াউট কী.পিএম-আউট সার্টিফিকেট.পিএম -ডেএক্সএক্সএক্স

গুগল সুরক্ষা ব্লগে আরও তথ্য

আপডেট মে 2018. অনেকেই মন্তব্যগুলিতে মন্তব্য করেছেন যে SHA-2 ব্যবহার করে স্ব-স্বাক্ষরিত শংসাপত্রের কোনও সুরক্ষা যুক্ত হয় না। তবে আমি এখনও এটি পুরানো / নিরাপত্তাহীন ক্রিপ্টোগ্রাফিক হ্যাশ ফাংশন ব্যবহার না করার একটি ভাল অভ্যাস হিসাবে ব্যবহার করার পরামর্শ দিই। সম্পূর্ণ ব্যাখ্যা পাওয়া যায় কেন শেষ সত্তার শংসাপত্রের উপরের শংসাপত্রের জন্য এটি SHA-1 ভিত্তিক হতে পারে?


1
যদি একটি স্ব স্বাক্ষরিত কী, এটা যাহাই হউক না কেন ব্রাউজার ত্রুটি উৎপন্ন যাচ্ছে তাই এই না সত্যিই ব্যাপার
মার্ক

30
@ মার্ক, এটি গুরুত্বপূর্ণ, কারণ SHA-2 আরও সুরক্ষিত
মেরিস বি।

1
সার্টিটি.পেমের নামকরণের পরে উইন্ডোতে শংসাপত্রটি খোলার পরে বলা হয়েছে ফিঙ্গারপ্রিন্ট অ্যালগরিদমটি এখনও শ 1, তবে স্বাক্ষর হ্যাশ অ্যালগরিদম sha256।
পাপ করেছেন

2
"বিশ্ব-শ্রেণীর এনক্রিপশন * শূন্য প্রমাণীকরণ = শূন্য সুরক্ষা" জার্মভ.নেট
-

4
মনে রাখবেন যে স্ব-স্বাক্ষরিত শংসাপত্রের স্বাক্ষর অ্যালগরিদম এটি নির্ভরযোগ্য কিনা তা সিদ্ধান্ত নেওয়ার ক্ষেত্রে অপ্রাসঙ্গিক। রুট সিএ শংসাপত্রগুলি স্ব-স্বাক্ষরিত। এবং মে 2018 পর্যন্ত এখনও অনেকগুলি সক্রিয় রুট সিএ শংসাপত্র রয়েছে যা SHA-1 স্বাক্ষরিত। কারণ কোনও শংসাপত্র নিজেই বিশ্বাস করে কিনা তা বিবেচ্য নয় বা সেই শংসাপত্র কীভাবে সেই বিশ্বাসের সত্যতা যাচাই করে। আপনি হয় রুট / স্ব-স্বাক্ষরিত শংসাপত্রের উপর নির্ভর করেন যে এটি কে এটি বলে, বা আপনি তা করেন না। সিকিউরিটি.সটাকেক্সচেঞ্জ
সেকশনস / ৯৯৯

20

SAN (সাবজেক্টআল্টনেম) স্ব-স্বাক্ষরিত শংসাপত্রগুলিতে সেট করতে আমি স্থানীয় বাক্সগুলিতে এই স্ক্রিপ্টটি ব্যবহার করি।

এই স্ক্রিপ্টটি ডোমেনের নাম (উদাহরণ.com) নেয় এবং একই শংসাপত্রে * .example.com এবং উদাহরণ.com এর জন্য SAN উত্পন্ন করে। নীচের বিভাগগুলি মন্তব্য করা হয়। স্ক্রিপ্টটির নাম দিন (উদাঃ)generate-ssl.sh ) এবং এটিকে কার্যকর করার অনুমতি দিন। ফাইলগুলি স্ক্রিপ্টের মতো একই ডিরেক্টরিতে লেখা হবে।

ক্রোম 58 এর আগে স্ব-স্বাক্ষরিত শংসাপত্রগুলিতে SAN সেট করা দরকার।

#!/usr/bin/env bash

# Set the TLD domain we want to use
BASE_DOMAIN="example.com"

# Days for the cert to live
DAYS=1095

# A blank passphrase
PASSPHRASE=""

# Generated configuration file
CONFIG_FILE="config.txt"

cat > $CONFIG_FILE <<-EOF
[req]
default_bits = 2048
prompt = no
default_md = sha256
x509_extensions = v3_req
distinguished_name = dn

[dn]
C = CA
ST = BC
L = Vancouver
O = Example Corp
OU = Testing Domain
emailAddress = webmaster@$BASE_DOMAIN
CN = $BASE_DOMAIN

[v3_req]
subjectAltName = @alt_names

[alt_names]
DNS.1 = *.$BASE_DOMAIN
DNS.2 = $BASE_DOMAIN
EOF

# The file name can be anything
FILE_NAME="$BASE_DOMAIN"

# Remove previous keys
echo "Removing existing certs like $FILE_NAME.*"
chmod 770 $FILE_NAME.*
rm $FILE_NAME.*

echo "Generating certs for $BASE_DOMAIN"

# Generate our Private Key, CSR and Certificate
# Use SHA-2 as SHA-1 is unsupported from Jan 1, 2017

openssl req -new -x509 -newkey rsa:2048 -sha256 -nodes -keyout "$FILE_NAME.key" -days $DAYS -out "$FILE_NAME.crt" -passin pass:$PASSPHRASE -config "$CONFIG_FILE"

# OPTIONAL - write an info to see the details of the generated crt
openssl x509 -noout -fingerprint -text < "$FILE_NAME.crt" > "$FILE_NAME.info"

# Protect the key
chmod 400 "$FILE_NAME.key"

এই স্ক্রিপ্টটি একটি তথ্য ফাইলও লিখেছে, যাতে আপনি নতুন শংসাপত্রটি পরীক্ষা করতে পারেন এবং SAN সঠিকভাবে সেট করা আছে তা যাচাই করতে পারেন।

                ...
                28:dd:b8:1e:34:b5:b1:44:1a:60:6d:e3:3c:5a:c4:
                da:3d
            Exponent: 65537 (0x10001)
    X509v3 extensions:
        X509v3 Subject Alternative Name: 
            DNS:*.example.com, DNS:example.com
Signature Algorithm: sha256WithRSAEncryption
     3b:35:5a:d6:9e:92:4f:fc:f4:f4:87:78:cd:c7:8d:cd:8c:cc:
     ...

আপনি যদি অ্যাপাচি ব্যবহার করে থাকেন তবে আপনার কনফিগারেশন ফাইলে আপনি উপরের শংসাপত্রটি উল্লেখ করতে পারেন:

<VirtualHost _default_:443>
    ServerName example.com
    ServerAlias www.example.com
    DocumentRoot /var/www/htdocs

    SSLEngine on
    SSLCertificateFile path/to/your/example.com.crt
    SSLCertificateKeyFile path/to/your/example.com.key
</VirtualHost>

নতুন শংসাপত্র কার্যকর হওয়ার জন্য আপনার অ্যাপাচি (বা এনগিনেক্স, বা আইআইএস) সার্ভারটি পুনরায় চালু করতে ভুলবেন না।


ম্যাকোস হাই সিয়েরা এবং ক্রোম 58
সাকিব ওমর

আমি এখনও নিশ্চিত নই যে সিএন কীভাবে সামগ্রিক সেটআপটিকে প্রভাবিত করে? আমি এটিকে চালানোর চেষ্টা করছি localhostবা এর মতো 127.0.0.1:port#কোনও কিছুর CNজন্য কী হতে পারে ।
ডিজে 2

@ DJ2 আমি BASE_DOMAIN = "স্থানীয় হোস্ট" তে সেট হবে
ছকড়া

9

2017 এক-লাইনার:

openssl req \
-newkey rsa:2048 \
-x509 \
-nodes \
-keyout server.pem \
-new \
-out server.pem \
-subj /CN=localhost \
-reqexts SAN \
-extensions SAN \
-config <(cat /System/Library/OpenSSL/openssl.cnf \
    <(printf '[SAN]\nsubjectAltName=DNS:localhost')) \
-sha256 \
-days 3650

এটি অন্য কোনও কনফিগারেশন ফাইল না করে সান সরবরাহ করার সাথে সাথে এটি ক্রোম 57 এও কাজ করে। এটি এখানে একটি উত্তর থেকে নেওয়া হয়েছিল ।

এটি একটি একক .pem ফাইল তৈরি করে যাতে প্রাইভেট কী এবং সার্ট উভয়ই থাকে। প্রয়োজনে আপনি এগুলি আলাদা .pem ফাইলগুলিতে সরিয়ে নিতে পারেন।


2
লিনাক্স ব্যবহারকারীদের জন্য আপনাকে কনফিগারেশনের জন্য সেই পথটি পরিবর্তন করতে হবে। উদাহরণস্বরূপ বর্তমান উবুন্টু /etc/ssl/openssl.confকাজগুলি
ডিক্লেশন

একটি এক মাছ ধরার নৌকা যে openssl.cnf অবস্থান নির্দিষ্ট করার প্রয়োজন নেই জন্য, দেখুন: stackoverflow.com/a/41366949/19163
vog

7

আমি মন্তব্য করতে পারি না তাই আমি একটি পৃথক উত্তর যুক্ত করি। আমি এনজিআইএনএক্স-এর জন্য একটি স্ব-স্বাক্ষরিত শংসাপত্র তৈরি করার চেষ্টা করেছি এবং এটি সহজ ছিল, কিন্তু যখন আমি এটি ক্রোম সাদা তালিকায় যুক্ত করতে চেয়েছিলাম তখন আমার একটি সমস্যা হয়েছিল। এবং আমার সমাধানটি ছিল একটি রুট শংসাপত্র তৈরি করা এবং এটির দ্বারা একটি শিশু শংসাপত্রে স্বাক্ষর করা।

সুতরাং ধাপে ধাপে। Config_ssl_ca.cnf ফাইল তৈরি করুন বিজ্ঞপ্তি, কনফিগার ফাইলে একটি বিকল্প বেসকন্ট্রেন্টস = সিএ রয়েছে: সত্য যার অর্থ এই শংসাপত্রটি রুট হওয়ার কথা।

এটি একটি ভাল অনুশীলন, কারণ আপনি এটি একবার তৈরি করেছেন এবং পুনরায় ব্যবহার করতে পারেন।

[ req ]
default_bits = 2048

prompt = no
distinguished_name=req_distinguished_name
req_extensions = v3_req

[ req_distinguished_name ]
countryName=UA
stateOrProvinceName=root region
localityName=root city
organizationName=root organisation
organizationalUnitName=roote department
commonName=root
emailAddress=root_email@root.localhost

[ alternate_names ]
DNS.1        = market.localhost
DNS.2        = www.market.localhost
DNS.3        = mail.market.localhost
DNS.4        = ftp.market.localhost

[ v3_req ]
keyUsage=digitalSignature
basicConstraints=CA:true
subjectKeyIdentifier = hash
subjectAltName = @alternate_names

আপনার শিশু শংসাপত্রের জন্য পরবর্তী কনফিগারেশন ফাইল।

[ req ]
default_bits = 2048

prompt = no
distinguished_name=req_distinguished_name
req_extensions = v3_req

[ req_distinguished_name ]
countryName=UA
stateOrProvinceName=Kyiv region
localityName=Kyiv
organizationName=market place
organizationalUnitName=market place department
commonName=FirstName LastName
emailAddress=email@market.localhost

[ alternate_names ]
DNS.1        = market.localhost
DNS.2        = www.market.localhost
DNS.3        = mail.market.localhost
DNS.4        = ftp.market.localhost

[ v3_req ]
keyUsage=digitalSignature
basicConstraints=CA:false
subjectAltName = @alternate_names
subjectKeyIdentifier = hash

প্রথম পদক্ষেপ - রুট কী এবং শংসাপত্র তৈরি করুন

openssl genrsa -out ca.key 2048
openssl req -new -x509 -key ca.key -out ca.crt -days 365 -config config_ssl_ca.cnf

দ্বিতীয় পদক্ষেপটি চাইল্ড কী এবং ফাইল সিএসআর তৈরি করে - শংসাপত্র স্বাক্ষরের অনুরোধ। কারণ ধারণাটি হ'ল মূল পরিচয় দিয়ে শিশু শংসাপত্রে স্বাক্ষর করা এবং একটি সঠিক শংসাপত্র পাওয়া

openssl genrsa -out market.key 2048
openssl req -new -sha256 -key market.key -config config_ssl.cnf -out market.csr

লিনাক্স টার্মিনালটি খুলুন এবং এই কমান্ডটি ইকো করুন 0

echo 1 > ca.srl
touch index.txt

ca.srl টেক্সট পরবর্তী ক্রমিক সংখ্যা ফাইল হেক্স ব্যবহার। বাধ্যতামূলক. এই ফাইলটি অবশ্যই উপস্থিত থাকতে হবে এবং একটি বৈধ সিরিয়াল নম্বর থাকতে হবে।

শেষ পদক্ষেপ, আরও একটি কনফিগার ফাইল ক্রেট করুন এবং এটিকে কনফিগার_সিএএনএফ কল করুন

# we use 'ca' as the default section because we're usign the ca command
[ ca ]
default_ca = my_ca

[ my_ca ]
#  a text file containing the next serial number to use in hex. Mandatory.
#  This file must be present and contain a valid serial number.
serial = ./ca.srl

# the text database file to use. Mandatory. This file must be present though
# initially it will be empty.
database = ./index.txt

# specifies the directory where new certificates will be placed. Mandatory.
new_certs_dir = ./

# the file containing the CA certificate. Mandatory
certificate = ./ca.crt

# the file contaning the CA private key. Mandatory
private_key = ./ca.key

# the message digest algorithm. Remember to not use MD5
default_md = sha256

# for how many days will the signed certificate be valid
default_days = 365

# a section with a set of variables corresponding to DN fields
policy = my_policy

# MOST IMPORTANT PART OF THIS CONFIG
copy_extensions = copy

[ my_policy ]
# if the value is "match" then the field value must match the same field in the
# CA certificate. If the value is "supplied" then it must be present.
# Optional means it may be present. Any fields not mentioned are silently
# deleted.
countryName = match
stateOrProvinceName = supplied
organizationName = supplied
commonName = supplied
organizationalUnitName = optional
commonName = supplied

আপনি জিজ্ঞাসা করতে পারেন, কেন এত কঠিন, কেন আমাদের রুট দ্বারা শিশু শংসাপত্রে স্বাক্ষর করতে আরও একটি কনফিগারেশন তৈরি করতে হবে। উত্তরটি সহজ কারণ শিশু শংসাপত্রের অবশ্যই এসএএন ব্লক থাকতে হবে - সাবজেক্ট বিকল্প নাম। যদি আমরা "ওপেনসেল x509" ব্যবহারের মাধ্যমে শিশু শংসাপত্রটিতে স্বাক্ষর করি তবে রুট শংসাপত্রটি শিশু শংসাপত্রে SAN ক্ষেত্রটি মুছে ফেলবে। সুতরাং SAN ক্ষেত্রটি মোছার বিষয়টি এড়াতে আমরা "ওপেনসেল x509" এর পরিবর্তে "ওপেনসেল সিএ" ব্যবহার করি। আমরা একটি নতুন কনফিগার ফাইল তৈরি করি এবং এটি সমস্ত বর্ধিত ক্ষেত্রের কপি_ এক্সটেনশনগুলি = অনুলিপি করতে বলি ।

openssl ca -config config_ca.cnf -out market.crt -in market.csr

প্রোগ্রামটি আপনাকে ২ টি প্রশ্ন জিজ্ঞাসা করছে: ১. শংসাপত্রে স্বাক্ষর করবেন? "Y" বলুন 2. 1 টির মধ্যে 1 শংসাপত্রের অনুরোধ প্রত্যয়িত, প্রতিশ্রুতিবদ্ধ? "Y" বলুন

টার্মিনালে আপনি "ডাটাবেস" শব্দের সাথে একটি বাক্য দেখতে পাবেন, এর অর্থ ফাইল ইনডেক্স। টেক্সট যা আপনি "টাচ" কমান্ড দ্বারা তৈরি করেছেন। এটিতে "ওপেনএসএল সিএ" ব্যবহারের মাধ্যমে আপনার তৈরি করা সমস্ত শংসাপত্রের সমস্ত তথ্য থাকবে। শংসাপত্র বৈধ ব্যবহার পরীক্ষা করতে:

openssl rsa -in market.key -check

আপনি যদি সিআরটি-র ভিতরে কী দেখতে চান:

openssl x509 -in market.crt -text -noout

আপনি যদি সিএসআরের ভিতরে দেখতে চান তবে:

openssl req -in market.csr -noout -text 

2
যদিও, এই প্রক্রিয়াটি জটিল দেখায়, আমাদের কাছে .ডিডি ডোমেনের জন্য ঠিক এটি দরকার, কারণ এই ডোমেন স্ব-স্বাক্ষরিত শংসাপত্রগুলি সমর্থন করে না এবং ক্রোম এবং ফায়ারফক্স এইচএসটিএসকে বাধ্য করছে। আমি যা করেছি তা এই পদক্ষেপগুলি অনুসরণ করে যা সিএ তৈরি করছে, একটি শংসাপত্র তৈরি করছে এবং এটি আমার সিএর সাথে স্বাক্ষর করছে এবং শেষে আমার সিএতে ব্রাউজারে বিশ্বাস করে। ধন্যবাদ।
বাজিকডুস্কো

1
আপনি স্যার, একটি জঘন্য কিংবদন্তি। আমার হোম্ল্যাব আপনাকে ধন্যবাদ!
এন্টসায়ন

6

আপনার সাধারণ পদ্ধতিটি সঠিক। কমান্ডের সিনট্যাক্সটি নীচে রয়েছে।

openssl req -new -key {private key file} -out {output file}

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

এটি স্ব-স্বাক্ষরিত শংসাপত্র হিসাবে কোনও সিএ নেই এবং আপনি নিরাপদে সতর্কতাটিকে উপেক্ষা করে এগিয়ে যেতে পারেন। আপনি যদি এমন একটি সত্যিকারের শংসাপত্র পেতে চান যা সর্বজনীন ইন্টারনেটের যে কেউ সনাক্তযোগ্য হবে তবে পদ্ধতিটি নীচে রয়েছে is

  1. একটি ব্যক্তিগত কী তৈরি করুন
  2. একটি সিএসআর ফাইল তৈরি করতে সেই ব্যক্তিগত কীটি ব্যবহার করুন
  3. সিএসএতে সিএসআর জমা দিন (ভেরাইজাইন বা অন্যান্য, ইত্যাদি)
  4. ওয়েব সার্ভারে সিএ থেকে প্রাপ্ত শংসাপত্র ইনস্টল করুন
  5. প্রকারের শংসাপত্রের উপর নির্ভর করে প্রমাণীকরণ চেইনে অন্যান্য শংসাপত্রগুলি যুক্ত করুন

সংযোগটি সুরক্ষিত করার একটি পোস্টে আমার এ সম্পর্কে আরও বিশদ রয়েছে : ওপেনএসএসএল দ্বারা সুরক্ষা শংসাপত্র তৈরি করা


6

ওয়ান লাইনার এফটিডাব্লু আমি এটি সহজ রাখতে পছন্দ করি কেন এমন একটি কমান্ড ব্যবহার করবেন না যাতে সমস্ত আর্গুমেন্টের প্রয়োজনীয়তা রয়েছে? এটি আমার পছন্দ হয় - এটি একটি x509 শংসাপত্র এবং এর পিইএম কী তৈরি করে:

openssl req -x509 \
 -nodes -days 365 -newkey rsa:4096 \
 -keyout self.key.pem \
 -out self-x509.crt \
 -subj "/C=US/ST=WA/L=Seattle/CN=example.com/emailAddress=someEmail@gmail.com"

এই একক কমান্ডে সমস্ত উত্তর থাকে যা আপনি সাধারণত শংসাপত্রের বিশদ দেওয়ার জন্য সরবরাহ করেন। এইভাবে আপনি পরামিতিগুলি সেট করতে এবং কমান্ডটি চালাতে পারেন, আপনার আউটপুট পান - তারপরে কফির জন্য যান।

>> আরও এখানে <<


1
সান ব্যতীত সমস্ত যুক্তি ... @ ভোগের উত্তরে এটিও অন্তর্ভুক্ত করা হয়েছে (এবং এটি পূর্বাভাস দিন) (এটিতে আরও একটি সম্পূর্ণ "সাবজেক্ট" ফিল্ড পূরণ করা আছে ...) (এক বছরের মেয়াদ শেষ হওয়ার বড় ভক্ত নয়)
গার্ট ভ্যান ডেন বার্গ

6

ওয়ান-লাইন সংস্করণ 2017:

সেন্টওএস:

openssl req -x509 -nodes -sha256 -newkey rsa:2048 \
-keyout localhost.key -out localhost.crt \
-days 3650 \
-subj "CN=localhost" \
-reqexts SAN -extensions SAN \
-config <(cat /etc/pki/tls/openssl.cnf <(printf "\n[SAN]\nsubjectAltName=IP:127.0.0.1,DNS:localhost"))

উবুন্টু:

openssl req -x509 -nodes -sha256 -newkey rsa:2048 \
-keyout localhost.key -out localhost.crt \
-days 3650 \
-subj "/CN=localhost" \
-reqexts SAN -extensions SAN \
-config <(cat /etc/ssl/openssl.cnf <(printf "\n[SAN]\nsubjectAltName=IP:127.0.0.1,DNS:localhost"))

সম্পাদনা: উবুন্টুর জন্য 'সাবজ' বিকল্পে প্রিপেন্ডিং স্ল্যাশ যুক্ত করা হয়েছে।


3

কী তৈরি করুন

আমি /etc/mysqlশংসাপত্র সঞ্চয় করার জন্য ব্যবহার করছি কারণ /etc/apparmor.d/usr.sbin.mysqldএতে রয়েছে /etc/mysql/*.pem r

sudo su -
cd /etc/mysql
openssl genrsa -out ca-key.pem 2048;
openssl req -new -x509 -nodes -days 1000 -key ca-key.pem -out ca-cert.pem;
openssl req -newkey rsa:2048 -days 1000 -nodes -keyout server-key.pem -out server-req.pem;
openssl x509 -req -in server-req.pem -days 1000 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 -out server-cert.pem;
openssl req -newkey rsa:2048 -days 1000 -nodes -keyout client-key.pem -out client-req.pem;
openssl x509 -req -in client-req.pem -days 1000 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 -out client-cert.pem;

কনফিগারেশন যুক্ত করুন

/etc/mysql/my.cnf

[client]
ssl-ca=/etc/mysql/ca-cert.pem
ssl-cert=/etc/mysql/client-cert.pem
ssl-key=/etc/mysql/client-key.pem

[mysqld]
ssl-ca=/etc/mysql/ca-cert.pem
ssl-cert=/etc/mysql/server-cert.pem
ssl-key=/etc/mysql/server-key.pem

আমার সেটআপে, উবুন্টু সার্ভার লগ ইন করেছেন: /var/log/mysql/error.log

নোটগুলি অনুসরণ করুন:

  • SSL error: Unable to get certificate from '...'

    মাইএসকিউএল আপনার শংসাপত্রের ফাইলটিতে পাঠ্য অ্যাক্সেস থেকে বঞ্চিত হতে পারে যদি এটি অ্যাপারমার্স কনফিগারেশনে না থাকে । পূর্ববর্তী পদক্ষেপে উল্লিখিত হিসাবে ^, আমাদের সমস্ত শংসাপত্রগুলি ডিরেক্টরিতে .pemফাইল হিসাবে সংরক্ষণ করুন /etc/mysql/যা পূর্বনির্ধারিতভাবে অ্যাপমর্ম দ্বারা অনুমোদিত হয় (অথবা আপনি যেখানে যেখানে সংরক্ষণ করেছেন সেখানে অ্যাক্সেসের অনুমতি দেওয়ার জন্য আপনার অ্যাপমার / সেলইনাক্স সংশোধন করুন))

  • SSL error: Unable to get private key

    আপনার মাইএসকিউএল সার্ভার সংস্করণটি ডিফল্ট rsa:2048ফর্ম্যাটটিকে সমর্থন করবে না

    উত্পন্ন রূপান্তর rsa:2048প্লেইন করার rsaসাথে

    openssl rsa -in server-key.pem -out server-key.pem
    openssl rsa -in client-key.pem -out client-key.pem
    
  • স্থানীয় সার্ভার এসএসএল সমর্থন করে কিনা তা পরীক্ষা করুন :

    mysql -u root -p
    mysql> show variables like "%ssl%";
    +---------------+----------------------------+
    | Variable_name | Value                      |
    +---------------+----------------------------+
    | have_openssl  | YES                        |
    | have_ssl      | YES                        |
    | ssl_ca        | /etc/mysql/ca-cert.pem     |
    | ssl_capath    |                            |
    | ssl_cert      | /etc/mysql/server-cert.pem |
    | ssl_cipher    |                            |
    | ssl_key       | /etc/mysql/server-key.pem  |
    +---------------+----------------------------+
    
  • ডাটাবেসে কোনও সংযোগ যাচাই করা হ'ল এসএসএল এনক্রিপ্ট করা :

    সংযোগ যাচাই করা হচ্ছে

    মাইএসকিউএল উদাহরণটিতে লগ ইন করার পরে, আপনি কোয়েরিটি ইস্যু করতে পারেন:

    show status like 'Ssl_cipher';
    

    যদি আপনার সংযোগটি এনক্রিপ্ট করা না হয় তবে ফলাফলটি ফাঁকা হবে:

    mysql> show status like 'Ssl_cipher';
    +---------------+-------+
    | Variable_name | Value |
    +---------------+-------+
    | Ssl_cipher    |       |
    +---------------+-------+
    1 row in set (0.00 sec)
    

    অন্যথায়, এটি ব্যবহারে সাইফারের জন্য একটি শূন্য-দৈর্ঘ্যের স্ট্রিং প্রদর্শন করবে:

    mysql> show status like 'Ssl_cipher';
    +---------------+--------------------+
    | Variable_name | Value              |
    +---------------+--------------------+
    | Ssl_cipher    | DHE-RSA-AES256-SHA |
    +---------------+--------------------+
    1 row in set (0.00 sec)
    
  • নির্দিষ্ট ব্যবহারকারীর সংযোগের জন্য এসএসএল প্রয়োজন ('এসএসএল প্রয়োজন'):

    • SSL এর

    সার্ভারকে অ্যাকাউন্টের জন্য কেবল এসএসএল-এনক্রিপ্ট করা সংযোগের অনুমতি দিতে বলে।

    GRANT ALL PRIVILEGES ON test.* TO 'root'@'localhost'
      REQUIRE SSL;
    

    সংযোগের জন্য, ক্লায়েন্টকে সার্ভার শংসাপত্রটি প্রমাণীকরণের জন্য --ssl-ca বিকল্পটি নির্দিষ্ট করতে হবে এবং অতিরিক্তভাবে --ssl-key এবং --ssl-cert বিকল্পগুলি নির্দিষ্ট করতে পারে। --Ssl-ca বিকল্প বা --ssl-capath বিকল্পটি নির্দিষ্ট না করা থাকলে ক্লায়েন্ট সার্ভার শংসাপত্রটি প্রমাণীকরণ করে না।


বিকল্প লিঙ্ক: এসএসএল সহ মাইএসকিউএলে সুরক্ষিত পিএইচপি সংযোগগুলির দৈর্ঘ্যের টিউটোরিয়াল ।


-1; এটি জিজ্ঞাসা করা প্রশ্নটির মূলত স্পর্শকাতর এবং এর কোটগুলি কোথা থেকে এসেছে তা পরিষ্কার করার একটি খারাপ কাজও করে।
মার্ক

এটি সিএ, সার্ভার / ক্লায়েন্ট শংসাপত্রগুলি সিএ দ্বারা স্বাক্ষরিত প্রভিজিংয়ে দেখায়, অ্যাপমর্ম সহ হোস্টে মাইএসকিএলডি দ্বারা পড়ার জন্য তাদের কনফিগার করে। এটি একই মেশিনে সিএ, সার্ভার, এবং ক্লায়েন্টকে হোস্টিংয়ের এবং অপেক্ষাকৃত মাইএসকিএলড প্রক্রিয়াতে সেই সিএর কর্তৃত্বকে বিপজ্জনকভাবে প্রকাশ করার পরিবর্তে অকেজো মামলার উদাহরণ দেয়। এই সেটআপটি পরীক্ষার পরিবেশে এসএসএল কনফিগারেশন পরীক্ষা করা ব্যতীত অন্য কোনও অর্থবোধ করে না। একটি অভ্যন্তরীণ সিএ পরিচালনার জন্য, আমি ওপেনসেল হেল্প.বুন্টু.com/ কমিনিউটি / জিএনটিএলএসের উপর জিন্টলস সরঞ্জামচেনা এবং মাইএসকিএলডি + অ্যাপারমোর কেসটি সম্পর্কে কাজ করার আগে tls সম্পর্কে ভাল ধারণা থাকার সুপারিশ করব
থারস্ম্মোনার

3

যেমনটি বিস্তারিত আলোচনা করা হয়েছে, স্ব-স্বাক্ষরিত শংসাপত্রগুলি ইন্টারনেটের জন্য বিশ্বাসযোগ্য নয় । আপনি নিজের স্বাক্ষরিত শংসাপত্রটি অনেকগুলিতে ব্রাউজারে যোগ করতে পারেন । বিকল্পভাবে আপনি নিজের শংসাপত্র কর্তৃপক্ষ হতে পারেন ।

শংসাপত্র কর্তৃপক্ষের কাছ থেকে স্বাক্ষরিত শংসাপত্রটি পেতে না চাওয়ার প্রাথমিক কারণটি মূল্য - সিমেন্টেকের জন্য প্রতি বছর certificates 995 - $ 1,999 শংসাপত্রগুলির জন্য - কেবল অভ্যন্তরীণ নেটওয়ার্কের উদ্দেশ্যে তৈরি শংসাপত্রের জন্য, সিম্যানটেক প্রতি বছর 399 ডলার চার্জ করে । যদি আপনি ক্রেডিট কার্ডের অর্থপ্রদানের প্রক্রিয়া করছেন বা একটি উচ্চ লাভজনক সংস্থার লাভ কেন্দ্রের জন্য কাজ করছেন তবে সেই ব্যয়টিকে ন্যায়সঙ্গত করা সহজ। এটি ইন্টারনেটে তৈরি করা কোনও ব্যক্তিগত প্রকল্পের জন্য, বা একটি ন্যূনতম মুনাফা অর্জনের জন্য, বা কোনও সংস্থার কোনও ব্যয় কেন্দ্রে যদি কোনও কাজ করে - ব্যয় কেন্দ্রগুলি সর্বদা আরও চেষ্টা করার চেষ্টা করে তবে এটি অনেকের বেশি সাধ্যের চেয়ে বেশি is কম সহ

একটি বিকল্প হ'ল সার্টবোট ( সার্টবোট সম্পর্কে দেখুন ) ব্যবহার করা। সার্টবট হ'ল একটি সহজে ব্যবহারযোগ্য স্বয়ংক্রিয় ক্লায়েন্ট যা আপনার ওয়েব সার্ভারের জন্য এসএসএল / টিএলএস শংসাপত্র নিয়ে আসে এবং মোতায়েন করে।

আপনি যদি সার্টবোট সেটআপ করেন তবে চলুন এনক্রিপ্ট শংসাপত্র কর্তৃপক্ষের দ্বারা জারি করা আপনার জন্য একটি শংসাপত্র তৈরি এবং বজায় রাখতে আপনি এটি সক্ষম করতে পারেন ।

আমি আমার প্রতিষ্ঠানের পক্ষে সপ্তাহান্তে এটি করেছি। আমি আমার সার্ভারে (উবুন্টু 16.04) সার্টিবোটের জন্য প্রয়োজনীয় প্যাকেজগুলি ইনস্টল করেছি এবং তারপরে সার্টিবোট সেটআপ এবং সক্ষম করার জন্য প্রয়োজনীয় কমান্ডটি চালিয়েছি। এক সম্ভবত একটি প্রয়োজন ডিএনএস প্লাগ ইন certbot জন্য - আমরা বর্তমানে ব্যবহার করছেন DigitalOcean যদিও শীঘ্রই অন্য পরিষেবাতে মাইগ্রেট করা যেতে পারে।

নোট করুন যে কয়েকটি নির্দেশাবলী একেবারে ঠিক ছিল না এবং গুগলের সাথে বের করার জন্য কিছুটা হাঁস এবং সময় নিয়েছিল। এটি প্রথমবারের মতো আমার বেশিরভাগ সময় নিয়েছিল তবে এখন আমি মনে করি আমি এটি কয়েক মিনিটের মধ্যে করতে পারব।

ডিজিটাল ওশেনের জন্য, আমি যখন লড়াই করেছিলাম তখন একটি অঞ্চল ছিল যখন আমাকে আপনার ডিজিটাল ওসন শংসাপত্রগুলি আইএনআই ফাইলের পথে ইনপুট দেওয়ার অনুরোধ জানানো হয়েছিল। স্ক্রিপ্টটি যা উল্লেখ করছে তা হ'ল অ্যাপ্লিকেশনস এবং এপিআই পৃষ্ঠা এবং সেই পৃষ্ঠার টোকেন্স / কী ট্যাব। আপনার ডিজিটাল ওশেনের API এর জন্য ব্যক্তিগত অ্যাক্সেস টোকেন (পড়ুন এবং লিখুন) তৈরি করতে হবে - এটি একটি 65 টি অক্ষরের হেক্সাডেসিমাল স্ট্রিং। এই স্ট্রিংটি তখন ওয়েব সার্ভারে এমন একটি ফাইলে রাখা দরকার যা থেকে আপনি সার্টবোট চালাচ্ছেন। এই ফাইলটির প্রথম লাইন হিসাবে মন্তব্য থাকতে পারে (মন্তব্যগুলি # দিয়ে শুরু হবে)। সেকেন্ড লাইনটি হ'ল:

dns_digitalocean_token = 0000111122223333444455556666777788889999aaaabbbbccccddddeeeeffff

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

দ্রষ্টব্য যে সার্বজনীন কী শংসাপত্রগুলি (পরিচয় শংসাপত্র বা এসএসএল শংসাপত্র হিসাবেও পরিচিত) এর মেয়াদ শেষ হয়ে যায় এবং নবায়ন প্রয়োজন। সুতরাং আপনাকে পর্যায়ক্রমিক (পুনরায়) ভিত্তিতে আপনার শংসাপত্রটি পুনর্নবীকরণ করতে হবে। Certbot ডকুমেন্টেশন পুনর্নবীকরণ শংসাপত্র কভার ।

আমার পরিকল্পনাটি হ'ল আমার শংসাপত্রের মেয়াদ শেষ হওয়ার তারিখ পেতে ওপেনএসএল কমান্ডটি ব্যবহার করার জন্য এবং এটির মেয়াদ শেষ হওয়ার 30 দিনের বা তার কম হলে পুনর্নবীকরণ ট্রিগার করার জন্য একটি স্ক্রিপ্ট লিখে to আমি তখন এই স্ক্রিপ্টটি ক্রোনটিতে যুক্ত করব এবং এটি প্রতিদিন একবার চালাব।

আপনার শংসাপত্রের মেয়াদ শেষ হওয়ার তারিখটি পড়ার জন্য এখানে আদেশ রয়েছে:

root@prod-host:~# /usr/bin/openssl x509 -enddate -noout -in path-to-certificate-pem-file
notAfter=May 25 19:24:12 2019 GMT
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.