如何在 Apache 中启用 HSTS 以增强网络安全性 ?

HTTP Strict Transport Security (HSTS)严格传输安全是一种安全特性,帮助保护网站免受某些攻击。它确保了网络浏览器总是使用安全的 HTTPS 连接到您的网站,而不是不安全的 HTTP 协议。本指南将向您展示如何设置和改进 Apache 中的 HSTS 以获得更好的安全性。

为什么使用 HSTS?

在我们讨论如何设置 HSTS 之前,让我们先谈谈为什么 HSTS 很重要。

Stop man-in-the-middle attacks

HSTS 确保连接到您的网站始终是安全的,防止攻击者 从 HTTPS 降级到 HTTP 连接并且监视你的用户。

Stop cookie hijacking

通过强制使用 HTTPS, HSTS 可以保护用户的 cookie 免受攻击者的窃取攻击。

Meet browser requirements

一些现代浏览器要求网站使用 HTTPS,并可能显示安全警告。HSTS 可以帮助满足这些要求,并为用户提供更好的浏览体验。

在 Apache 中配置 HSTS

Access your Apache configuration file

根据您的系统,该文件可以命名为 httpd.confapache2.confssl.conf 。通常,您可以在 /etc/apache2/etc/httpd 目录中找到它。

Enable the headers module

HSTS 是作为 HTTP 报头发送的,所以您需要确保 headers 模块是启用的。在基于 debian 的系统,你可以通以下命令来启用它:

复制代码
sudo a2enmod headers 
service apache2 restart

Add the HSTS header

打开配置文件,找到站点部分,并在 "<VirtualHost *:443>"块中添加这一行:

apacheconf 复制代码
<VirtualHost *:443>
    # ...
    # ....
    Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
    # ....
</VirtualHost>

这一行告诉浏览器在下一年(31536000 秒 = 1 年)为您的站点使用 HTTPS,包括所有子域。

Restart Apache

保存更改,然后重新启动 Apache 以应用更改。

复制代码
service apache2 restart

在 Apache 中优化 HSTS

虽然在您的服务器上启用了 HSTS,但您可以采取其他步骤使其更好。

Use a long max-age

此参数告诉浏览器要记住使用 HTTPS 的时间。更长的最长使用时间(例如,1 年)提供了更好的安全性,但如果您停止使用 HTTPS,浏览器仍然会尝试通过 HTTPS 访问您的站点,直到 max-age 过期。

Include subdomains

该参数告诉浏览器对站点的所有子域使用 HTTPS。在启用此选项之前,请确保所有子域都支持 HTTPS

避免连接问题。

Preload HSTS

即使在第一次访问您的站点时,也强制执行 HSTS。要预加载 HSTS,请在 HSTS 配置中添加 preload 指令。

apacheconf 复制代码
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"

设置完成后,您可以将您的站点提交到 HSTS 预加载列表 https://hstspreload.org/ ,从预加载列表中删除可能需要几个月的时间,所以要确保这一步。

Renew your SSL certificate promptly

HSTS 需要有效的 SSL 证书。如果您的证书过期且未更新,浏览器可能会显示安全警告或阻止用户访问访问您的网站。

Test your implementation

设置 HSTS 之后,使用 Qualys SSL 服务器测试之类的工具来检查它是否正常工作。此工具提供对服务器 SSL 设置的详细分析,可以发现潜在的问题。

我的开源项目

相关推荐
looking_for__1 天前
【Linux】应用层协议
linux·服务器·网络
以太浮标1 天前
华为eNSP模拟器综合实验之- VLAN终结实践案例分析
网络·计算机网络·华为·智能路由器
Trouvaille ~1 天前
【Linux】网络编程基础(二):数据封装与网络传输流程
linux·运维·服务器·网络·c++·tcp/ip·通信
柱子jason1 天前
使用IOT-Tree Server模拟Modbus设备对接西门子PLC S7-200
网络·物联网·自动化·modbus·西门子plc·iot-tree·协议转换
Arvin6271 天前
研发环境:SSL证书快速部署
网络·网络协议·ssl
Trouvaille ~1 天前
【Linux】网络编程基础(三):Socket编程预备知识
linux·运维·服务器·网络·c++·socket·网络字节序
酣大智1 天前
DHCP中继配置实验
运维·网络·网络协议·tcp/ip·华为
小义_1 天前
【RH134知识点问答题】第6章 管理 SELinux 安全性
linux·网络·云原生·rhel
REDcker1 天前
RTSP 直播技术详解
linux·服务器·网络·音视频·实时音视频·直播·rtsp
阿猿收手吧!1 天前
【C++】异常处理:catch块执行后程序如何继续
服务器·网络·c++