Nginx自签名-图形化工具 XCA

一、引言:为什么选择 XCA?

在之前的教程中,我们已经学会了用 OpenSSL 命令行来创建自签名证书。虽然强大,但命令繁多、参数复杂,特别是当需要配置 Subject Alternative Name(SAN,用于支持多域名/IP)时,很容易出错。

有没有更简单、更直观的方法

答案是肯定的!XCA(X Certificate and Key management) 是一款开源、跨平台的图形化证书管理工具。它将复杂的 PKI(公钥基础设施)操作封装在直观的界面之下,让你像操作普通软件一样,轻松完成以下任务:

  • 创建自己的私有 CA(证书颁发机构)
  • 签发服务器证书、客户端证书
  • 管理密钥、证书请求(CSR)
  • 转换各种证书格式(PEM, DER, PFX等)

本文将带你从零开始,使用 XCA 为 Nginx 生成一套被浏览器完全信任的 HTTPS 证书。

💡 核心价值

掌握 XCA,从此告别 OpenSSL 命令行的"天书",高效、准确地管理你的内网安全证书


二、准备工作:下载与安装 XCA

1. 下载 XCA

根据你的操作系统(Windows, macOS, Linux)下载对应的安装包。

2. 安装 XCA

安装过程非常简单,像安装普通软件一样,一路"下一步"即可。

3. 创建新数据库

首次启动 XCA,它会提示你创建一个新的数据库文件(例如 my-pki.xdb)。这个文件将保存你所有的密钥、证书和 CA 信息。请务必妥善保管此文件


三、实战:使用 XCA 创建私有 CA 和服务器证书

第一步:创建根 CA 证书

根 CA 是你整个私有 PKI 体系的信任锚点。

  1. 切换到"证书颁发机构"标签页 ,点击左上角的 "新建" 按钮。
  2. 创建私钥 :
    • 在弹出的窗口中,首先会要求你创建一个私钥。
    • 点击 "生成新的密钥"
    • 选择算法(推荐 RSA),密钥长度(推荐 4096 位)。
    • 输入一个描述性的名称,如 My Internal Root CA Key
    • 点击 "创建"
  3. 填写 CA 信息 :
    • 回到 CA 创建窗口,填写证书的主题信息:
      • 国家 (C): CN
      • 州/省 (ST): Beijing
      • 城市 (L): Beijing
      • 组织 (O): MyCompany
      • 通用名称 (CN): My Internal Root CA (这是 CA 的名字)
    • 设置一个较长的有效期(如 3650 天,即10年)。
  4. 完成创建 :
    • 确认无误后,点击 "确定"。XCA 会自动为你生成一个自签名的根 CA 证书。

第二步:创建服务器证书模板(可选但推荐)

为了方便后续签发,我们可以先创建一个模板。

  1. 切换到"模板"标签页 ,点击 "新建"
  2. 填写模板名称,如 Nginx Server Template
  3. "扩展项" 中,找到 "主题备用名称 (Subject Alternative Name),在这里添加你需要的所有域名和 IP 地址:
    • DNS: your-domain.local
    • DNS: www.your-domain.local
    • IP: 192.168.1.100
    • IP: 127.0.0.1
  4. 其他设置保持默认,点击 "确定" 保存模板。

第三步:签发 Nginx 服务器证书

现在,用我们刚创建的 CA 来签发服务器证书。

  1. 切换到"证书"标签页 ,点击 "新建"
  2. 选择签发者 :
    • 在 "使用以下项签署" 下拉菜单中,选择我们刚刚创建的 My Internal Root CA
  3. 创建服务器私钥 :
    • 点击 "生成新的密钥" ,为服务器创建一个新的私钥(例如 2048 位 RSA)。
  4. 填写服务器信息 :
    • 通用名称 (CN): 填写你的主域名,如 your-domain.local
    • 如果你创建了模板,在 "模板" 下拉框中选择 Nginx Server Template,XCA 会自动填充 SAN 信息。
  5. 完成签发 :
    • 点击 "确定",XCA 会立即使用你的私有 CA 为服务器签发一张证书。

四、导出证书并配置 Nginx

1. 导出证书和私钥

在 XCA 的 "证书" 标签页中,找到你刚创建的服务器证书。

  • 导出证书 (.crt):右键 -> "导出" -> "导出为 PEM (*.pem, *.crt)"。保存为 server.crt
  • 导出私钥 (.key):切换到 "私钥" 标签页,找到对应的服务器私钥,右键 -> "导出" -> "导出为 PEM (*.pem, *.key)"。注意不要勾选"加密私钥" ,否则 Nginx 启动时会要求输入密码。保存为 server.key

2. 配置 Nginx

server.crtserver.key 复制到你的服务器(例如 /etc/nginx/ssl/ 目录)。

编辑 Nginx 配置文件:

复制代码
server {
    listen 443 ssl http2;
    server_name your-domain.local;

    # 指向 XCA 导出的文件
    ssl_certificate /etc/nginx/ssl/server.crt;
    ssl_certificate_key /etc/nginx/ssl/server.key;

    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;

    root /var/www/html;
    index index.html;
    location / {
        try_files $uri $uri/ =404;
    }
}

server {
    listen 80;
    server_name your-domain.local;
    return 301 https://$host$request_uri;
}

重载 Nginx 配置:

bash 复制代码
sudo nginx -t && sudo systemctl reload nginx

五、建立信任:安装根证书

为了让浏览器信任你的网站,你需要将 根 CA 证书 (ca.crt) 安装到客户端。

  1. 导出根 CA 证书 :在 XCA 的 "证书颁发机构" 标签页,右键你的 CA -> "导出" -> "导出为 PEM (*.pem, *.crt)"。保存为 ca.crt
  2. 安装到操作系统 (方法同前文):
    • Windows : 双击 ca.crt -> "安装证书" -> "本地计算机" -> "受信任的根证书颁发机构"。
    • macOS : 双击 ca.crt -> 在"钥匙串访问"的"系统"中找到它 -> 双击 -> "始终信任"。
    • Linux : sudo cp ca.crt /usr/local/share/ca-certificates/ && sudo update-ca-certificates

安装完成后,刷新你的 Nginx 网站,浏览器地址栏将显示一个完美的灰色锁图标,没有任何警告!


六、结语

感谢您的阅读!如果你有任何疑问或想要分享的经验,请在评论区留言交流!

相关推荐
志栋智能3 小时前
小步快跑:从单一场景开启超自动化巡检之旅
运维·网络·人工智能·自动化
AugustRed3 小时前
Linux 运维常用命令大全(超全速查表)
运维·网络·php
Plastic garden3 小时前
Docker(1)
运维·docker·容器
s_w.h3 小时前
【 linux 】动静态库的制作
linux·运维·服务器·算法·bash
songjxin3 小时前
Nginx 日志分析可视化面板
运维·nginx
专注VB编程开发20年4 小时前
安卓APP与服务器通讯技术,文件传输和文字消息收发
运维·服务器
Agent手记4 小时前
电信运营商如何用AI实现携号转网自动处理?基于实在Agent的业务自动化落地与TARS大模型解析方案
运维·人工智能·ai·自动化
wanhengidc4 小时前
云手机搬砖 像僵尸开炮
运维·网络·智能手机·云计算
_Voosk5 小时前
FreeBSD 使用代理运行命令
linux·运维·freebsd