上一篇
https证书怎么配置
- 行业动态
- 2025-05-01
- 3201
配置HTTPS证书需获取证书文件(.key/.pem),上传至服务器,修改Nginx/Apache等配置文件,指定证书路径并绑定443端口,重启服务生效,例如Nginx配置:在server块中添加
ssl_certificate
和 ssl_certificate_key
指令,确保文件权限正确,最后通过 nginx -t
测试配置并重启
HTTPS证书配置全流程指南
证书类型选择
类型 | 特点 |
---|---|
免费证书(如Let’s Encrypt) | 零成本,自动化更新,适合个人站点/小型企业 |
付费证书(DV/OV/EV) | 支持企业身份验证,浏览器地址栏显示公司信息,适合商业机构 |
自签名证书 | 仅用于内部测试,浏览器会提示安全风险 |
证书获取方式
Let’s Encrypt免费证书
- 使用Certbot工具(支持Apache/Nginx/DNS API)
- 命令示例:
certbot certonly --standalone -d example.com -d www.example.com
- 生成文件:
/etc/letsencrypt/live/example.com/fullchain.pem
(证书链)、privkey.pem
(私钥)
付费证书申请流程
- 通过CA机构官网提交域名验证(DNS/文件/邮件)
- 下载证书文件包(含.crt/.ca-bundle/.key)
服务器配置示例
# Nginx配置(路径需根据实际调整) server { listen 443 ssl; server_name example.com www.example.com; ssl_certificate /path/to/fullchain.pem; ssl_certificate_key /path/to/privkey.pem; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256'; location / { proxy_pass http://localhost:8080; # 后端服务地址 } }
关键配置参数说明
参数 | 作用 |
---|---|
ssl_protocols | 禁用不安全协议(如SSLv3/TLSv1) |
ssl_ciphers | 指定安全加密套件(优先ECDHE+AESGCM) |
ssl_session_timeout | 设置会话缓存时间(建议480分钟-720分钟) |
ssl_prefer_server_ciphers | 优先使用服务器端加密套件(增强安全性) |
验证与排错
使用
https://www.ssllabs.com/ssltest/analyze.html
检测:- A+评级标准:支持Forward Secrecy、禁用弱加密算法
- 常见失分点:缺少OCSP Stapling、证书链不完整
浏览器控制台检查:
- 按F12打开开发者工具 → Security标签 → 查看证书详情
- 排查混合内容(http资源加载)
自动化维护
# 设置Let's Encrypt自动续期(CentOS示例) cat <<EOF > /etc/systemd/system/certbot-renew.service [Unit] Description=Certbot automatic renewal After=network.target [Service] Type=oneshot ExecStart=/usr/bin/certbot renew --quiet --post-hook "systemctl restart nginx" [Install] WantedBy=multi-user.target EOF # 启用定时任务 systemctl enable --now certbot-renew.timer
相关问题与解答
Q1:浏览器提示”证书未受信任”怎么办?
A1:可能原因及解决方案:
- 证书链缺失 → 确认
fullchain.pem
包含中间证书 - CA根证书过期 → 更新证书文件包
- 系统时间错误 → 同步服务器时间
ntpdate ntp.aliyun.com
- 自签名证书 → 将证书导入浏览器信任列表(仅限测试环境)
Q2:如何为多个子域名配置通配符证书?
A2:操作步骤:
- 申请通配符证书(.example.com)
- DNS验证时添加临时TXT记录(如_acme-challenge.test.example.com)
- 配置服务器:
server { server_name ~^(?:.+.)?example.com$; # 匹配所有子域名 ssl_certificate /path/to/wildcard.pem; ssl_certificate_key /path/to/wildcard.key;