和田地区网站建设_网站建设公司_CSS_seo优化
2026/1/15 0:54:24 网站建设 项目流程

本文提供基于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

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

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询