当我进入http://sub.example.com
浏览器时,我收到“连接被拒绝” 消息或“证书无效”错误,但我什至不想通过 https 连接。
我所知道的:
- Web 服务器配置正确
sub.example.com
- TCP 端口 80 在防火墙/安全组中打开
- URL 中使用纯 HTTP 而不是 HTTPS
sub.example.com
指向 Web 服务器正确 IP 地址的DNS 记录- 使用新配置重新启动 Web 服务器
- 日志不显示启动或任何其他错误
我该如何调试,那里有什么问题?
当我进入http://sub.example.com
浏览器时,我收到“连接被拒绝” 消息或“证书无效”错误,但我什至不想通过 https 连接。
我所知道的:
sub.example.com
sub.example.com
指向 Web 服务器正确 IP 地址的DNS 记录我该如何调试,那里有什么问题?
我正在尝试在我的 Wordpress 网站上实施 HSTS(HTTP 严格传输安全),但没有取得任何成功。首先,我设法将我的网站从非 www 重定向到 www ,包括 https:// ,但我在https://hstspreload.org/上收到消息,它应该首先重定向到 www。
我试图使用 VirtualHosts 配置文件,没有运气。所以我做了一些谷歌搜索,发现这个链接看起来像是 htaccess 的解决方案,但我仍然遇到问题。如果有人知道如何通过 VirtualHost / Apache 配置文件来实现这一点,那就太好了。
错误:HTTP 首先重定向到 www
http://inter.net
(HTTP) 应在添加 www 子域之前立即重定向到https://inter.net
(HTTPS)。现在,第一个重定向是 tohttps://www.inter.net/
。需要额外的重定向以确保任何支持 HSTS 的浏览器都会记录顶级域的 HSTS 条目,而不仅仅是子域。
我的 htaccess 如下:
# BEGIN WordPress
# The directives (lines) between "BEGIN WordPress" and "END WordPress" are
# dynamically generated, and should only be modified via WordPress filters.
# Any changes to the directives between these markers will be overwritten.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
#### This is what I added : From https://www.danielmorell.com/guides/htaccess-seo/redirects/https-www-and-trailing-slash
#### Force HTTPS://WWW and remove trailing / from files ####
## Turn on rewrite engine
RewriteEngine on
# Remove trailing slash from non-filepath urls
RewriteCond %{REQUEST_URI} /(.+)/$
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ https://www.inter.net/%1 [R=301,L]
# Include trailing slash on directory
RewriteCond %{REQUEST_URI} !(.+)/$
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(.+)$ https://www.inter.net/$1/ [R=301,L]
# Force HTTPS and WWW
RewriteCond %{HTTP_HOST} !^www\.(.*)$ [OR,NC]
RewriteCond %{https} off
RewriteRule ^(.*)$ https://www.inter.net/$1 [R=301,L]
# Yoast SEO - XML Sitemap Rewrite Fix
RewriteEngine On
RewriteBase /
RewriteRule ^sitemap_index.xml$ /index.php?sitemap=1 [L]
RewriteRule ^locations.kml$ /index.php?sitemap=wpseo_local_kml [L]
RewriteRule ^geo_sitemap.xml$ /index.php?sitemap=geo [L]
RewriteRule ^([^/]+?)-sitemap([0-9]+)?.xml$ /index.php?sitemap=$1&sitemap_n=$2 [L]
RewriteRule ^([a-z]+)?-?sitemap.xsl$ /index.php?yoast-sitemap-xsl=$1 [L]
# END Yoast SEO - XML Sitemap Rewrite Fix
ps - inter.net 网址仅作为示例。
编辑 - 我已经编辑了我的 example.com.conf 文件,以在下面的答案中添加我的 MrWhite 的额外规则 - 这看起来很准确。运行命令 apachectl configtest
Syntaw 后正常。运行service apache2 reload
更改以使更改生效,并让所有浏览器都说页面未正确重定向:(**ERR_TOO_MANY_REDIRECTS**
每次为每个不同的浏览器清除缓存)。
我只将 htaccess 恢复为原始的 Wordpress 和 Yoast SEO 规则。
我当前在 apache 上为此 VirtualHost 的配置文件可能有问题,但 apachectl configtest 没有语法错误:https ://paste.ofcode.org/vr25hFkPEt2vYjpM5sAUxK
我尝试使用 Firefox Developer 模块(F12)来查看是否可以理解任何其他信息,问题似乎是 301 重定向循环https://www.example.com
编辑2:感谢@MrWhite,我明白ServerAlias
细节是不必要的,是循环的原因。问题解决了,从中吸取了教训。
我正在寻找在 Apache 中添加 HSTS 标头...
# HSTS / Header Strict Transport Security
Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"
...但我有一长串不同但相关的站点/子站点的虚拟主机列表。我宁愿不必在我的每个虚拟主机定义中都定义它,但我不知道有一种方法可以在主要https.conf
中包含一个仅适用于443 / https
这些虚拟主机版本的设置,因为它会在验证器中引发警告你将 HSTS 应用于标准80 / http
站点。
我尝试将其包装在<IfModule mod_ssl.c>...</IfModule>
标签中,但如果我没记错的话,这实际上只是在询问SSL 模块是否已加载? 我尝试了很多不同的方法,但是当您不知道要查找的术语时,很难对所有静态进行分类。有什么建议么?谢谢!
我对 HSTS 不是很熟悉,但我尝试在我的共享虚拟主机服务器上实现它。
似乎我已经让它在带有 www 的主机上工作。但不在顶点主机上。
强化安全审计将其标记为问题,审计报告:https ://www.hardenize.com/report/perroon.eu/1590566369#www_hsts
我无权访问 apache 配置,只有 .htaccess。
这是我的.htaccess:
# Force from HTTP to HTTPS
RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://$1 [R,L]
# Secure this /secured section
<If "%{HTTPS} == 'on'">
AuthUserFile "/home/xtreamro/.htpasswds/perroon.eu/passwd"
AuthName "Restricted Access"
AuthType Basic
require valid-user
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
Header always set X-Frame-Options "deny"
Header always set X-XSS-Protection "1; mode=block"
Header always set X-Content-Type-Options "nosniff"
Header always set Content-Security-Policy "default-src 'self' 'unsafe-inline'"
Header always set Content-Security-Policy "img-src *"
Header always set Referrer-Policy "strict-origin-when-cross-origin"
Header always set Cache-Control "public"
</If>
额外说明:
有人可以分享一下我应该如何在没有安全审计提及的情况下做到这一点?
所以我一直在尝试使用 Nginx 1.14.0 (Ubuntu) 通过 HTTP 提供一个简单的静态网页。我能够:curl
同时使用域名和 IP 地址的网页,并使用 IP 地址在浏览器中找到网页。
但我无法通过域名(超时)在浏览器中加载网页。我曾在不同的设备/网络上尝试过 Chrome 和 Firefox,并且反复清空 Web 和 DNS 缓存。我的域的 DNS 已通过我的注册商正确配置。
我最终设置了 HTTPS,它现在可以工作了,但我完全不知道为什么该站点在 HTTP 上超时。如果 Firefox 和 Chrome 开始强制一切都使用 HTTPS,那似乎很激烈。在我的在线搜索中,我没有听说过或无法找到任何关于此的信息。如果其他人对此有任何见解,那就太好了。
我在网站http://server.mydom.tld:80上为我的域设置了 hsts,因此浏览器转到端口 443 上的端口https://server.mydom.tld
但是,我还有其他网络服务器,在其他端口上运行。因此,当我转到http://server.mydom.tld:8888时,它会被转发到https://server.mydom.tld:8888,但该服务器未运行 https,因此请求失败。
是按照规范吗?
我注意到我没有在http://mydom.tld或http://www.mydom.tld上运行 hsts ,这可能是一个错误。
该怎么办?
是否可以从 S3 源在 Amazon CloudFront 分配上设置 HSTS 标头?