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 网站,浏览器地址栏将显示一个完美的灰色锁图标,没有任何警告!


六、结语

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

相关推荐
ping某1 天前
为什么 Nginx 明明监听了 80,转发后端时却用了 4xxxx 端口?
后端·nginx
大树883 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠3 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质3 天前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
Inhand陈工3 天前
基于台达PLC与映翰通IG502的智慧水产养殖精准投喂与远程运维解决方案
运维·人工智能·物联网·阿里云·信息与通信
酣大智3 天前
ARP代理--工作原理
运维·网络·arp·arp代理
shushangyun_3 天前
2026年快消品B2B系统推荐:支持终端门店订货、促销政策自动化的工具?
java·运维·网络·数据库·人工智能·spring·自动化
施努卡机器视觉3 天前
SNK施努卡侧滑门锁上滑轮总成自动化装配线,从零件到组件,全流程精密制造方案
运维·自动化·制造
AC赳赳老秦3 天前
用 OpenClaw 搭建服务器故障应急响应系统,自动处理 80% 常见运维故障
android·运维·服务器·python·rxjava·deepseek·openclaw
java_cj3 天前
深入kube-apiserver认证机制:从Bearer Token到mTLS的完整认证链解析
linux·运维·服务器·云原生·容器·kubernetes