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

一键生成证书、密钥脚本

复制代码
#!/bin/bash

CERT_DIR="./ssl"
DOMAIN="example.com"
DAYS=365

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 "/C=CN/ST=Beijing/L=Beijing/O=MyCompany/OU=IT/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_DIR"

nginx配置

复制代码
ssl_certificate     /etc/ssl/example.com.crt;
ssl_certificate_key /etc/ssl/example.com.key;

脚本解释

这是一个一键生成自签名SSL证书的Shell脚本,逐行解释如下:


脚本结构解析

1. Shebang & 配置变量

bash 复制代码
#!/bin/bash
CERT_DIR="./ssl"        # 证书输出目录(当前目录下ssl文件夹)
DOMAIN="example.com"    # 证书的通用名称(CN)
DAYS=365                # 证书有效期

2. 文件路径变量

bash 复制代码
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. 创建输出目录

bash 复制代码
mkdir -p "$CERT_DIR"    # -p 表示递归创建,若目录存在则不报错

4. 生成私钥 (2048位RSA)

bash 复制代码
openssl genrsa -out "$KEY_FILE" 2048
  • 输出文件:./ssl/example.com.key
  • -----BEGIN PRIVATE KEY----- 开头

5. 创建CSR(免交互方式)

bash 复制代码
openssl req -new -key "$KEY_FILE" -out "$CSR_FILE" -subj "/C=CN/ST=Beijing/L=Beijing/O=MyCompany/OU=IT/CN=$DOMAIN"
  • -subj参数 :直接指定证书主题,避免交互式输入
    • C=CN:国家(China)
    • ST=Beijing:省份
    • L=Beijing:城市
    • O=MyCompany:组织
    • OU=IT:部门
    • CN=$DOMAIN:通用名称(域名)

6. 自签名证书

bash 复制代码
openssl x509 -req -in "$CSR_FILE" -signkey "$KEY_FILE" -out "$CRT_FILE" -days "$DAYS"
  • 用私钥对CSR进行自签名
  • 输出:./ssl/example.com.crt

7. 合并PEM文件(可选)

bash 复制代码
cat "$CRT_FILE" "$KEY_FILE" > "$PEM_FILE"
  • 将证书和私钥合并成一个文件
  • 用途:某些服务(如Nginx)需要合并文件

8. 列出生成的证书文件

bash 复制代码
ls -l "$CERT_DIR"

最终生成的文件

执行后 ./ssl/ 目录下生成:

复制代码
example.com.key    # 私钥(敏感,勿泄露)
example.com.csr    # 证书请求(可丢弃)
example.com.crt    # 自签名证书
example.com.pem    # 合并文件(证书+私钥)

使用场景

  • 测试/开发环境的HTTPS配置
  • 内部网络服务加密
  • CI/CD流水线中快速生成测试证书

⚠️ 注意事项

  • 自签名证书浏览器会显示不安全
  • 生产环境应使用CA机构签发的证书
  • 脚本路径为相对路径(./ssl),可在任意目录执行
相关推荐
FPGA小迷弟2 小时前
vivado中的AXI Interconnect到底应该怎么用,他的底层原理是什么,一篇文档全部理清楚!!!
网络协议·tcp/ip·fpga开发·verilog·fpga
网络攻城狮_3 小时前
网络协议大全
运维·网络·网络协议·http
芷栀夏3 小时前
飞牛NAS怎么部署Immich?家庭照片自动备份与远程访问教程
服务器·nginx·ansible
hbugs00115 小时前
【案例分享】全网首个华三数据中心流量可视化实验,基于EVE-NG V7平台
网络·网络协议·安全·devops·eve-ng
yxl8746464621 小时前
PCTG-1015型Profinet转Ethernet/IP协议转换器
服务器·网络·物联网·网络协议·自动化·信息与通信
pW3g3lLuu1 天前
.NET 高级开发 | http 接口对接和客户端开发技巧
网络协议·http·.net
阿标在干嘛1 天前
政策快报爬虫的生存指南:IP池、浏览器模拟、验证码识别实战
爬虫·网络协议·tcp/ip
墨香幽梦客1 天前
数据安全三板斧:Https/SSL加密+PCI-DSS合规+HIPAA医疗数据防护
网络协议·https·ssl
王二端茶倒水3 天前
从千兆到万兆:宽带运营不能只卖套餐,要管用户生命周期从千兆到万兆:宽带运营需要管理用户生命周期
后端·网络协议·架构