SSL证书监控是确保网站安全性和可用性的重要环节,特别是在使用Nginx作为反向代理时。以下是关于Nginx反向代理中SSL证书监控的全面指南:
# 检查证书过期时间
openssl s_client -connect yourdomain.com:443 -servername yourdomain.com 2>/dev/null | openssl x509 -noout -dates
# 检查证书详细信息
openssl s_client -connect yourdomain.com:443 -servername yourdomain.com 2>/dev/null | openssl x509 -noout -text
在Nginx配置中添加:
server {
listen 127.0.0.1:8080;
server_name localhost;
location /cert-status {
stub_status on;
access_log off;
allow 127.0.0.1;
deny all;
}
}
#!/bin/bash
DOMAIN="yourdomain.com"
WARNING_DAYS=30
expiry_date=$(openssl s_client -connect $DOMAIN:443 -servername $DOMAIN 2>/dev/null | openssl x509 -noout -enddate | cut -d= -f2)
expiry_epoch=$(date -d "$expiry_date" +%s)
current_epoch=$(date +%s)
days_left=$(( (expiry_epoch - current_epoch) / 86400 ))
if [ $days_left -lt $WARNING_DAYS ]; then
echo "WARNING: SSL certificate for $DOMAIN expires in $days_left days!"
# 可以添加邮件或Slack通知逻辑
exit 1
else
echo "OK: SSL certificate for $DOMAIN expires in $days_left days."
exit 0
fi
证书自动续期:
certbot renew --nginx --quiet --no-self-upgrade --post-hook "systemctl reload nginx"
配置HSTS:
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
使用强加密套件:
ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256';
OCSP Stapling:
ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout 5s;
通过实施这些监控措施,您可以确保Nginx反向代理中的SSL证书始终处于健康状态,避免因证书问题导致的服务中断。