以下是Ubuntu系统下OpenSSL证书管理的关键技巧,涵盖生成、配置、更新及安全维护等方面:
安装OpenSSL
sudo apt update && sudo apt install openssl ca-certificates
生成私钥与证书签名请求(CSR)
openssl genpkey -algorithm RSA -out private.key -aes256 2048 # 生成加密私钥
openssl req -new -key private.key -out certificate.csr # 填写域名、组织等信息生成CSR
生成自签名证书(测试用)
openssl x509 -req -days 365 -in certificate.csr -signkey private.key -out certificate.crt
查看证书详情
openssl x509 -in certificate.crt -text -noout # 显示有效期、颁发者等信息
openssl x509 -enddate -noout -in certificate.crt # 仅查看过期时间
安装到系统信任库
将自签名证书复制到系统根证书路径并更新信任库:
sudo cp certificate.crt /usr/local/share/ca-certificates/
sudo update-ca-certificates
Web服务器配置(以Nginx为例)
# 编辑配置文件(如 /etc/nginx/sites-available/default)
ssl_certificate /path/to/certificate.crt;
ssl_certificate_key /path/to/private.key;
sudo nginx -t && sudo systemctl restart nginx
自动续期(Let’s Encrypt证书)
使用Certbot工具自动管理证书生命周期:
sudo apt install certbot python3-certbot-nginx # 安装Certbot
sudo certbot --nginx -d example.com # 申请证书
sudo certbot renew --dry-run # 测试自动续期
手动更新根证书
sudo apt update && sudo apt install --reinstall ca-certificates
sudo update-ca-certificates
保护私钥权限
sudo chmod 600 private.key # 限制仅root可读写
禁用不安全协议
编辑/etc/ssl/openssl.cnf
,在[system_default_sect]
中添加:
MinProtocol = TLSv1.2
CipherString = HIGH:!aNULL:!MD5
监控证书有效期
定期通过脚本或工具(如openssl
、cron
)检查证书过期时间,提前触发续期:
# 示例:检查证书剩余天数
openssl x509 -in certificate.crt -noout -enddate | awk -F= '{print $2}' | xargs -I{} date -d {} +%s | awk '{print ({} - systime())/(24*3600)}'
cat server.crt intermediate.crt > fullchain.crt
)。openssl pkcs12 -export -in certificate.crt -inkey private.key -out certificate.pfx
参考来源:[1,2,3,4,5,6,7,8,9,10,11]