مقدمه
گواهینامههای SSL/TLS پایه ارتباط امن در اینترنت هستند. هر بار که HTTPS را در مرورگر میبینید، یک گواهینامه در پشت صحنه کار میکند تا ترافیک را رمزگذاری کند و هویت را تأیید نماید.
نحوه کار TLS
وقتی کلاینت به سرور متصل میشود:
- کلاینت "Hello" با نسخههای TLS پشتیبانیشده ارسال میکند
- سرور با گواهینامه خود پاسخ میدهد
- کلاینت گواهینامه را در برابر CAهای معتمد تأیید میکند
- هر دو طرف کلیدهای رمزنگاری را مشتق میکنند
- تمام دادههای بعدی رمزگذاری میشوند
انواع گواهینامه
| نوع | کاربرد | هزینه |
|---|---|---|
| DV | HTTPS پایه | رایگان (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 قرار ندهید
