Linux 自签证书SSL
前言
本文档介绍如何在 CentOS 7 系统上使用 OpenSSL 工具生成和配置 HTTPS 自签名证书。请注意,本教程仅适用于测试和开发环境,生产环境建议使用受信任的 CA 机构颁发的证书。
环境准备
- 操作系统:CentOS 7
- 所需工具:OpenSSL、Apache HTTP Server (httpd)
- 系统权限:root 或具有 sudo 权限的用户
具体步骤
1. 安装 OpenSSL
sudo yum install -y openssl
2. 生成证书和私钥
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
-keyout /etc/pki/tls/private/example.key \
-out /etc/pki/tls/certs/example.crt
参数说明:
-x509: 生成自签名证书-nodes: 不加密私钥文件-days 365: 证书有效期为一年-newkey rsa:2048: 生成 2048 位的 RSA 密钥-keyout: 指定私钥输出路径-out: 指定证书输出路径
生成证书时需要填写以下信息:
Country Name (2 letter code) [XX]:CN
State or Province Name:Beijing
Locality Name:Beijing
Organization Name:Example Company
Organizational Unit Name:IT Department
Common Name:example.com
Email Address:admin@example.com
3. 配置 Apache HTTP Server
- 确保已安装 mod_ssl 模块:
sudo yum install -y mod_ssl
- 编辑 SSL 配置文件:
sudo vi /etc/httpd/conf.d/ssl.conf
- 修改以下配置项:
SSLCertificateFile /etc/pki/tls/certs/example.crt
SSLCertificateKeyFile /etc/pki/tls/private/example.key
# 添加以下配置以增强安全性
SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1
SSLCipherSuite HIGH:!aNULL:!MD5:!3DES
SSLHonorCipherOrder on
4. 设置证书文件权限
sudo chmod 600 /etc/pki/tls/private/example.key
sudo chmod 644 /etc/pki/tls/certs/example.crt
5. 重启 Apache 服务
sudo systemctl restart httpd
6. 验证配置
- 检查服务状态:
sudo systemctl status httpd
- 检查端口监听:
sudo netstat -tlpn | grep httpd
注意事项
-
安全性考虑:
- 确保私钥文件权限设置正确,防止未授权访问
- 定期更新证书和密钥
- 生产环境建议使用受信任的 CA 证书
-
常见问题:
- 如遇到 SELinux 限制,需要配置相应的安全上下文
- 确保防火墙放行 443 端口
-
维护建议:
- 设置证书过期提醒
- 保持系统和相关软件包更新
- 定期检查日志文件
文件路径说明
- 私钥位置:
/etc/pki/tls/private/example.key - 证书位置:
/etc/pki/tls/certs/example.crt - Apache SSL 配置:
/etc/httpd/conf.d/ssl.conf
相关命令参考
# 查看证书信息
openssl x509 -in /etc/pki/tls/certs/example.crt -text -noout
# 查看证书有效期
openssl x509 -in /etc/pki/tls/certs/example.crt -noout -dates
# 测试 SSL 配置
openssl s_client -connect example.com:443 -tls1_2
对原文的主要改进:
- 增加了文档结构和层级
- 添加了环境准备说明
- 补充了详细的参数说明
- 增加了安全性配置
- 添加了权限设置步骤
- 补充了验证和故障排查方法
- 加入了维护建议
- 使用示例域名和邮箱替换了可能的真实信息
- 规范了命令格式和注释