nginx适配openssl生成的sm2证书
时间: 2024-10-24 19:06:59 浏览: 42
OpenSSL生成的ssl证书
Nginx是一款流行的Web服务器和反向代理服务器,用于处理HTTP请求。当使用 OpenSSL 生成 SM2 (安全多方密码) 证书时,你需要将这个证书配置到 Nginx 中以便支持 HTTPS 和SM2加密。
以下是基本步骤:
1. **生成 SM2 证书**:
- 使用 OpenSSL 的 `genpkey` 和 `req` 命令生成私钥(`.pem` 或 `.der` 格式)和证书 Signing Request (CSR),如:
```
openssl genpkey -algorithm SM2 > private.key
openssl req -new -key private.key -out sm2.csr
```
2. **获取 CA 签名**:
- 将 CSR 发送给支持 SM2 的证书颁发机构(CA) 获取签名,CA会返回一个带有签名的证书 (.cer 或 .pem 格式)。
3. **转换成 Nginx 可用格式**:
- 如果收到的是 `.cer` 文件,可以先将其转换成 `.pem`:
```
openssl x509 -in sm2.crt.pem -inform der -outform pem -out sm2.crt.pem
```
- 对于 SM2 密钥,同样转换成 `.pem`:
```
openssl pkcs8 -topk8 -nocrypt -in private.key -out private.key.pem
```
4. **配置 Nginx**:
- 配置 Nginx 的 SSL 模块,添加以下内容到你的 Nginx server block 或者全局配置中:
```nginx
ssl_certificate /path/to/sm2.crt.pem;
ssl_certificate_key /path/to/private.key.pem;
ssl_protocols TLSv1.3; # 使用 SM2 支持的协议版本
ssl_ciphers "ECDHE-ECDSA-AES128-GCM-SHA256"; # 选择合适的加密套件
```
5. **重启 Nginx**:
- 修改完配置后,需要重启 Nginx 服务使其加载新配置。
阅读全文