使用OpenSSL生成本地证书https+nginx

📅 2026/7/5 8:27:46
使用OpenSSL生成本地证书https+nginx
一键生成证书、密钥脚本#!/bin/bash CERT_DIR./ssl DOMAINexample.com DAYS365 KEY_FILE$CERT_DIR/$DOMAIN.key CSR_FILE$CERT_DIR/$DOMAIN.csr CRT_FILE$CERT_DIR/$DOMAIN.crt PEM_FILE$CERT_DIR/$DOMAIN.pem mkdir -p $CERT_DIR echo 生成私钥... openssl genrsa -out $KEY_FILE 2048 echo 生成 CSR... openssl req -new -key $KEY_FILE -out $CSR_FILE -subj /CCN/STBeijing/LBeijing/OMyCompany/OUIT/CN$DOMAIN echo ✅ 生成自签名证书... openssl x509 -req -in $CSR_FILE -signkey $KEY_FILE -out $CRT_FILE -days $DAYS echo 合并 PEM可选... cat $CRT_FILE $KEY_FILE $PEM_FILE ls -l $CERT_DIRnginx配置ssl_certificate /etc/ssl/example.com.crt; ssl_certificate_key /etc/ssl/example.com.key;脚本解释这是一个一键生成自签名SSL证书的Shell脚本逐行解释如下脚本结构解析1. Shebang 配置变量#!/bin/bashCERT_DIR./ssl# 证书输出目录当前目录下ssl文件夹DOMAINexample.com# 证书的通用名称(CN)DAYS365# 证书有效期2. 文件路径变量KEY_FILE$CERT_DIR/$DOMAIN.key# 私钥文件CSR_FILE$CERT_DIR/$DOMAIN.csr# 证书签名请求CRT_FILE$CERT_DIR/$DOMAIN.crt# 证书文件PEM格式PEM_FILE$CERT_DIR/$DOMAIN.pem# 合并的PEM文件证书私钥3. 创建输出目录mkdir-p$CERT_DIR# -p 表示递归创建若目录存在则不报错4. 生成私钥 (2048位RSA)openssl genrsa-out$KEY_FILE2048输出文件./ssl/example.com.key以-----BEGIN PRIVATE KEY-----开头5. 创建CSR免交互方式openssl req-new-key$KEY_FILE-out$CSR_FILE-subj/CCN/STBeijing/LBeijing/OMyCompany/OUIT/CN$DOMAIN-subj参数直接指定证书主题避免交互式输入CCN国家(China)STBeijing省份LBeijing城市OMyCompany组织OUIT部门CN$DOMAIN通用名称域名6. 自签名证书openssl x509-req-in$CSR_FILE-signkey$KEY_FILE-out$CRT_FILE-days$DAYS用私钥对CSR进行自签名输出./ssl/example.com.crt7. 合并PEM文件可选cat$CRT_FILE$KEY_FILE$PEM_FILE将证书和私钥合并成一个文件用途某些服务如Nginx需要合并文件8. 列出生成的证书文件ls-l$CERT_DIR最终生成的文件执行后./ssl/目录下生成example.com.key # 私钥敏感勿泄露 example.com.csr # 证书请求可丢弃 example.com.crt # 自签名证书 example.com.pem # 合并文件证书私钥使用场景测试/开发环境的HTTPS配置内部网络服务加密CI/CD流水线中快速生成测试证书⚠️ 注意事项自签名证书浏览器会显示不安全生产环境应使用CA机构签发的证书脚本路径为相对路径./ssl可在任意目录执行