在 CentOS 系统上使用 OpenSSL 自建 SSL 证书,并且要求证书支持多个内网 IP 地址,可以通过以下步骤来完成:
1. 安装 OpenSSL
首先确保您的 CentOS 系统已经安装了 OpenSSL。可以通过运行以下命令来安装或检查 OpenSSL:
yum install openssl
2. 创建自己的根证书颁发机构 (CA)
a. 生成根密钥
cd /etc/pki/CA
openssl genrsa -out rootCA.key 4096
b. 创建并自签名根证书
openssl req -x509 -new -nodes -key rootCA.key -sha256 -days 1024 -out rootCA.pem
Country Name (2 letter code) [XX]:com或者cn或者gov等
State or Province Name (full name) []:省份
Locality Name (eg, city) [Default City]:市
Organization Name (eg, company) [Default Company Ltd]:公司名称
Organizational Unit Name (eg, section) []:机构类型
Common Name (eg, your name or your server's hostname) []:域名或者ip
Email Address []:邮箱
3. 创建服务器证书
a. 生成服务器密钥
openssl genrsa -out server.key 2048
b. 创建证书签名请求 (CSR)
在这一步,您需要创建一个配置文件来指定多个 IP 地址。
创建一个文件,比如叫 csr.conf,内容如下:
[ req ]
default_bits = 2048
prompt = no
default_md = sha256
req_extensions = req_ext
distinguished_name = dn
[ dn ]
C = #cn\com\gov等
ST = #省份
L = #城市
O = #单位名称
OU = #地址
CN = #邮箱
[ req_ext ]
subjectAltName = @alt_names
[ alt_names ]
IP.1 = #ip或者域名
IP.2 = .......
# 更多的 IP 地址可以按照这个格式添加
在 [ alt_names ] 部分,添加您想要证书支持的所有内网 IP 地址。
使用这个配置文件生成 CSR
openssl req -new -key server.key -out server.csr -config csr.conf
c. 使用您的 CA 签署服务器证书
openssl x509 -req -in server.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out server.crt -days 500 -sha256 -extfile csr.conf -extensions req_ext
4. 安装证书
将生成的 server.crt 和 server.key 文件安装到您的服务器上,并配置您的服务器软件(如 Apache、Nginx 等)使用这些证书。
server{
listen 443 ssl;
server_name ip地址;
ssl_certificate /etc/pki/CA/server.crt; # 证书文件
ssl_certificate_key /etc/pki/CA/server.key; # 密钥文件
ssl_protocols TLSv1.2 TLSv1.3; # 启用的协议
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
}
5. 信任根证书
在您的客户端机器上,您可能需要将 rootCA.pem 添加到受信任的根证书列表中,以避免浏览器或客户端软件报告 SSL 错误。
这个步骤在每个操作系统和浏览器中都有所不同。
请注意,这些步骤生成的是自签名证书,通常只适用于内部网络或测试环境。对于公共面向的服务,建议使用由受信任的证书颁发机构签发的 SSL 证书。