记录openssl生成SSL证书的过程

OpenSSL 是一个功能强大且高度集成的开源安全工具包,可用于生成 SSL 证书,也就是我们常说的自签名证书。这类自签名证书由于缺乏权威机构的认证,仅适用于本地开发、内部测试或学习用途。如果您的网站需要长期、稳定且被广泛信任的安全保护,建议向正规的证书颁发机构(CA)申请付费的 SSL 证书,以确保用户访问时的安全性和可信度。

以下是使用 OpenSSL 生成 SSL 证书的详细步骤(包含自签名证书和 CA 签发证书两种场景):

一、生成自签名证书(测试/开发环境使用)​​

自签名证书不会被浏览器/系统信任,但适合本地开发或内部测试。

1. 生成私钥(RSA 2048 位)

openssl genrsa -out private.key 2048

private.key 是生成的私钥文件,需妥善保管(泄露会导致安全风险)。

2. 生成证书签名请求(CSR)

openssl req -new -key private.key -out request.csr

执行后会交互式填写信息(国家、组织、域名等),​Common Name (CN)​​ 必须与你的域名一致(如 example.com)。

3. 生成自签名证书(有效期 365 天)

openssl x509 -req -days 365 -in request.csr -signkey private.key -out certificate.crt

生成的 certificate.crt 即为自签名证书。

​二、生成 CA 签发的证书(生产环境推荐)​​

生产环境需由受信任的 CA(如 Let's Encrypt、DigiCert)签发证书,但可先用 OpenSSL 模拟 CA 流程测试。

1. 创建私有 CA(模拟)

(1) 生成 CA 私钥

openssl genrsa -out ca.key 2048

(2) 生成 CA 根证书(有效期 10 年)

openssl req -x509 -new -nodes -key ca.key -sha256 -days 3650 -out ca.crt

此证书用于签发其他证书(模拟 CA 权威)。

2. 用 CA 签发用户证书

(1) 生成服务器私钥(同步骤一)

openssl genrsa -out server.key 2048

(2) 生成服务器 CSR(同步骤一)

openssl req -new -key server.key -out server.csr

(3) 用 CA 签发证书

openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -days 365 -sha256

生成的 server.crt 即为 CA 签发的证书,需搭配 server.key 使用。

三、生成证书文件(最终使用)​​

​自签名证书​:直接使用 certificate.crt 和 private.key。

​CA 签发证书​:使用 server.crt + server.key,并需将 ca.crt 部署到客户端信任库(浏览器/操作系统)。

可选:合并证书链(如需)若 CA 有中间证书,需将中间证书与服务器证书合并:

cat server.crt intermediate.crt > fullchain.crt

最终使用 fullchain.crt 和 server.key。

四、Nginx/Apache 配置示例​

Nginx 配置片段:

ssl_certificate     /path/to/certificate.crt;  # 或 fullchain.crt
ssl_certificate_key /path/to/private.key;

Apache 配置片段:

SSLCertificateFile    /path/to/certificate.crt
SSLCertificateKeyFile /path/to/private.key

最后,验证证书。

openssl x509 -in certificate.crt -text -noout  # 查看证书详情
openssl verify -CAfile ca.crt server.crt       # 验证证书签名(CA 签发场景)

 

投上你的一票

本文出处:老蒋部落 » 记录openssl生成SSL证书的过程 | 欢迎分享( 公众号:老蒋朋友圈 )

公众号 「老蒋朋友圈」获取站长新知 / 加QQ群 【1012423279】获取商家优惠推送