OpenSSL یکی از مهمترین ابزارهایی است که مدیران سرور، کارشناسان امنیت، DevOpsها و مدیران وبسایت برای مدیریت گواهیهای SSL/TLS استفاده میکنند. با چند دستور OpenSSL میتوانید یک Private Key بسازید، CSR ایجاد کنید، اطلاعات یک Certificate را بخوانید، تاریخ انقضای SSL را بررسی کنید، مطمئن شوید Certificate و Private Key متعلق به یکدیگر هستند، اتصال واقعی TLS یک سایت را تست کنید یا فرمت گواهی را از PEM به PFX، DER یا P7B تبدیل کنید.
در بسیاری از سناریوهای عملی، زمانی که نصب SSL با خطا مواجه میشود، Certificate روی Nginx یا Apache بالا نمیآید، فایل PFX برای Windows Server نیاز دارید یا CA از شما CSR درخواست میکند، OpenSSL سریعترین ابزار برای پیدا کردن علت مشکل است.
در این راهنما، OpenSSL را از دید عملی مدیریت گواهی SSL، CSR و Private Key بررسی میکنیم و مجموعهای از دستورهای کاربردی را با توضیح دقیق ارائه میدهیم.
اگر ابتدا میخواهید مفهوم Certificate، HTTPS، CA و TLS را یاد بگیرید، بهتر است مقاله SSL چیست؟ را بخوانید. همچنین برای تفاوت فنی SSL قدیمی با TLS امروزی، مقاله تفاوت SSL و TLS مکمل خوبی برای این راهنماست.
سطح: متوسط | مناسب برای: مدیران سرور، کاربران VPS، DevOpsها، کارشناسان امنیت، مدیران هاستینگ و افرادی که نصب یا عیبیابی SSL/TLS را انجام میدهند.
فهرست مطالب
- OpenSSL چیست؟
- رابطه Private Key، CSR و Certificate چیست؟
- بررسی نسخه OpenSSL
- ساخت Private Key با OpenSSL
- ساخت RSA Private Key
- ساخت EC Private Key
- ساخت Private Key رمزگذاریشده
- سطح دسترسی امن Private Key
- ساخت CSR با OpenSSL
- ساخت CSR با SAN
- ساخت CSR بدون Command Line
- مشاهده و بررسی CSR
- ساخت Self-Signed Certificate
- مشاهده اطلاعات گواهی SSL
- بررسی تاریخ انقضای Certificate
- بررسی Certificate Chain
- بررسی تطابق Private Key و Certificate
- بررسی تطابق CSR با Private Key
- تست SSL/TLS سایت با openssl s_client
- اهمیت SNI در تست OpenSSL
- تست TLS ۱.۲ و TLS ۱.۳
- مشاهده Certificate Chain سرور
- تبدیل فرمت گواهی SSL
- تبدیل PEM و DER
- ساخت و استخراج PFX/P12
- تبدیل PKCS7/P7B
- استخراج Public Key
- خطاهای رایج OpenSSL و SSL
- نکات امنیتی مهم
- جدول سریع دستورات OpenSSL
- سوالات متداول
- جمعبندی
OpenSSL چیست؟
OpenSSL یک Toolkit متنباز برای پیادهسازی و مدیریت قابلیتهای رمزنگاری و پروتکلهای TLS است. بسته OpenSSL علاوه بر Libraryهای مورد استفاده برنامهها، ابزار Command-Line قدرتمندی با نام openssl ارائه میدهد.
مدیران سیستم از OpenSSL برای کارهایی مثل این استفاده میکنند:
- ساخت Private Key
- ایجاد CSR
- ساخت Certificate آزمایشی Self-Signed
- مشاهده جزئیات Certificate
- بررسی SAN، Issuer و Subject
- بررسی تاریخ شروع و پایان اعتبار گواهی
- اعتبارسنجی Certificate Chain
- بررسی تطابق Private Key و Certificate
- تست TLS روی Nginx، Apache، HAProxy و Mail Server
- تبدیل PEM، DER، PKCS#۱۲ و PKCS#۷
OpenSSL در بسیاری از توزیعهای Linux بهصورت پیشفرض نصب است و ابزار بسیار مهمی برای مدیریت HTTPS و گواهی SSL محسوب میشود.
رابطه Private Key، CSR و Certificate چیست؟
قبل از اجرای دستورها، باید تفاوت سه فایل اصلی را بدانید.
Private Key چیست؟
Private Key کلید محرمانهای است که باید فقط در اختیار مالک سرور باقی بماند.
نمونه نام فایل:
example.com.keyPrivate Key نباید برای CA ارسال شود و نباید در تیکت پشتیبانی، ایمیل، Git Repository یا پیامرسان قرار بگیرد.
CSR چیست؟
CSR مخفف Certificate Signing Request است.
CSR شامل Public Key و اطلاعاتی است که برای صدور Certificate به CA ارسال میشود.
نمونه فایل:
example.com.csrCertificate چیست؟
بعد از بررسی درخواست، CA گواهی صادر میکند:
example.com.crt
example.com.pemدر نتیجه Workflow معمول این است:
Private Key
↓
CSR
↓
Certificate Authority
↓
SSL/TLS Certificate
↓
Install on Web Serverیک نکته بسیار مهم این است که Private Key هرگز برای CA ارسال نمیشود. CSR فقط Public Key متناظر را در خود دارد.
بررسی نسخه OpenSSL
اول نسخه نصبشده را بررسی کنید:
openssl versionبرای جزئیات بیشتر:
openssl version -aاین دستور اطلاعاتی مثل Version، Build، Platform، مسیر تنظیمات OpenSSL و Providerها را نمایش میدهد.
روی توزیعهای جدید Linux معمولاً OpenSSL ۳.x وجود دارد. دستورهای قدیمی مثل genrsa هنوز در بسیاری از نسخهها کار میکنند، اما برای Scriptهای جدید استفاده از genpkey انتخاب عمومیتر و مدرنتری است.
ساخت Private Key با OpenSSL
Private Key نقطه شروع فرآیند صدور SSL است.
در سیستمهای جدید میتوانید با genpkey کلید بسازید.
ساخت RSA Private Key
RSA با طول ۲۰۴۸ بیت
openssl genpkey \
-algorithm RSA \
-pkeyopt rsa_keygen_bits:2048 \
-out example.com.keyRSA ۲۰۴۸ هنوز یکی از رایجترین گزینهها برای Certificateهای عمومی است.
RSA با طول ۴۰۹۶ بیت
openssl genpkey \
-algorithm RSA \
-pkeyopt rsa_keygen_bits:4096 \
-out example.com.keyRSA ۴۰۹۶ کلید بزرگتری ایجاد میکند، اما عملیات Cryptographic آن نیز سنگینتر است. لزوماً برای هر وبسایتی مزیت عملی مهمی نسبت به RSA ۲۰۴۸ ندارد.
روش قدیمی با genrsa
openssl genrsa -out example.com.key 2048این دستور همچنان در بسیاری از نسخههای OpenSSL پشتیبانی میشود، اما برای آموزش و Automation جدید، genpkey انعطاف بیشتری برای Algorithmهای مختلف دارد.
ساخت EC Private Key
OpenSSL از Elliptic Curve نیز پشتیبانی میکند.
برای ساخت EC Key روی منحنی P-۲۵۶:
openssl genpkey \
-algorithm EC \
-pkeyopt ec_paramgen_curve:P-256 \
-out example.com.keyEC Key نسبت به RSA حجم کلید کمتری دارد و در بسیاری از سناریوهای TLS عملکرد مناسبی ارائه میدهد.
بااینحال قبل از انتخاب EC باید مطمئن شوید CA، Load Balancer، Web Server و Clientهای موردنظر از Algorithm انتخابشده پشتیبانی میکنند.
ساخت Private Key رمزگذاریشده
میتوانید Private Key را با Passphrase محافظت کنید:
openssl genpkey \
-algorithm RSA \
-aes-256-cbc \
-pkeyopt rsa_keygen_bits:2048 \
-out example.com.keyهنگام ساخت، OpenSSL از شما Passphrase میخواهد.
مزیت این روش این است که اگر فایل Key بهتنهایی سرقت شود، استفاده از آن بدون Passphrase دشوارتر خواهد بود.
اما در Web Serverهای بدون Operator، Encrypted Private Key ممکن است باعث شود سرویس هنگام Restart نیازمند ورود دستی رمز شود. بنابراین باید میان امنیت کلید و نیاز Automation تعادل برقرار کنید.
تنظیم Permission امن Private Key
بعد از ساخت کلید، Permission آن را محدود کنید:
chmod 600 example.com.keyبررسی:
ls -l example.com.keyخروجی مناسب شبیه این است:
-rw------- 1 user user ... example.com.keyPrivate Key نباید World Readable باشد.
همچنین توصیه میشود آن را خارج از Document Root سایت نگهداری کنید.
ساخت CSR با OpenSSL
اگر Private Key را قبلاً ساختهاید:
openssl req \
-new \
-key example.com.key \
-out example.com.csrOpenSSL اطلاعات Subject را از شما میپرسد:
Country Name:
State or Province Name:
Locality Name:
Organization Name:
Organizational Unit Name:
Common Name:
Email Address:برای یک Certificate دامنه، Common Name معمولاً دامنه اصلی است:
example.comاما در Certificateهای امروزی فقط CN کافی نیست و Hostnameهایی که Certificate باید پوشش دهد باید در Subject Alternative Name یا SAN قرار بگیرند.
ساخت CSR با SAN
برای دامنه اصلی و www:
openssl req \
-new \
-key example.com.key \
-out example.com.csr \
-subj "/C=TR/ST=Istanbul/L=Istanbul/O=Example/CN=example.com" \
-addext "subjectAltName=DNS:example.com,DNS:www.example.com"اگر چند Subdomain نیاز دارید:
-addext "subjectAltName=DNS:example.com,DNS:www.example.com,DNS:api.example.com"برای IP Address:
-addext "subjectAltName=IP:192.0.2.10"نکته: Certificate عمومی IP محدودیتها و سیاستهای مخصوص خود را دارد و همه CAها مانند Certificate دامنه آن را صادر نمیکنند.
ساخت CSR بدون Command Line
اگر به Shell دسترسی ندارید یا میخواهید CSR را سریعتر بسازید، میتوانید از ابزار CSR Generator پویاسازان استفاده کنید.
البته در محیطهای حساس، اصل مهم این است که Private Key فقط در محیطی که کنترل کامل آن را دارید تولید و نگهداری شود.
مشاهده اطلاعات CSR
برای دیدن جزئیات CSR:
openssl req \
-in example.com.csr \
-text \
-nooutموارد زیر را بررسی کنید:
- Subject
- Public Key Algorithm
- Key Size
- Requested Extensions
- Subject Alternative Name
- Signature Algorithm
قبل از ارسال CSR به CA حتماً دامنهها و SANها را بررسی کنید. اشتباه در CSR معمولاً نیازمند Reissue کردن Certificate خواهد بود.
بررسی Signature خود CSR
openssl req \
-in example.com.csr \
-verify \
-nooutاگر CSR سالم باشد، OpenSSL تأیید Signature را نمایش میدهد.
ساخت Self-Signed Certificate
برای محیط Development، Lab یا شبکه داخلی میتوانید Certificate Self-Signed بسازید.
ساخت Key و Certificate در یک مرحله
openssl req \
-newkey rsa:2048 \
-nodes \
-keyout example.com.key \
-x509 \
-days 365 \
-out example.com.crt \
-subj "/CN=example.com" \
-addext "subjectAltName=DNS:example.com,DNS:www.example.com"این دستور:
- Private Key میسازد.
- یک X.۵۰۹ Certificate ایجاد میکند.
- Certificate را برای ۳۶۵ روز معتبر میکند.
- SAN را اضافه میکند.
هشدار: Self-Signed Certificate برای یک سایت عمومی جای Certificate صادرشده توسط CA معتبر را نمیگیرد. مرورگر بهصورت پیشفرض به آن اعتماد نمیکند.
ساخت Self-Signed از Private Key موجود
openssl req \
-key example.com.key \
-new \
-x509 \
-days 365 \
-out example.com.crtساخت Certificate از CSR موجود
openssl x509 \
-req \
-in example.com.csr \
-signkey example.com.key \
-days 365 \
-out example.com.crtمشاهده جزئیات Certificate
یکی از پرکاربردترین دستورات OpenSSL:
openssl x509 \
-in example.com.crt \
-text \
-nooutاین خروجی اطلاعاتی مثل موارد زیر را نشان میدهد:
- Version
- Serial Number
- Signature Algorithm
- Issuer
- Validity
- Subject
- Public Key
- SAN
- Key Usage
- Extended Key Usage
نمایش فقط Subject
openssl x509 \
-in example.com.crt \
-noout \
-subjectنمایش Issuer
openssl x509 \
-in example.com.crt \
-noout \
-issuerنمایش Serial Number
openssl x509 \
-in example.com.crt \
-noout \
-serialنمایش SAN
openssl x509 \
-in example.com.crt \
-noout \
-ext subjectAltNameبررسی تاریخ انقضای گواهی SSL
برای مشاهده تاریخ شروع و پایان:
openssl x509 \
-in example.com.crt \
-noout \
-datesنمونه:
notBefore=...
notAfter=...فقط تاریخ پایان:
openssl x509 \
-in example.com.crt \
-noout \
-enddateبررسی اینکه Certificate تا ۳۰ روز دیگر معتبر است یا نه
openssl x509 \
-in example.com.crt \
-checkend 2592000 \
-nooutعدد 2592000 برابر ۳۰ روز بر حسب ثانیه است.
این دستور برای Monitoring و Alert قبل از Expiration بسیار مفید است.
برای بررسی سریع Certificate یک سایت بدون دسترسی به فایلهای سرور، میتوانید از ابزار SSL Checker پویاسازان استفاده کنید.
بررسی Certificate Chain
برای بررسی Certificate نسبت به Root CA:
openssl verify \
-CAfile ca-bundle.pem \
example.com.crtاگر Intermediate CA جدا دارید:
openssl verify \
-CAfile root-ca.pem \
-untrusted intermediate.pem \
example.com.crtدر صورت موفقیت:
example.com.crt: OKخطای unable to get local issuer certificate
معمولاً یعنی Intermediate Certificate لازم وجود ندارد یا Chain بهدرستی ساخته نشده است.
در Nginx معمولاً باید Full Chain نصب شود:
ssl_certificate /path/fullchain.pem;چطور مطمئن شویم Private Key و Certificate با هم Match هستند؟
یکی از خطاهای بسیار رایج هنگام نصب SSL این است که Certificate با Private Key اشتباه استفاده میشود.
روش مناسب و عمومی برای RSA و EC
Public Key را از Private Key استخراج کنید:
openssl pkey \
-in example.com.key \
-pubout \
-outform PEM | sha256sumPublic Key را از Certificate استخراج کنید:
openssl x509 \
-in example.com.crt \
-pubkey \
-noout | sha256sumاگر Hashها یکسان باشند، Key و Certificate متعلق به یک Key Pair هستند.
این روش برای انواع Key مناسبتر از روش قدیمی Modulus است.
روش قدیمی برای RSA با Modulus
openssl rsa \
-noout \
-modulus \
-in example.com.key | openssl sha256openssl x509 \
-noout \
-modulus \
-in example.com.crt | openssl sha256اگر خروجیها یکسان باشند، RSA Key و Certificate Match هستند.
بررسی تطابق CSR با Private Key
Public Key از CSR:
openssl req \
-in example.com.csr \
-pubkey \
-noout | sha256sumPublic Key از Key:
openssl pkey \
-in example.com.key \
-pubout | sha256sumخروجی یکسان یعنی CSR از همان Private Key ساخته شده است.
بررسی سلامت Private Key
در OpenSSL جدید:
openssl pkey \
-in example.com.key \
-check \
-nooutبرای RSA میتوان از این دستور نیز استفاده کرد:
openssl rsa \
-in example.com.key \
-check \
-nooutOpenSSL مستند کرده که گزینه -check consistency ساختار Key Pair را بررسی میکند. citeturn803065search0
تست SSL/TLS سایت با openssl s_client
openssl s_client یکی از بهترین ابزارهای عیبیابی TLS است.
برای اتصال به HTTPS:
openssl s_client \
-connect example.com:443 \
-servername example.comخروجی میتواند شامل این موارد باشد:
- Certificate Chain
- Certificate Subject
- Issuer
- TLS Version
- Cipher Suite
- Verification Result
DigitalOcean نیز استفاده از s_client را برای بازسازی TLS Handshake خارج از Browser توصیه میکند. citeturn569949search0
چرا -servername مهم است؟
روی بسیاری از سرورها چند دامنه روی یک IP میزبانی میشوند. این ساختار از SNI استفاده میکند.
اگر فقط این را اجرا کنید:
openssl s_client -connect example.com:443ممکن است Certificate پیشفرض Server را دریافت کنید.
روش درست:
openssl s_client \
-connect example.com:443 \
-servername example.comتست TLS ۱.۲ و TLS ۱.۳
TLS 1.2
openssl s_client \
-connect example.com:443 \
-servername example.com \
-tls1_2TLS 1.3
openssl s_client \
-connect example.com:443 \
-servername example.com \
-tls1_3اگر Server از نسخه موردنظر پشتیبانی نکند، Handshake ناموفق میشود.
برای اینکه بدانید چرا در وب امروزی TLS ۱.۲ و ۱.۳ استفاده میشوند و SSL قدیمی دیگر مناسب نیست، مقاله تفاوت SSL و TLS را بخوانید.
مشاهده تمام Certificateهای Chain
openssl s_client \
-connect example.com:443 \
-servername example.com \
-showcertsاین دستور برای بررسی Missing Intermediate یا ترتیب نادرست Chain بسیار مفید است.
نمایش Certificate واقعی سایت با خروجی کوتاه
echo | \
openssl s_client \
-connect example.com:443 \
-servername example.com \
2>/dev/null | \
openssl x509 \
-noout \
-subject \
-issuer \
-datesتبدیل فرمت Certificate با OpenSSL
گواهی SSL در چند Format مختلف استفاده میشود.
| فرمت | کاربرد رایج |
|---|---|
| PEM | Linux، Apache، Nginx |
| DER | Binary Certificate |
| PFX / P12 | Windows، IIS، Import/Export |
| P7B / PKCS7 | Windows و Certificate Chain |
تبدیل PEM به DER
openssl x509 \
-in certificate.pem \
-outform DER \
-out certificate.derتبدیل DER به PEM
openssl x509 \
-inform DER \
-in certificate.der \
-out certificate.pemساخت PFX یا PKCS#۱۲
برای Windows Server و IIS معمولاً Certificate و Private Key در فایل PFX قرار میگیرند.
openssl pkcs12 \
-export \
-out certificate.pfx \
-inkey example.com.key \
-in example.com.crt \
-certfile intermediate.pemOpenSSL برای فایل PFX از شما Export Password میخواهد.
این Password هنگام Import فایل در Windows یا IIS لازم است.
استخراج Private Key از PFX
openssl pkcs12 \
-in certificate.pfx \
-nocerts \
-out private-key.pemبرای خروجی بدون Passphrase:
openssl pkcs12 \
-in certificate.pfx \
-nocerts \
-nodes \
-out private-key.pemهشدار: در این حالت Private Key بدون Encryption روی دیسک ذخیره میشود.
استخراج Certificate از PFX
openssl pkcs12 \
-in certificate.pfx \
-clcerts \
-nokeys \
-out certificate.pemاستخراج CA Certificateها
openssl pkcs12 \
-in certificate.pfx \
-cacerts \
-nokeys \
-out ca-chain.pemکار با P7B یا PKCS#۷
مشاهده محتویات P7B:
openssl pkcs7 \
-print_certs \
-in certificate.p7b \
-out certificates.pemاگر P7B در DER است:
openssl pkcs7 \
-inform DER \
-print_certs \
-in certificate.p7b \
-out certificates.pemاستخراج Public Key از Private Key
openssl pkey \
-in example.com.key \
-pubout \
-out public-key.pemاستخراج Public Key از Certificate:
openssl x509 \
-in example.com.crt \
-pubkey \
-noout \
> public-key-from-cert.pemاین روش برای مقایسه Key Pair و عملیات Cryptographic بسیار کاربردی است.
ساخت CSR از Certificate و Private Key موجود
اگر Certificate قبلی را دارید ولی CSR اصلی گم شده است:
openssl x509 \
-in old-certificate.crt \
-signkey example.com.key \
-x509toreq \
-out new-request.csrبعد از ساخت حتماً SAN و Subject را بررسی کنید؛ چون Extensionهای موردنیاز Certificate جدید ممکن است نیازمند تعریف مجدد باشند.
خطاهای رایج OpenSSL و SSL
Private key does not match the certificate
معمولاً Certificate و Key متعلق به یک Pair نیستند.
راهحل:
openssl pkey -in example.com.key -pubout | sha256sum
openssl x509 -in example.com.crt -pubkey -noout | sha256sumاگر Hash متفاوت است، فایلها Match نیستند.
unable to get local issuer certificate
معمولاً Intermediate CA وجود ندارد یا Chain ناقص است.
Certificate Bundle یا Full Chain درست را نصب کنید.
certificate has expired
تاریخ را بررسی کنید:
openssl x509 \
-in certificate.pem \
-noout \
-enddateself signed certificate in certificate chain
ممکن است Root Certificate غیرقابلاعتماد در Chain ارسال شده باشد یا Trust Store مناسب وجود نداشته باشد.
no peer certificate available
دلایل احتمالی:
- پورت اشتباه
- TLS روی آن Port فعال نیست
- Firewall اتصال را مسدود میکند
- Server Handshake را Reject میکند
برای بررسی دسترسی پورت میتوانید از ابزار Port Checker استفاده کنید.
wrong version number
این خطا اغلب زمانی دیده میشود که به یک Port بدون TLS با OpenSSL TLS Client متصل شده باشید.
برای مثال اگر HTTPS روی ۴۴۳ است ولی به Port یک HTTP Plaintext متصل شوید.
نکات امنیتی مهم هنگام کار با OpenSSL
- Private Key را در اختیار CA یا شخص ثالث قرار ندهید.
- Private Key را داخل Git Repository Commit نکنید.
- Permission فایل Key را محدود کنید.
- از ارسال خروجی کامل Private Key در Ticket خودداری کنید.
- Backup رمزگذاریشده از Key داشته باشید.
- اگر Key افشا شد، Certificate را Revoke و یک Key جدید ایجاد کنید.
- Self-Signed Certificate را برای سایت عمومی استفاده نکنید.
- قبل از نصب Certificate، SANها و Expiration را بررسی کنید.
- Full Chain را روی Web Server بهدرستی نصب کنید.
- Certificate Expiration را مانیتور کنید.
Private Key ریشه اعتماد Certificate است. اگر Private Key سرقت شود، صرف داشتن Certificate معتبر دیگر تضمینکننده امنیت Identity شما نیست.
OpenSSL و گواهی SSL خریداریشده چه ارتباطی دارند؟
برای دریافت Certificate از یک CA تجاری معمولاً Workflow به این صورت است:
- Private Key را روی Server تولید میکنید.
- CSR را از همان Key میسازید.
- CSR را برای CA ارسال میکنید.
- مالکیت دامنه یا سازمان تأیید میشود.
- Certificate صادر میشود.
- Certificate و Intermediate Chain را روی Server نصب میکنید.
اگر برای سایت خود به گواهی معتبر نیاز دارید، انواع Certificateهای DV، OV، EV و Wildcard را میتوانید در صفحه خرید SSL پویاسازان بررسی کنید.
جدول سریع دستورات OpenSSL
| کار | دستور |
|---|---|
| نمایش نسخه | openssl version |
| ساخت RSA Key | openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -out domain.key |
| ساخت CSR | openssl req -new -key domain.key -out domain.csr |
| مشاهده CSR | openssl req -in domain.csr -text -noout |
| مشاهده Certificate | openssl x509 -in domain.crt -text -noout |
| بررسی Expiration | openssl x509 -in domain.crt -noout -enddate |
| بررسی Key | openssl pkey -in domain.key -check -noout |
| استخراج Public Key | openssl pkey -in domain.key -pubout |
| تست HTTPS | openssl s_client -connect example.com:443 -servername example.com |
| نمایش Chain | openssl s_client -connect example.com:443 -servername example.com -showcerts |
| ساخت PFX | openssl pkcs12 -export -out cert.pfx -inkey domain.key -in domain.crt |
| PEM به DER | openssl x509 -in cert.pem -outform DER -out cert.der |
| DER به PEM | openssl x509 -inform DER -in cert.der -out cert.pem |
سوالات متداول درباره OpenSSL، CSR و Private Key
OpenSSL چیست؟
OpenSSL یک Toolkit رمزنگاری و TLS است که ابزار Command-Line آن برای ساخت و مدیریت Private Key، CSR، X.۵۰۹ Certificate و تست اتصال TLS استفاده میشود.
CSR چیست؟
CSR یا Certificate Signing Request فایلی است که Public Key و اطلاعات موردنیاز برای درخواست صدور Certificate را در خود دارد.
Private Key چیست؟
Private Key کلید محرمانهای است که برای اثبات مالکیت Key Pair استفاده میشود و نباید از کنترل مالک خارج شود.
آیا Private Key را باید برای صادرکننده SSL ارسال کنیم؟
خیر. فقط CSR برای CA ارسال میشود. Private Key باید روی سیستم یا زیرساخت تحت کنترل شما باقی بماند.
چطور بفهمم Certificate و Private Key با هم Match هستند؟
Public Key هر دو را استخراج و Hash آنها را مقایسه کنید:
openssl pkey -in domain.key -pubout | sha256sum
openssl x509 -in domain.crt -pubkey -noout | sha256sumاگر خروجی یکسان باشد، Match هستند.
چطور Certificate سایت را بدون Browser بررسی کنم؟
openssl s_client \
-connect example.com:443 \
-servername example.comچطور تاریخ انقضای SSL سایت را بررسی کنم؟
اگر فایل Certificate را دارید:
openssl x509 -in certificate.pem -noout -enddateبرای سایت آنلاین نیز میتوانید از SSL Checker پویاسازان استفاده کنید.
Self-Signed Certificate چیست؟
Certificateی است که بهجای CA معتبر، با Private Key خودش Sign شده است. ارتباط را Encrypt میکند، اما Clientهای عمومی بهصورت پیشفرض به آن Trust ندارند.
PEM چیست؟
PEM یک Encoding متنی Base64 است که معمولاً Certificate و Key را بین Header و Footerهایی مثل زیر نگه میدارد:
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----PFX چیست؟
PFX یا PKCS#۱۲ Containerی است که میتواند Certificate، Private Key و CA Chain را داخل یک فایل نگه دارد. در Windows و IIS بسیار رایج است.
فرق CRT و PEM چیست؟
پسوند فایل لزوماً Format واقعی را مشخص نمیکند. فایل `.crt` ممکن است PEM یا DER باشد. برای تشخیص، محتوا و Encoding فایل را بررسی کنید.
چرا openssl s_client بدون -servername Certificate اشتباه نشان میدهد؟
چون Server ممکن است چند دامنه را روی یک IP میزبانی کند و برای انتخاب Certificate صحیح به SNI نیاز داشته باشد.
آیا OpenSSL فقط برای SSL قدیمی است؟
خیر. نام پروژه OpenSSL تاریخی است، اما ابزار آن برای TLS مدرن، از جمله TLS ۱.۲ و TLS ۱.۳ نیز استفاده میشود.
جمعبندی
OpenSSL یکی از ابزارهای ضروری برای مدیریت SSL/TLS روی سرور است. با آن میتوان Private Key ساخت، CSR ایجاد کرد، Certificate را بررسی کرد، تاریخ انقضا را مانیتور کرد، Chain را اعتبارسنجی کرد، اتصال واقعی TLS را تست کرد و Certificateها را میان فرمتهای مختلف تبدیل کرد.
سه اصل مهم را همیشه به خاطر داشته باشید: Private Key را محرمانه نگه دارید، قبل از نصب مطمئن شوید Certificate و Key با هم Match هستند و Certificate Chain را بهصورت کامل روی Server نصب کنید.
اگر فقط میخواهید یک CSR بسازید، ابزار CSR Generator پویاسازان در دسترس است و برای بررسی Certificate نصبشده نیز میتوانید از SSL Checker استفاده کنید. این دو ابزار در Sitemap فعلی سایت هم بهعنوان ابزارهای مستقل منتشر شدهاند. fileciteturn15file0
برای یادگیری مفاهیم پایهتر، مقاله SSL چیست؟ و برای درک تفاوت استانداردهای قدیمی و جدید، مقاله تفاوت SSL و TLS را مطالعه کنید. هر دو URL در Sitemap فعلی وبلاگ وجود دارند. fileciteturn15file7 fileciteturn15file12
