上一篇
https证书生成
- 行业动态
- 2025-04-28
- 3
HTTPS证书通过CSR申请,经 CA验证后签发,含公钥及链,配置服务器
HTTPS证书生成全流程详解
准备工作
- 域名所有权验证
需通过DNS解析、文件上传或邮箱验证等方式证明你对域名的控制权。 - 选择证书类型
- 免费证书:Let’s Encrypt(最常用)、ZeroSSL
- 付费证书:DigiCert、GlobalSign、阿里云等
- 自签名证书:仅用于本地测试,浏览器会提示不安全。
生成证书步骤(以Let’s Encrypt为例)
安装Certbot工具
# Ubuntu/Debian系统 sudo apt update && sudo apt install certbot python3-certbot-nginx
生成证书并自动配置Nginx
sudo certbot --nginx -d example.com -d www.example.com
手动生成证书(通用方法)
- 生成私钥
openssl genpkey -algorithm RSA -out privkey.pem -pkeyopt rsa_keygen_bits:2048
- 生成CSR(证书签名请求)
openssl req -new -key privkey.pem -out cert.csr -subj "/CN=example.com/O=Example Org"
- 提交CSR到CA
通过CA官网或API上传cert.csr
,下载颁发的cert.pem
。
- 生成私钥
服务器配置示例(Nginx)
server { listen 443 ssl; server_name example.com www.example.com; ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; # 强制HSTS(提升安全性) add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always; }
验证证书是否生效
- 浏览器检查:访问
https://example.com
,查看地址栏是否显示绿色锁。 - 命令行检测
curl -v https://example.com
输出应包含
SSL handshake has read XXX bytes
且无错误。
常见问题与解决方案
问题 | 原因 | 解决方案 |
---|---|---|
浏览器提示“不安全” | 自签名证书未被信任 / 证书已过期 | 使用受信任的CA签发证书 / 续订证书 |
证书申请失败 | DNS解析未生效 / CSR格式错误 | 检查域名解析记录 / 重新生成CSR |
网站部分内容仍加载HTTP | 服务器未强制重定向 | 配置301重定向(如return 301 https://$host$request_uri; ) |
相关问题与解答
问题1:自签名证书可以用于生产环境吗?
答:不建议,自签名证书不会被浏览器或操作系统默认信任,用户访问时会收到安全警告,影响可信度,仅适合本地开发或测试环境。
问题2:什么是证书链(Certificate Chain)?
答:证书链是CA签发证书的层级结构。
- 根证书(Root CA)
- 中间证书(Intermediate CA)
- 服务器证书(End-entity Cert)
浏览器通过验证链条中所有证书的签名,确保服务器证书