使用 PVE 自签 CA 证书签发新证书

前言

PVE 安装时会自动创建一个有效期 10 年的 CA 证书, 我们可以利用这个 CA 证书给虚拟机中的 Web 应用签发新的 TLS 证书用于提供 HTTPS 服务. 下面以 PVE 虚拟机中通过 Docker 跑的一个 雷池 应用为例进行演示.

PVE 证书位置

官方文档: https://pve.proxmox.com/wiki/Proxmox_Cluster_File_System_(pmxcfs)#chapter_pmxcfs 下面我们只需要用到这两个文件:

文件 说明
/etc/pve/priv/pve-root-ca.key CA 私钥
/etc/pve/pve-root-ca.pem CA 证书

本地导入 CA 证书

Windows 系统运行 certmgr.msc > Trusted Root Certification Authorities > Certificates > All Tasks > Import 选择 pve-root-ca.pem 完成导入. 这样本地电脑就会信任 PVE 的 CA 证书, 后面用 CA 证书签发的应用证书也会继承信任.
在这里插入图片描述

签发新证书

SSH 到 PVE.

# 在 `subjectAltName` 中定义了两个 DNS 名称, 保证内网和外网两个域名都能识别
openssl req -new -subj "/C=CN/ST=Beijing/L=Beijing/O=Alian/CN=docker.alian.fun" \
-addext "subjectAltName = DNS:docker.lan, DNS:docker.alian.fun" \
-CA /etc/pve/pve-root-ca.pem -CAkey /etc/pve/priv/pve-root-ca.key \
-noenc -newkey rsa:2048 -keyout leichi.key -out leichi.pem

# 得到两个文件: 证书私钥 leichi.key 证书本体 leichi.pem 

# 检查证书信息
openssl x509 -noout -text -in leichi.pem

展开解释 openssl 命令参数含义 openssl req 完整文档

  • -new 创建新的证书申请
  • -subj 定义 Subject 信息
  • -addext 添加额外的 subjectAltName 属性用于定义多个别名 DNS
  • -CA 指定 CA 证书位置
  • -CAkey 指定 CA 私钥位置
  • -noenc 对证书私钥不加密 (老版本 openssl 中用的是 -nodes 已 deprecated)
  • -newkey 创建新的证书私钥, 使用 2048 位长度 RSA 算法
  • -keyout 证书私钥输出的文件名
  • -out 证书本地输出的文件名

使用证书

在雷池管理后台分别粘贴/上传签发好的证书和私钥
在这里插入图片描述
证书信息被成功识别:
在这里插入图片描述
切换控制台证书生效:
在这里插入图片描述
刷新浏览器:
在这里插入图片描述

附: 校验证书和私钥

证书和私钥的模数(modulus)必须完全匹配才算是一对

# 计算证书模数
openssl x509 -noout -modulus -in pve-ssl.pem
# 计算私钥模数
openssl rsa -noout -modulus -in pve-ssl.key

相关推荐

  1. 使用openssl生成签名证书

    2024-07-22 23:12:01       33 阅读
  2. 使用openssl生成签名证书

    2024-07-22 23:12:01       23 阅读
  3. OpenSSL签名证书

    2024-07-22 23:12:01       28 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-22 23:12:01       52 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-22 23:12:01       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-22 23:12:01       45 阅读
  4. Python语言-面向对象

    2024-07-22 23:12:01       55 阅读

热门阅读

  1. Webpack 5 Tree Shaking与Module Federation

    2024-07-22 23:12:01       15 阅读
  2. MUX-VLAN基本概述

    2024-07-22 23:12:01       17 阅读
  3. 探索特征降维的奥秘:sklearn中的分层方法

    2024-07-22 23:12:01       12 阅读
  4. 学习数据处理的三要点

    2024-07-22 23:12:01       15 阅读
  5. Mojo模型与A/B测试:数据驱动决策的科学

    2024-07-22 23:12:01       17 阅读
  6. 降维与选择:用Scikit-Learn精炼数据特征的艺术

    2024-07-22 23:12:01       15 阅读
  7. 集成学习的艺术:使用Scikit-Learn实现模型融合

    2024-07-22 23:12:01       12 阅读
  8. 2024年自动驾驶规划控制面试及答案

    2024-07-22 23:12:01       17 阅读
  9. Vue2 父子组件进行数据传递

    2024-07-22 23:12:01       13 阅读
  10. zzuli1027:判断水仙花数

    2024-07-22 23:12:01       14 阅读
  11. TypeScript极速梳理

    2024-07-22 23:12:01       14 阅读