首页
运维
编程

小布江

首页
运维
编程
  • Kubernetes

  • 日常

    • K8s-Minio集群迁移
    • Docker构建多架构镜像
    • Minio备份及恢复
    • cert-manager自动签发Lets Encrypt
    • Ansible批量发送密钥
    • Containerd配置私有Harbor镜像仓库
    • kvm虚拟机修改密码
    • Nexus
    • Nginx之tcp转发
    • Arthas
    • 开启telnet登录
    • CPU亲和
    • Harbor复制镜像
    • KVM虚拟机根目录扩容
    • RabbitMQ RPM部署
    • RabbitMQ Docker-Compose部署
    • RocketMQ二进制部署
    • RocketMQ Docker-Compose部署
    • Nginx版本升级
    • kvm虚拟机磁盘扩容
    • kafka双写
    • linux挂盘分区
    • Oracle-11g单机部署
    • GlusterFS部署
    • 主机磁盘管理
    • SSL自签证书管理
      • 背景说明
      • 环境信息
      • 实施步骤
        • 1. 创建根 CA 证书(有效期 10 年)
        • 2. 生成服务器私钥
        • 3. 生成证书签名请求(CSR)
        • 4. 创建 SAN 扩展配置文件
        • 5. 通过 CA 签发服务器证书
      • 信任配置
        • 将 CA 证书安装为系统受信任根证书
      • Nginx 配置示例
      • 验证结果
      • 总结
    • PicGo自建图床
    • Docker Mirrors
  • Prometheus

  • Cl

  • 运维
  • 日常
小布江
2026-02-10
目录

SSL自签证书管理

# 背景说明

在开发、测试、内网或私有云环境中,我们经常需要为自定义域名配置 HTTPS,但自签名证书默认不被信任,导致浏览器警告、API 调用失败、自动化脚本中断等问题。 本文介绍如何创建自签名 CA 证书,并将其设为系统受信任根证书,从而实现所有由该 CA 签发的证书自动被信任。

# 环境信息

  • 操作系统:Ubuntu 24.04.2 LTS
  • 工具:OpenSSL

# 实施步骤

# 1. 创建根 CA 证书(有效期 10 年)

openssl req -newkey rsa:2048 -nodes -x509 -days 3650 \
-subj "/C=CN/ST=Jiangsu/L=Wuxi/O=MyOrg/CN=My Internal CA" \
-keyout ca.key -out ca.crt
1
2
3

# 2. 生成服务器私钥

openssl genrsa -out jiang.key 4096
1

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

CN 建议设为主域名或泛域名,但实际以 SAN 为准

openssl req -new -sha256 \
-subj "/C=CN/ST=Jiangsu/L=Wuxi/O=MyOrg/CN=*.jiang.top" \
-key jiang.key -out jiang.csr
1
2
3

# 4. 创建 SAN 扩展配置文件

这是支持多域名和泛域名的关键配置

cat > extfile.cnf <<EOF
[req_ext]
subjectAltName = @alt_names

[alt_names]
DNS.1 = jiang.top
DNS.2 = *.jiang.top
DNS.3 = *.dev.jiang.top
EOF
1
2
3
4
5
6
7
8
9

# 5. 通过 CA 签发服务器证书

openssl x509 -req -days 3650 -sha256 \
-in jiang.csr \
-CA ca.crt -CAkey ca.key -CAcreateserial \
-out jiang.crt \
-extfile extfile.cnf -extensions req_ext
1
2
3
4
5

生成的文件列表:

-rw-r--r-- ca.crt       # CA 根证书
-rw------- ca.key       # CA 私钥
-rw-r--r-- ca.srl       # CA 序列号文件
-rw-r--r-- extfile.cnf  # SAN 配置文件
-rw-r--r-- jiang.crt    # 服务器证书
-rw-r--r-- jiang.csr    # 证书签名请求
-rw------- jiang.key    # 服务器私钥
1
2
3
4
5
6
7

# 信任配置

# 将 CA 证书安装为系统受信任根证书

cp ca.crt /usr/local/share/ca-certificates/jiang.top.crt
update-ca-certificates
1
2

# Nginx 配置示例

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;

    server_name jiang.top *.jiang.top;

    ssl_certificate     /root/jiang.crt;
    ssl_certificate_key /root/jiang.key;

    root /var/www/html;
    index index.nginx-debian.html;
}
1
2
3
4
5
6
7
8
9
10
11
12

# 验证结果

使用 curl 验证证书是否被正确信任:

curl -v https://jiang.top
1

关键输出(验证成功):

* SSL connection using TLSv1.3 / TLS_AES_256_GCM_SHA384 / X25519 / RSASSA-PSS
* Server certificate:
*  subject: C=CN; ST=Jiangsu; L=Wuxi; O=MyOrg; CN=*.jiang.top
*  start date: Feb 10 05:14:02 2026 GMT
*  expire date: Feb  8 05:14:02 2036 GMT
*  subjectAltName: host "jiang.top" matched cert's "jiang.top"
*  issuer: C=CN; ST=Jiangsu; L=Wuxi; O=MyOrg; CN=My Internal CA
*  SSL certificate verify ok.
1
2
3
4
5
6
7
8

# 总结

将自建 CA 证书导入系统受信任的根证书存储后,所有由该 CA 签发的证书(包括未来新增的)将自动被系统及应用程序信任,无需逐个导入。

#linux
上次更新: 2026/05/31, 03:30:34
主机磁盘管理
PicGo自建图床

← 主机磁盘管理 PicGo自建图床→

最近更新
01
Coredns自定义参数
05-18
02
Docker Mirrors
04-24
03
PicGo自建图床
02-08
更多文章>
Theme by Vdoing
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式