برنامه نویسی

ایجاد یک گواهینامه خود امضا شده و تأیید کلید و گواهینامه خصوصی

سلام همه

من می خواستم یکی از موضوعاتی را که این هفته در محل کار با آن روبرو شدم به اشتراک بگذارم و مراحلی که برای اشکال زدایی این مسائل انجام دادم. این مسئله بیشتر حول محور کلیدی که در برنامه خود استفاده می کنیم ، می چرخید و این یک مسئله ساده بود که ما را حدود دو روز طول کشید تا بفهمیم. این یک مسئله ساده بود که در آن ما از کلید خصوصی اشتباه و ترکیب گواهی استفاده کردیم و با LED به دو روز کار غیر ضروری نادیده گرفته شد. من در حال به اشتراک گذاشتن برخی از مراحلی که برای کشف آن انجام دادم که می تواند دفعه بعد برای شما مفید باشد. من در حال نوشتن این پست به عنوان دو بخش هستم.

  • قسمت 1: شما گواهینامه های SSL خود را ایجاد می کنید
  • قسمت 2: شما گواهی را اشکال زدایی می کنید تا ببینید که آیا PK و CERT مطابقت دارند

قسمت 1: ایجاد گواهینامه امضا شده خودم

ایجاد یک کلید خصوصی

  1. برای ایجاد یک کلید خصوصی جدید در قالب PKCS#1 دستور زیر را اجرا کنید
# openssl genrsa -des3 -out key_name.key key_strength
openssl genrsa -des3 -out private_key.key 2048
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

ایجاد درخواست امضای گواهی

  1. برای ایجاد یک درخواست جدید گواهینامه امضای با کلید خصوصی فوق دستور زیر را اجرا کنید
# openssl genrsa -des3 -out key_name.key key_strength
openssl req -new -key private_key.key -out certificate_signing_request.csr
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

توجه: درخواست امضای گواهینامه شما گواهی واقعی شما نیست. این فقط حاوی اطلاعاتی است که برای تولید گواهی بر اساس کلید خصوصی شما لازم است

ایجاد گواهی

  1. دستور زیر را برای دریافت گواهی از CSR که در بالا ایجاد کردیم ، اجرا کنید
openssl x509 -req -in certificate_signing_request.csr -signkey private_key.key -out certificate.crt
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

ایجاد یک کلیدی در خارج از JKS

به منظور اضافه کردن گواهینامه ها به یک فروشگاه کلید ، دستور زیر لازم است

  1. گواهی و کلید خصوصی خود را به یک پرونده PKCS12 (.p12 از .pfx) با استفاده از دستور زیر تبدیل کنید
openssl pkcs12 -export -out keystore_pkcs.p12 -inkey private_key.key -in certificate.crt -name "faustus" -password pass:bulgogi
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

  1. پس از ایجاد PKCS می توانیم JKS را با استفاده از دستور زیر از آن ایجاد کنیم
keytool -importkeystore -srckeystore keystore_to_test.p12 -srcstoretype PKCS12 -srcalias faustus -srcstorepass bulgogi2902 -destkeystore dest_ks.jks -deststoretype JKS -deststorepass bulgogi2902 -destalias fausto
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

  1. کلید اصلی را می توان با دستور زیر بررسی کرد تا محتویات را لیست کند
keytool -list -v -keystore dest_ks.jks -storepass bulgogi2902
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

قسمت 2: اعتبارسنجی گواهینامه های SSL

بررسی کلید خصوصی

openssl rsa -in [key-file.key] -check -noout
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

دستور فوق به ما این امکان را می دهد که آیا کلید خصوصی با آن دستکاری شده است
برخی از پاسخ های معیوب هستند

  1. خطای کلید RSA: P نخست نیست
  2. خطای کلید RSA: N با PQ برابر نیست
  3. خطای کلید RSA: De با 1 متناسب نیست
  4. خطای کلید RSA: DMP1 متناسب با D نیست
  5. خطای کلید RSA: IQMP معکوس Q نیست

آیا کلید خصوصی با ما دستکاری نشده است می توانیم پاسخ زیر را بدست آوریم

  1. کلید RSA خوب

تطبیق مقدار مدول با کلید خصوصی و جفت کلید گواهی SSL/TLS را تأیید کنید

مدول کلید خصوصی و گواهی باید دقیقاً مطابقت داشته باشد

برای مشاهده مدول گواهی

openssl x509 -noout -modulus -in [certificate-file.cer]
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

برای مشاهده مدول کلید خصوصی

openssl rsa -noout -modulus -in [key-file.key]
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

رمزگذاری را با کلید عمومی از گواهینامه و رمزگشایی با کلید خصوصی انجام دهید

  1. کلید عمومی را از گواهی دریافت کنید
openssl x509 -in [certificate-file.cer] -noout -pubkey > certificatefile.pub.cer
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

  1. رمزگذاری محتوای پرونده Test.txt با استفاده از کلید عمومی. با محتوا یک فایل جدید به نام test.txt ایجاد کنید “تست پیام“. دستور زیر را انجام دهید یک پیام رمزگذاری شده ایجاد کنید به پرونده cipher.txt.
openssl pkeyutl -encrypt -in test.txt -pubin -inkey certificatefile.pub.cer -out cipher.txt
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

  1. با استفاده از کلید خصوصی از cipher.txt رمزگشایی کنید
openssl  pkeyutl  -decrypt -in cipher.txt -inkey [key-file.key]
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

  1. تأیید یکپارچگی پرونده ای که با کلید خصوصی امضا شده است. دستور زیر را برای امضای پرونده test.sig و test.txt با کلید خصوصی خود انجام دهید
openssl dgst -sha256 -sign  [key-file.key] -out test.sig test.txt
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

پرونده های امضا شده را با کلید عمومی خود که از مرحله استخراج شده است ، تأیید کنید 1. کلید عمومی را از گواهی دریافت کنید.

openssl dgst -sha256 -verify certificatefile.pub.cer -signature test.sig test.txt
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

خروجی از ترمینال باید پیام زیر را نشان دهد
تأیید شده خوب
آیا کلید خصوصی با پیام زیر دستکاری شده است
عدم تأیید

مانند اکثر پست ، این فقط اطلاعاتی است که من از منبع مختلف تا یک پست تهیه کرده ام تا بتواند یک فروشگاه یک توقف باشد. امیدوارم این به شما کمک کند تا مسائل را حل کنید یا حداقل شما را در مسیر درست قرار دهید.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا