news 2026/5/10 9:26:15

openEluer下CA根证书服务器部署与web服务器证书申请

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
openEluer下CA根证书服务器部署与web服务器证书申请

本文提供基于openEuler操作系统和openssl工具的完整配置方案,涵盖CA根证书服务器的部署、web服务器的证书申请/签发/安装全流程,确保证书信任链完整、配置可落地。

环境说明
CA根证书服务器:IP:192.168.0.10,主机名ca-server,操作系统openEuler 22.03 LTS
Web服务器:IP:192.168.0.20,主机名web-server,操作系统openEuler 22.03 LTS

平台支持:天枢一体化虚拟仿真平台

一、前置准备(两台服务器均需执行)

完成系统基础配置,安装必要依赖,确保两台服务器网络互通(可ping通、开放22端口用于文件传输)。

  • 更新系统包(推荐执行,保证系统组件最新):

dnf update -y

  • 安装vim工具:

sduo yum isntall vim -y

  • 安装openssl工具(CA服务器核心依赖,web服务器需用于生成证书请求):

dnf install -y openssl openssl-devel

  • 验证openssl安装成功:

openssl version # 输出类似 OpenSSL 1.1.1k FIPS 25 Mar 2021 即正常

我们先在平台中将前置准备在一台服务器中升级好后,通过克隆完成安装,然后设置服务器名称及IP。

二、CA根证书服务器部署(仅在CA服务器192.168.0.10执行)

CA根证书服务器的核心是构建信任基础,需完成目录结构创建、配置文件调整、根私钥与自签名根证书生成。

1创建CA标准目录结构

采用openEuler推荐的/etc/pki/CA目录作为CA根目录,用于分类存放私钥、证书、吊销列表等关键文件,严格控制权限防止私钥泄露。

# 创建核心目录(私钥、已签发证书、吊销列表、新证书临时目录)
mkdir -p /etc/pki/CA/{private,certs,crl,newcerts}
# 创建CA必需的索引文件(记录证书签发/吊销状态)和序列号文件(控制证书编号)
touch /etc/pki/CA/index.txt
echo 01 > /etc/pki/CA/serial # 初始序列号从01开始
# 配置权限:private目录仅root可访问(关键!防止私钥泄露)
chmod 700 /etc/pki/CA/private
chown -R root:root /etc/pki/CA

2配置openssl.cnf核心文件

/etc/pki/tls/openssl.cnf是openssl的默认配置文件,需调整[CA_default]段参数,适配CA根服务器的工作需求。

  • 备份原配置文件(避免修改错误无法恢复):

cp /etc/pki/tls/openssl.cnf /etc/pki/tls/openssl.cnf.bak

  • 编辑配置文件,修改[CA_default]段:

vim /etc/pki/tls/openssl.cnf

  • 将[CA_default]段替换为以下内容(其余段保持默认):

[ CA_default ]
dir = /etc/pki/CA # CA根目录(与前文创建的目录一致)
certs = $dir/certs # 已签发证书存放路径
crl_dir = $dir/crl # 证书吊销列表存放路径
database = $dir/index.txt # 证书索引文件(自动记录证书信息)
new_certs_dir = $dir/newcerts # 新签发证书的临时存放目录
certificate = $dir/cacert.pem # CA根证书路径(后续生成)
serial = $dir/serial # 证书序列号文件(前文创建)
crlnumber = $dir/crlnumber # 吊销列表序列号文件(自动生成)
crl = $dir/crl.pem # 吊销列表文件路径
private_key = $dir/private/cakey.pem# CA根私钥路径(后续生成)
RANDFILE = $dir/private/.rand # 随机数文件(增强加密安全性)
x509_extensions = usr_cert # 默认证书扩展
name_opt = ca_default # 证书名称显示选项
cert_opt = ca_default # 证书信息显示选项
default_days = 365 # 证书默认有效期(1年,根证书建议长期有效)
default_crl_days= 30 # 吊销列表有效期(30天,需定期更新)
default_md = sha256 # 加密算法(SHA-256,安全性更高)
preserve = no # 不保留证书请求文件
policy = policy_match # 证书信息匹配策略(需与请求文件一致)

3生成CA根私钥与自签名根证书

根私钥是CA服务器的核心机密,自签名根证书是所有下级证书的信任源头,生成过程需严格保密。

  • 生成CA根私钥(2048位RSA密钥,AES256加密保护):

openssl genrsa -aes256 -out /etc/pki/CA/private/cakey.pem 2048

执行后需输入密码(示例:123123),并记住该密码(后续签发证书需验证),参数说明:

  • genrsa:生成RSA私钥
  • -aes256:用AES256算法加密私钥(防止私钥文件被盗用)
  • -out:指定私钥输出路径(严格放在private目录)
  • 2048:密钥长度(2048位满足主流安全需求,4096位更安全但性能略差)
  • 生成自签名根证书(基于根私钥,有效期1年):

openssl req -new -x509 -days 365 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem

  • 执行步骤:第一步输入刚才设置的根私钥密码;第二步填写CA证书信息(示例如下,根据实际需求修改,Common Name建议为CA服务器域名/IP):

Plain Text
Country Name (2 letter code) [XX]:CN # 国家代码(中国填CN)
State or Province Name (full name) []:cq # 省份
Locality Name (eg, city) [Default City]:cq # 城市
Organization Name (eg, company) [Default Company Ltd]:lj # 组织/公司名称
Organizational Unit Name (eg, section) []:ljsec # 部门(建议安全部门)
Common Name (eg, your name or your server's hostname) []:192.168.0.10 # 核心:CA服务器标识(域名/IP)
Email Address []:cqaway@163.com # 管理员邮箱

参数说明:

  • req:处理证书请求相关操作
  • -new:生成新的证书请求
  • -x509:生成自签名证书(根证书专用,无需其他机构签发)
  • -days:证书有效期(与配置文件一致,1年)
  • -key:指定用于签名的根私钥
  • -out:指定根证书输出路径
  • 验证CA根证书生成成功:

openssl x509 -in /etc/pki/CA/cacert.pem -noout -text # 输出证书详细信息即正常

三、web服务器证书申请与签发(web服务器192.168.0.20+ CA服务器协同)

web服务器需先生成自身私钥和证书请求文件(CSR),将CSR提交给CA服务器签发,最终获取有效证书并部署到web服务。

1web服务器生成私钥与证书请求(CSR)

操作均在web服务器(192.168.0.20)执行,私钥需妥善保管,CSR用于向CA申请证书(不含私钥,可公开传输)。

  • 创建证书存放目录(统一管理web服务器证书文件):

mkdir -p /etc/nginx/cert
chmod 700 /etc/nginx/cert # 限制权限,仅root可访问

  • 生成web服务器私钥(2048位RSA,无需加密保护(web服务启动无需手动输密码),若需加密可添加-aes256):

openssl genrsa -out /etc/nginx/cert/web-server.key 2048

  • 生成证书请求文件(CSR):

openssl req -new -key /etc/nginx/cert/web-server.key -out /etc/nginx/cert/web-server.csr

  • 执行步骤:第一步直接回车(若私钥未加密);第二步填写CSR信息(Common Name必须为web服务器的域名/公网IP,其他信息可与CA证书一致或按需填写):

Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:cq
Locality Name (eg, city) [Default City]:cq
Organization Name (eg, company) [Default Company Ltd]:lj
Organizational Unit Name (eg, section) []:ljsec
Common Name (eg, your name or your server's hostname) []:192.168.0.20 # 核心:web服务器访问地址(域名/IP)
Email Address []:cqaway@163.com

# 可选属性:直接回车跳过(无需填写)
A challenge password []:
An optional company name []:

  • 验证CSR文件生成成功:

openssl req -in /etc/nginx/cert/web-server.csr -noout -text # 输出请求信息即正常

  • 将CSR文件传输到CA服务器(使用scp,需CA服务器root密码):

scp /etc/nginx/cert/web-server.csr root@192.168.0.10:/tmp/ # 传输到CA服务器的/tmp目录(临时存放)

2CA服务器签发web服务器证书

  • 操作在CA服务器(192.168.0.10)执行,基于接收的CSR文件,用CA根私钥签名生成有效证书。

openssl ca -in /tmp/web-server.csr -out /etc/pki/CA/certs/web-server.crt

  • 执行步骤:第一步 输入CA根私钥密码;第二步两次输入y确认签发(分别确认“签名证书”和“提交到数据库”)。

说明:签发后的证书存放在/etc/pki/CA/certs/web-server.crt,同时CA服务器的/etc/pki/CA/index.txt会自动记录该证书信息。

  • 验证签发的web证书有效性:

openssl verify -CAfile /etc/pki/CA/cacert.pem /etc/pki/CA/certs/web-server.crt

输出/etc/pki/CA/certs/web-server.crt: OK即说明证书有效。

  • 将签发好的web证书传输回web服务器:

scp /etc/pki/CA/certs/web-server.crt root@192.168.0.20:/etc/nginx/cert/ # 传输到web服务器的证书目录

3web服务器部署证书(nginx示例)

操作在web服务器(192.168.0.20)执行,配置web服务使用签发的证书,启用HTTPS,在此之前,需安装nginx的服务部署

  • 安装nginx服务:

dnf install nginx -y

# 验证安装是否成功(查看版本)

nginx -v # 正常输出示例:nginx version: nginx/1.20.1

# 设置开机自启

systemctl enable nginx

# 开放80(HTTP)和443(HTTPS)端口(永久生效)

firewall-cmd --permanent --add-port=80/tcp --add-port=443/tcp

# 重新加载防火墙规则

firewall-cmd --reload

# 验证端口是否放行成功 f

irewall-cmd --list-ports

# 输出应包含80/tcp、443/tcp

  • 编辑nginx配置文件(默认路径/etc/nginx/nginx.conf):

vim /etc/nginx/conf.d/default.conf

  • 添加HTTPS服务配置(监听443端口):

server {
listen 443 ssl;
server_name 192.168.0.20; # 与证书的Common Name一致

# 证书配置
ssl_certificate /etc/nginx/cert/web-server.crt; # 签发的web证书
ssl_certificate_key /etc/nginx/cert/web-server.key; # web服务器私钥
ssl_protocols TLSv1.2 TLSv1.3; # 启用安全的TLS协议
ssl_prefer_server_ciphers on; # 优先使用服务器端加密套件

# 网站根目录与默认页面(按需修改)
root /usr/share/nginx/html;
index index.html index.htm;

location / {
try_files $uri $uri/ /index.html;
}
}

  • 验证nginx配置语法正确:

Bash
nginx -t # 输出 "test is successful" 即正常

  • 重启nginx服务,使证书配置生效:

Bash
systemctl restart nginx
systemctl enable nginx # 设为开机自启(可选)

  • 验证HTTPS服务正常(本地测试或客户端访问):

# 本地测试(web服务器执行)
curl -v https://192.168.0.20 # 输出包含 "SSL connection using TLSv1.3" 且状态码200即正常
# 或在客户端浏览器访问 https://192.168.0.20,若未提示“不安全”即说明证书信任正常

拓扑中加入一台WINDOWS7

在证书管理里面可以看到证书的详细信息。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/4 0:18:13

案例研究:一次完整的信息收集流程复盘

第一部分:开篇明义 —— 定义、价值与目标 定位与价值 信息收集,作为渗透测试生命周期的第一步,其战略地位常被比作战争中的“侦察”或外科手术前的“全面体检”。它不是简单的工具堆砌,而是一个系统性、分析驱动的智力过程。其核…

作者头像 李华
网站建设 2026/5/10 18:02:34

通信工程毕业设计最新开题报告怎么选

【单片机毕业设计项目分享系列】 🔥 这里是DD学长,单片机毕业设计及享100例系列的第一篇,目的是分享高质量的毕设作品给大家。 🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的单片机项目缺少创新和亮点…

作者头像 李华
网站建设 2026/5/8 16:03:32

开发者入门必看:Z-Image-Turbo+CSDN镜像一键部署实战推荐

开发者入门必看:Z-Image-TurboCSDN镜像一键部署实战推荐 1. 背景与技术价值 随着AI生成内容(AIGC)的快速发展,文生图(Text-to-Image)模型已成为开发者和创作者关注的核心工具之一。在众多开源模型中&…

作者头像 李华
网站建设 2026/5/9 18:40:48

中文ITN文本标准化实践|基于FST ITN-ZH镜像快速实现

中文ITN文本标准化实践|基于FST ITN-ZH镜像快速实现 在语音识别(ASR)和自然语言处理(NLP)的实际应用中,一个常被忽视但至关重要的环节是逆文本标准化(Inverse Text Normalization, ITN&#xf…

作者头像 李华
网站建设 2026/5/9 15:32:11

Supertonic部署详解:4090D显卡的最佳配置方案

Supertonic部署详解:4090D显卡的最佳配置方案 1. 技术背景与选型动机 随着边缘计算和本地化AI应用的快速发展,设备端文本转语音(TTS)系统的需求日益增长。用户对低延迟、高隐私性、强可定制性的要求推动了轻量级、高性能TTS框架…

作者头像 李华
网站建设 2026/5/1 11:59:19

YOLOv11如何高效部署?Jupyter Notebook操作详解

YOLOv11如何高效部署?Jupyter Notebook操作详解 YOLOv11 是 Ultralytics 推出的最新目标检测算法,作为 YOLO 系列的迭代升级版本,在保持轻量化优势的同时进一步提升了检测精度与推理速度。该模型在 COCO 数据集上展现出卓越的性能&#xff0…

作者头像 李华