رفتن به محتوا
بازگشت به وبلاگ
امنیت

مدیریت گواهی SSL/TLS در مقیاس بزرگ

خودکارسازی صدور، تمدید و استقرار گواهی SSL/TLS با Let Encrypt، پروتکل ACME و cert-manager در محیط تولیدی.

شهریور ۱۴۰۴
۱۱ دقیقه مطالعه

مقدمه

گواهینامههای SSL/TLS پایه ارتباط امن در اینترنت هستند. هر بار که HTTPS را در مرورگر میبینید، یک گواهینامه در پشت صحنه کار میکند تا ترافیک را رمزگذاری کند و هویت را تأیید نماید.

نحوه کار TLS

وقتی کلاینت به سرور متصل میشود:

  1. کلاینت "Hello" با نسخههای TLS پشتیبانیشده ارسال میکند
  2. سرور با گواهینامه خود پاسخ میدهد
  3. کلاینت گواهینامه را در برابر CAهای معتمد تأیید میکند
  4. هر دو طرف کلیدهای رمزنگاری را مشتق میکنند
  5. تمام دادههای بعدی رمزگذاری میشوند

انواع گواهینامه

نوعکاربردهزینه
DVHTTPS پایهرایگان (Let's Encrypt)
OVسایتهای تجاریپولی
Wildcard *.domain.comزیردامنههای متعددمتغیر

نصب گواهینامه رایگان با Let's Encrypt

BASH
# نصب certbot
apt install certbot python3-certbot-nginx

# دریافت گواهینامه برای nginx
certbot --nginx -d example.com -d www.example.com

# تست تمدید خودکار
certbot renew --dry-run

پیکربندی Nginx با SSL

NGINX
server {
    listen 443 ssl http2;
    server_name example.com;

    ssl_certificate     /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384;

    add_header Strict-Transport-Security "max-age=63072000" always;
}

server {
    listen 80;
    server_name example.com;
    return 301 https://$host$request_uri;
}

ایجاد CA داخلی

برای سرویسهای داخلی، CA خودتان را بسازید:

BASH
# تولید کلید خصوصی CA
openssl genrsa -aes256 -out /etc/ssl/myca/private/ca.key 4096

# تولید گواهینامه CA (۱۰ سال اعتبار)
openssl req -new -x509 -days 3650   -key /etc/ssl/myca/private/ca.key   -out /etc/ssl/myca/certs/ca.crt   -subj "/C=IR/O=Company/CN=Company Root CA"

دستورات مفید OpenSSL

BASH
# بررسی تاریخ انقضاء
openssl x509 -in cert.pem -noout -dates

# بررسی گواهینامه سرور از راه دور
echo | openssl s_client -connect example.com:443 2>/dev/null | openssl x509 -noout -text

# تبدیل PFX به PEM
openssl pkcs12 -in cert.pfx -out cert.pem -nodes

خلاصه

  • از Let's Encrypt برای سرویسهای عمومی استفاده کنید — رایگان و تمدید خودکار
  • برای سرویسهای داخلی CA خودتان بسازید
  • همیشه TLS 1.2 یا 1.3 استفاده کنید
  • انقضای گواهینامه را با ابزار مانیتورینگ زیر نظر بگیرید
  • کلیدهای خصوصی را هرگز در version control قرار ندهید