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


六、结语

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

相关推荐
非凡ghost8 小时前
视频剪辑不用等渲染,这款开源工具让切分合并秒级完成
运维·电脑·软件需求
FII工业富联科技服务10 小时前
Omniverse 数字孪生与柔性自动化,如何破解产能与交付、设备与空间的双重困境?
运维·自动化·devops
润滑卫士10 小时前
油液介电常数在线监测:测量原理与油液老化状态评估方法
运维
Rock Chin69711 小时前
把 n8n 接进 Slack:在对话里 @机器人 触发自动化工作流
运维·机器人·自动化
浩浩测试一下12 小时前
Linux 底层知识点 1
linux·运维·服务器
Eloudy12 小时前
全文 - IMEX 第01节 -IMEX overview
运维·服务器·网络
物联网软硬件开发-轨物科技12 小时前
【技术白皮书】光伏清检一体化机器人系统解决方案技术白皮书
大数据·运维·网络·人工智能·机器人
海宇数据12 小时前
零信任架构实战:基于海宇网上踪迹欺诈行为识别构建自动化信贷资信评估网关
运维·人工智能·架构·自动化
忆挽篱笙歌13 小时前
环境变量,本地变量
linux·运维·服务器
码间留白14 小时前
手把手把 GitHub 推上阿里云 ECS:Actions CI/CD 全链路避坑实录(折腾好几天,到 2 分钟见绿)
运维·阿里云·ci/cd·docker·devops·github actions