文档中心
Apache鏈嶅姟鍣ㄥ浣曡嚜宸辩鍙慡SL璇佷功锛熸墜鎶婃墜鏁欎綘鎼缓HTTPS鍔犲瘑閫氶亾
时间 : 2025-09-27 15:41:29浏览量 : 3

在当今互联网环境中,HTTPS早已成为网站安全的标配。对于使用Apache服务器的站长或运维人员来说,掌握自己签发SSL证书的技能不仅能节省成本,还能更灵活地管理测试环境。本文将用最通俗的语言,配合实际案例,带你一步步实现Apache自签名证书的配置。
一、为什么要自己签发SSL证书?
SSL证书的核心作用有两个:
1. 加密传输:防止数据在传输过程中被窃听(比如用户密码)
2. 身份验证:证明网站的真实性(防止钓鱼网站)
自签名证书虽然无法获得浏览器厂商的预置信任(会显示警告),但在以下场景非常实用:
- 内部系统:公司OA、测试环境等无需对外公开的服务
- 开发调试:程序员本地测试HTTPS功能
- 成本敏感项目:个人博客或非商业站点
> 真实案例:某电商公司在开发支付功能时,先用自签名证书在测试环境完成全流程验证,再申请商业证书上线生产环境。
二、自签名证书原理图解
```
[你的服务器] --生成--> [私钥.key] + [公钥.csr]
|
v
[用私钥签署.csr]
[最终证书.crt]
就像你自己写了一张身份证:
- `.key`是你的私人印章(绝对保密)
- `.crt`是制作好的身份证(可公开分发)
三、Apache配置七步实操
步骤1:生成私钥(RSA 2048位)
```bash
openssl genrsa -out myserver.key 2048
这相当于打造一把只有你能用的防盗门钥匙。
步骤2:创建证书签名请求(CSR)
openssl req -new -key myserver.key -out myserver.csr
需要填写的信息示例:
Country Name (2 letter code) []:CN
State or Province Name []:Shanghai
Locality Name []:Pudong
Organization Name []:MyTestCompany
Common Name (eg, server FQDN) []:test.example.com
特别注意:
- `Common Name`必须与你的域名完全一致
- 内部系统可以用IP如`192.168.1.100`
步骤3:自签署证书(有效期365天)
openssl x509 -req -days 365 -in myserver.csr -signkey myserver.key -out myserver.crt
步骤4:移动文件到安全目录
mkdir /etc/apache2/ssl/
mv myserver.* /etc/apache2/ssl/
chmod 600 /etc/apache2/ssl/myserver.key
关键!限制私钥权限
步骤5:修改Apache配置
```apacheconf
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/myserver.crt
SSLCertificateKeyFile /etc/apache2/ssl/myserver.key
强制HTTPS跳转(可选)
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
步骤6:检查配置语法
apachectl configtest
步骤7:重启服务生效
systemctl restart apache2
CentOS用httpd服务名
Windows Apache用户注意:
需要将.crt文件转换为.pem格式供Apache使用
四、浏览器告警处理方案
访问时会看到类似提示:
您的连接不是私密连接 | NET::ERR_CERT_AUTHORITY_INVALID"
解决方案(按风险从低到高):
1. 临时跳过:Chrome浏览器输入`thisisunsafe`(仅当前页面)
2. 导入信任(适合内网):
- Firefox:设置 > Privacy & Security > View Certificates > Authorities > Import...
3. 创建私有CA(企业推荐):
```bash
CA机构操作示例:
openssl genrsa -out myCA.key 2048
openssl req -x509 -new -key myCA.key -days 3650 -out myCA.crt
```
五、进阶安全加固建议
1. 密钥保护最佳实践
chattr +i /etc/apache2/ssl/myserver.key
Linux防删除保护
2. 禁用老旧协议
```apacheconf
SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
仅允许TLS1.2+
3. OCSP装订提升性能
SSLUseStapling On
SSLStaplingCache "shmcb:logs/stapling-cache(150000)"
> IT运维血泪史:某公司因未更新SSL配置导致使用TLS1.0协议,被黑客利用BEAST攻击截获管理员cookie。
FAQ高频问题解答
Q:自签名和Let's Encrypt免费证书有什么区别?
A:Let's Encrypt会被浏览器自动信任,但需要每90天续期;自签名永久有效但需手动信任。
Q:多域名怎么处理?
A:生成CSR时添加`SubjectAltName`扩展:
```ini
[ req_ext ]
subjectAltName = @alt_names
[ alt_names ]
DNS.1 = domain.com
DNS.2 = www.domain.com
IP.1 = 192.168.1.100
通过以上完整流程,你已经掌握了Apache自签名SSL证书的核心技能。对于生产环境,建议结合具体业务需求选择商业证书或Let's Encrypt方案。
TAG:apache自己签发ssl证书,apache配置ssl证书,apache2安装ssl证书,ssl证书自签源码