CentOS 7生成SSL证书的完整指南
海外云服务器 40个地区可选 亚太云服务器 香港 日本 韩国
云虚拟主机 个人和企业网站的理想选择 俄罗斯电商外贸虚拟主机 赠送SSL证书
美国云虚拟主机 助力出海企业低成本上云 WAF网站防火墙 为您的业务网站保驾护航
在当今的网络通信环境中,数据安全已成为保障用户隐私和系统稳定的核心要素,为防止敏感信息在传输过程中被窃听或篡改,采用加密协议保护 Web 通信已成为行业标准,SSL(Secure Sockets Layer)及其继任者 TLS(Transport Layer Security)正是实现这一目标的关键技术,而 SSL 证书则是建立加密连接的基础组件。
本文将详细介绍如何在 CentOS 7 操作系统上使用 OpenSSL 工具生成自签名 SSL 证书,并分别配置 Nginx 和 Apache 服务器以启用 HTTPS 加密服务,通过本指南,开发者与系统管理员可以快速搭建一个具备基本安全防护能力的测试环境,为后续正式部署打下坚实基础。
SSL 证书的基本概念
SSL 证书是一种基于公钥基础设施(PKI)的数字凭证,主要用于验证服务器身份,并在客户端与服务器之间建立加密通道,它通常包含以下关键信息:
- 公钥(Public Key)
- 证书持有者信息(如域名、组织名称等)
- 颁发机构(CA)签名
- 有效期(起止时间)
当浏览器访问一个启用了 HTTPS 的网站时,会自动验证服务器提供的 SSL 证书是否由受信任的证书颁发机构(CA)签发,并检查其有效性,若验证失败,浏览器将发出安全警告。
⚠️ 注意:对于面向公众的生产型网站,强烈建议从权威 CA(如 Let’s Encrypt、DigiCert、Sectigo 等)申请可信证书。
而在开发、测试或内网环境中,使用自签名证书是一种经济高效的选择,尽管它不会被主流浏览器默认信任。
准备工作:安装必要工具
在开始之前,请确保你的 CentOS 7 系统已正确安装以下核心组件:
组件 | 用途 |
---|---|
OpenSSL |
用于生成私钥、CSR 及自签名证书 |
Nginx 或 Apache |
提供 Web 服务并支持 HTTPS 协议 |
大多数 CentOS 7 默认已预装 OpenSSL,可通过以下命令确认版本:
openssl version
如果尚未安装,可使用 YUM 包管理器进行补全:
sudo yum install -y openssl
接下来根据你选择的 Web 服务器安装对应软件包:
安装 Nginx
sudo yum install -y nginx
安装 Apache(含 mod_SSL 模块)
sudo yum install -y httpd mod_ssl
💡
mod_ssl
是 Apache 的 SSL/TLS 支持模块,必须安装才能启用 HTTPS 功能。
安装完成后,建议先启动服务并设置开机自启:
# 对于 Nginx sudo systemctl start nginx sudo systemctl enable nginx # 对于 Apache sudo systemctl start httpd sudo systemctl enable httpd
生成私钥与证书签名请求(CSR)
SSL 证书的安全性依赖于一对非对称密钥:私钥(Private Key) 和 公钥(Public Key),我们首先需要生成一个高强度的私钥文件。
生成 2048 位 RSA 私钥
执行以下命令创建名为 server.key
的私钥文件:
sudo openssl genrsa -out server.key 2048
该命令使用 RSA 算法生成长度为 2048 位的私钥,符合当前安全推荐标准(低于 2048 位已不推荐使用)。
创建证书签名请求(CSR)
基于私钥生成 CSR 文件,其中包含服务器的身份信息,供 CA 核实或自签名使用:
sudo openssl req -new -key server.key -out server.csr
运行后系统将提示输入以下字段:
字段 | 示例值 | 说明 |
---|---|---|
Country Name (2 letter code) | CN | 国家代码(中国为 CN) |
State or Province Name | Guangdong | 所在省份 |
Locality Name | Shenzhen | 城市名 |
Organization Name | MyCompany Inc. | 公司或组织名称 |
Organizational Unit Name | IT Department | 部门名称(可选) |
Common Name (CN) | example.com 或 localhost | 必须匹配访问域名 |
Email Address | admin@example.com | 管理员邮箱 |
✅ 特别提醒:Common Name 必须与实际访问的域名完全一致,否则浏览器会触发“证书域名不匹配”错误。
若仅为本地测试,可填写localhost
;若用于局域网服务器,建议填写内网 IP 或主机名(部分浏览器仍可能报错)。
生成自签名 SSL 证书
有了私钥和 CSR 后,我们可以使用 OpenSSL 自行为证书签名,生成 .crt
文件。
执行以下命令创建一张有效期为 365 天的自签名证书:
sudo openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
参数解析:
参数 | 作用 |
---|---|
-req |
表示输入的是 CSR 请求文件 |
-days 365 |
设置证书有效期限(单位:天) |
-in server.csr |
指定 CSR 输入文件 |
-signkey server.key |
使用私钥进行自签名(表示自己充当 CA) |
-out server.crt |
输出最终的证书文件 |
成功执行后,当前目录将生成三个重要文件:
server.key
—— 私钥文件(务必妥善保管)server.csr
—— 证书请求文件(已完成使命,可删除)server.crt
—— 自签名 SSL 证书(用于服务器配置)
配置 Web 服务器启用 HTTPS
Nginx 配置 HTTPS
将证书复制到标准路径
sudo cp server.crt /etc/pki/tls/certs/ sudo cp server.key /etc/pki/tls/private/
推荐存放位置:
- 证书文件:
/etc/pki/tls/certs/
- 私钥文件:
/etc/pki/tls/private/
编辑 Nginx 配置文件
打开站点配置文件(/etc/nginx/conf.d/default.conf
或主配置中的 server
块),添加如下 HTTPS 服务配置:
server { listen 443 ssl; server_name example.com; ssl_certificate /etc/pki/tls/certs/server.crt; ssl_certificate_key /etc/pki/tls/private/server.key; # 推荐启用现代 TLS 协议 ssl_protocols TLSv1.2 TLSv1.3; # 安全加密套件(禁用弱算法) ssl_ciphers ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256; ssl_prefer_server_ciphers on; location / { root /usr/share/nginx/html; index index.html index.htm; } }
🔐 建议关闭 SSLv3 及更低版本,避免 POODLE 等已知漏洞影响。
重启 Nginx 生效配置
sudo yum install -y openssl0
Apache 配置 HTTPS
复制证书至 Apache 目录
sudo cp server.crt /etc/pki/tls/certs/ sudo cp server.key /etc/pki/tls/private/
修改 SSL 配置文件
编辑 Apache 的 SSL 配置文件:
sudo yum install -y openssl2
找到以下两行并修改路径:
sudo yum install -y openssl3
同时建议检查并更新以下选项以提升安全性:
sudo yum install -y openssl4
重启 Apache 服务
sudo yum install -y openssl5