ssl新闻资讯

文档中心

Apache鏈嶅姟鍣ㄥ垱寤篐TTPS璇佷功鍏ㄦ敾鐣ユ墜鎶婃墜鏁欎綘瀹炵幇缃戠珯鍔犲瘑

时间 : 2025-09-27 15:41:27浏览量 : 2

为什么你的网站需要HTTPS?

2Apache鏈嶅姟鍣ㄥ垱寤篐TTPS璇佷功鍏ㄦ敾鐣ユ墜鎶婃墜鏁欎綘瀹炵幇缃戠珯鍔犲瘑

想象一下,你在咖啡馆用公共WiFi登录银行账户,如果没有HTTPS保护,你的账号密码就像写在明信片上邮寄一样危险。HTTPS通过SSL/TLS证书为数据传输加密,就像给你的网站装上了防窃听的保险箱。

Google从2025年起就将HTTPS作为搜索排名因素,Chrome浏览器还会给非HTTPS网站打上"不安全"的红色警告。根据统计,超过90%的网页加载已使用HTTPS——如果你的网站还在用HTTP,简直就是在互联网上"裸奔"!

准备工作:搭建环境

在开始前,你需要:

1. 一台运行Apache的服务器(Ubuntu/CentOS都适用)

2. root或sudo权限

3. 域名已经解析到服务器IP

以Ubuntu为例,先确保Apache已安装:

```bash

sudo apt update

sudo apt install apache2

```

检查Apache是否运行:

systemctl status apache2

看到绿色的"active (running)"就说明准备就绪了。

三种主流证书获取方式详解

方法一:OpenSSL自签名证书(适合测试环境)

自签名证书就像自己手写的身份证,虽然浏览器会提示不安全警告(就像保安怀疑你伪造证件),但内部测试完全够用。

生成私钥和证书:

sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \

-keyout /etc/ssl/private/apache-selfsigned.key \

-out /etc/ssl/certs/apache-selfsigned.crt

系统会交互式询问信息:

- Country Name (2 letter code): CN

- State or Province Name: Beijing

- Locality Name: Beijing

- Organization Name: Your Company

- Common Name: 输入你的域名(如test.com)

方法二:Let's Encrypt免费证书(生产环境首选)

Let's Encrypt是公益组织提供的免费证书,相当于互联网的"公共身份证颁发机构"。通过Certbot工具可以自动续期:

安装Certbot:

sudo apt install certbot python3-certbot-apache

获取证书(替换yourdomain.com):

sudo certbot --apache -d yourdomain.com -d www.yourdomain.com

Certbot会自动完成验证(验证你确实控制该域名)、生成证书并配置Apache。整个过程不到1分钟!

方法三:商业CA付费证书(企业级需求)

像DigiCert、GeoTrust这些商业CA颁发的证书,就像是公安局签发的正式身份证。购买后通常会收到.zip文件包含:

- domain.crt (证书文件)

- ca-bundle.crt (中间证书)

- private.key (私钥)

上传到服务器指定位置即可。

Apache配置实战演示

无论哪种方式获得的证书,最终都需要在Apache中配置。打开SSL配置文件:

sudo nano /etc/apache2/sites-available/default-ssl.conf

关键配置项示例:

```apacheconf

ServerName yourdomain.com

SSLEngine on

自签名证书路径示例

SSLCertificateFile /etc/ssl/certs/apache-selfsigned.crt

SSLCertificateKeyFile /etc/ssl/private/apache-selfsigned.key

Let's Encrypt路径示例

SSLCertificateFile /etc/letsencrypt/live/yourdomain.com/fullchain.pem

SSLCertificateKeyFile /etc/letsencrypt/live/yourdomain.com/privkey.pem

DocumentRoot /var/www/html

Options Indexes FollowSymLinks MultiViews

AllowOverride All

Require all granted

启用SSL模块和站点配置:

sudo a2enmod ssl

sudo a2ensite default-ssl.conf

systemctl restart apache2

HTTPS安全加固技巧

1. 强制跳转HTTPS

在80端口的VirtualHost中添加:

RewriteEngine On

RewriteCond %{HTTPS} off

RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

2. 启用HSTS

在SSL配置中添加:

Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"

这告诉浏览器:"以后只许用HTTPS访问我!"

3. 选择更安全的加密套件

修改/etc/apache2/mods-available/ssl.conf:

SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH

SSLProtocol All -SSLv2 -SSLv3 -TLSv1 -TLSv1.1

常见问题排错指南

问题1:浏览器提示"不安全连接"

? 检查原因:自签名证书需要手动信任;Let's Encrypt可能域名验证失败

? 解决方案:`sudo certbot certificates`查看状态;`journalctl -xe`查日志

问题2:ERR_SSL_VERSION_OR_CIPHER_MISMATCH

? 通常是加密套件不兼容

? 解决方案:更新上述SSLCipherSuite配置后重启Apache

问题3:混合内容警告

? HTTPS页面加载了HTTP资源(如图片、JS)

? 解决方案:将资源链接改为//开头或https://绝对路径

HTTPS性能优化建议

1. 开启OCSP Stapling

减少浏览器验证证书时的延迟:

```apacheconf

SSLUseStapling on

SSLStaplingCache "shmcb:logs/stapling-cache(150000)"

2. 会话恢复优化

减少TLS握手开销:

SSLSessionCache shmcb:/tmp/ssl_scache(512000)

SSLSessionCacheTimeout 300

3. HTTP/2加持

大幅提升多资源加载速度:

```bash

sudo a2enmod http2

然后在SSL VirtualHost添加`Protocols h2 http/1.1`

自动化维护方案

对于Let's Encrypt的90天有效期,设置自动续期:

1. 测试续期命令是否正常工作:

sudo certbot renew --dry-run

2. 添加cron任务每月自动续期:

echo "0 */12 * * * root test -x /usr/bin/certbot && perl -e 'sleep int(rand(3600))' && certbot renew -q" | sudo tee -a /etc/crontab > /dev/null

对于商业证书到期提醒:

echo | openssl s_client -connect yourdomain.com:443 | openssl x509 -noout –dates

可将此命令加入监控系统。

HTTPS的未来趋势

随着TLS 1.3成为新标准(相比1.2提速明显),以及像HPKP被淘汰、CAA记录普及等变化。建议关注:

? QUIC协议带来的HTTP/3革命性变化

? ECC椭圆曲线算法逐步替代RSA密钥

? ACME v2协议支持通配符证书

记住一句安全格言:"不是所有HTTPS都一样安全",正确的配置比单纯启用更重要。现在就去检查你的Apache SSL配置吧!

TAG:apache创建https证书,apache 证书,apache2安装ssl证书,apache搭建http服务器,搭建apache,apache搭建https