为Apache2配置SSL证书并使用重写模块强制https访问
配置SSL证书
证书签发机构会根据你所选的服务端类型响应对应的SSL证书文件, 对于Apache2, 证书文件如下
root_bundle.crt 证书文件 example.com.crt 证书文件 example.com.key 私钥文件 example.com.csr CSR文件
其中前三个是需要配置的文件, CSR文件无需关注.
将前三个文件放入/etc/apache2/ssl/
文件夹中, 若无此文件夹, 可自行创建.
配置Apache2
首先开启SSL功能
a2enmod ssl
随后修改配置文件/etc/apache2/sites-available/default-ssl.conf
为如下内容
<VirtualHost 0.0.0.0:443> DocumentRoot "/var/www/html" #填写证书名称 ServerName example.com #启用 SSL 功能 SSLEngine on #证书文件的路径 SSLCertificateFile /etc/apache2/ssl/example.com.crt #私钥文件的路径 SSLCertificateKeyFile /etc/apache2/ssl/example.com.key #证书链文件的路径 SSLCertificateChainFile /etc/apache2/ssl/root_bundle.crt </VirtualHost>
再为配置文件建立软链接使之生效
a2ensite default-ssl
随后在配置文件/etc/apache2/ports.conf
中添加以下字段
<IfModule ssl_module> Listen 443 </IfModule>
使之监听https的443端口.
在使配置文件生效前检测配置文件语法是否正确
apache2ctl configtest
若输出
Syntax OK
则执行
systemctl reload apache2
重载配置文件.
此时可以访问https://example.com, 会发现链接安全, https已启用, 但此时若直接访问域名, 仍然走的是http协议, 接下来解决这个问题.
使用Apache2的重写模块强制https访问
在配置文件/etc/apache2/sites-available/000-default.conf
中的<VirtualHost *:80>
域内添加如下字段
RewriteEngine On RewriteCond %{HTTPS} off RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
然后开启重写模块
a2enmod rewrite
然后验证一下配置文件有无语法错误, 若验证通过重载配置文件
systemctl reload apache2
至此配置完成, 在浏览器直接输入域名则自动重定向至https协议.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现