我已将 Apache 设置为使用 HSTS,如下所示,仅用于测试和学习目的:
/etc/apache2/sites-enabled/000-default.conf
NameVirtualHost 192.168.3.55:80
NameVirtualHost 192.168.3.55:443
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
<VirtualHost www:80>
ServerName www
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
</VirtualHost>
<VirtualHost www:443>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ServerName www
SSLEngine on
SSLCertificateFile "/etc/apache2/ssl/mysitename.crt"
SSLCertificateKeyFile "/etc/apache2/ssl/mysitename.key"
Header always set Strict-Transport-Security "max-age=63072000;includeSubdomains;"
</VirtualHost>
我可以连接到端口 80 和端口 443 就好了。第一个站点没有加密,后者是。那里一切都好。
访问 HTTPS 站点后,我看到 hsts 标头很好:
Strict-Transport-Security:max-age=63072000; includeSubdomains;
当我然后输入http://www我确实看到:
Upgrade-Insecure-Requests: 1 in the header using developer tools
但是,浏览器连接到 HTTP 站点,我 tcpdump 请求并看到响应仍然清晰。
它不应该是安全连接还是我错过了什么?我以为浏览器从现在开始只会尝试访问受保护的站点)
这可能是您尝试混淆域名的结果,但 HSTS 需要 FQDN
www.example.com
,并且不适用于短主机名,例如www
.由于我正在测试我没有有效的证书,它是自签名的。哎呀。活到老,学到老。