问题标签 [hsts]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
html - HTTP 严格传输安全和 HTML5 应用程序缓存
我们正在使用 HTML5 应用程序缓存功能:
当返回的用户导航到这个应用程序时,他们已经缓存了所有静态文件,因此在没有网络请求的情况下加载了应用程序。
一旦应用程序被加载,它将发出 AJAX 请求以加载动态内容,并且浏览器将检查应用程序缓存清单是否已过时,并可能在后台下载应用程序的新版本。
我们的许多用户正在通过不安全的连接(HTTP,而不是 HTTPS)访问此应用程序。
我们正在在托管应用程序的服务器上引入 HTTP 严格传输安全 (HSTS)。
实施 HSTS 意味着我们的服务器将处理如下请求:
如果请求不安全(仅限 HTTP),则服务器将以 HTTP 状态 301 和
Location
重定向到请求的 URI 但将方案更改为https
.否则; 如果请求是安全的(HTTPS),服务器将照常处理它,但用
Strict-Transport-Security
标头装饰响应。
因此,当新用户通过 HTTP 打开我们的应用程序时,他们将被重定向到 HTTPS,然后使用安全位置安装应用程序缓存清单。那很完美。
但是,返回的用户(通过 HTTP)将不会被重定向到安全位置(因为他们已经在不安全的位置有缓存版本)。应用程序缓存清单不会加载(因为它是重定向)。因此,返回的用户会被他们缓存的应用程序版本卡住,并且他们使用不再被允许的 HTTP 卡住了。这很糟糕。
我们需要想出一种方法来将返回的 HTTP 用户转换为 HTTPS 版本。怎么做最好?
我看到它的方式有两个问题:
浏览器无法获取应用程序清单(因为它是重定向)。因此无法将应用程序升级到新版本。
我们或许可以通过配置我们的服务器以允许
/.appcache
通过纯 HTTP 提供服务来克服这个问题。即使我们这样做,应用程序仍将在 HTTP 位置被访问(因为清单缓存的内容)
为了解决这个问题,我们可能必须实现某种将方案更改
document.location.href
为 HTTPS 的 javascript 逻辑。我不喜欢这种方法,但这是我们目前唯一的方法。
firefox - Firefox 不加载 Vimeo 播放器,因为它不安全
我的 Web 应用程序中嵌入了 Vimeo 播放器。
当我从生产环境打开应用程序时,视频不会加载。Firefox 声明 vimeo.com 不安全,并且我的网站需要 HTTP 严格传输安全 (HSTS)。
Vimeo 是否支持 HSTS 或者这是计划好的?到目前为止,我还没有找到任何东西。
.htaccess - 除了在 .htaccess 中强制使用 HTTPS 之外,我还需要启用 HSTS 吗?
我对这些东西一无所知,所以请 ELI5 在你的回复中。
按照我的提供商 Dreamhost 的说明,我安装了 SSL 证书,然后将这些行添加到我的 .htaccess 文件中,以强制将 HTTP 请求重写为 HTTPS 请求。
一切似乎都正常工作,即:每次我尝试使用 HTTP 访问该域下的页面时,它都会被重写为 HTTPS,并且地址栏中会显示“安全”图标。
我的问题是,我还需要启用 HSTS 吗?阅读它,它似乎与之前对 .htaccess 文件的更改完全相同。这是A2 Hosting (不是我的提供商)的摘录:
启用 HSTS
为站点启用 HSTS 后,Web 浏览器会自动将任何不安全请求 (http://) 更改为安全请求 (https://)。启用 HSTS 所需要做的就是在站点的 .htaccess 文件中添加一个标题。Web 浏览器识别此标头,然后处理其余部分,无需您进一步干预。
他们建议将其添加到 .htaccess 中:
另一个教程,这次特定于 Dreamhost,说要启用 HSTS 并在 .htaccess 文件中强制使用 HTTPS,但并没有真正说明原因。此页面提出了一些稍微不同的建议:
我需要“https 重写”代码片段和 HSTS 吗?还是只有“https 重写”代码片段就足够了?我是否需要 HSTS 代码,如果需要,我的帖子中的两行 HSTS 代码有什么区别?
nginx - 为什么浏览器会抱怨 HSTS 页面上的资源不安全
我刚刚目睹了一个(对我而言)我不太理解的奇怪浏览器行为。在我将 Nginx 配置为支持 HSTS 后,我使用以下 index.html 测试了一个虚拟主机:
HSTS 通过以下方式设置:
如果我正确理解 HSTS,浏览器会在开始加载资源之前执行类似 s/http://samedomain.com/https://samedomain.com/ 的操作。因为我只有 443 次收听并且所有资源都在加载,所以我认为我是对的。
由于一切正常,我不知道为什么每个浏览器(经过最新测试:Safari、Firefox、Chrome)都指出连接不安全。甚至检查员都说所有资源都通过安全连接加载。
PS:使用“add_header Content-Security-Policy upgrade-insecure-requests;” 设置没有浏览器抱怨。但我无法设置 UIR,因为有人可能必须加载不安全的内容。在这种情况下,它显然应该抱怨,但它仍然应该显示所有内容。
我希望有人能启发我:-)
google-chrome - Chrome 和 Safari 不支持 HPKP
我将 HPKP 标头添加到我的网站,但 Chrome 或 Safari 不支持它。我通过设置代理并转到chrome://net-internals/#hsts
并查找我的域来手动测试它 - 没有找到。HPKP 似乎是正确的,我还使用HPKP 工具集对其进行了测试,因此我知道它是有效的。
我在想我的流程可能会做一些奇怪的事情。我有一个网络应用程序,它通过myapp.example.com
. 登录时,应用程序将用户重定向authserver.example.com/begin
到启动 OpenID Connect 授权代码流。HPKP 标头仅从返回authserver.example.com/begin
,我认为这可能是问题所在。我include-subdomain
在 HPKP 标题中,所以我认为这不是问题。
这是 HPKP 标头(为便于阅读添加了换行符):
谢谢!
http - 为什么 SSL Labs 测试表明通过 HTTP 发送标头时启用 HSTS,但通过 HTTPS 发送时不启用?
我正在尝试在我的服务器上配置 HSTS。我注意到,如果我通过初始未加密的 HTTP 连接发送 HSTS 标头,SSLLabs.com 上的测试会告诉我 HSTS 已启用。但是,这违反了 RFC-6797 第 7.2 节中的 HSTS 规范,该规范明确指出您不应通过未加密的连接发送此标头。
另一方面,如果我的服务器仅在执行从 HTTP 到 HTTPS 的 302 重定向后才发送该 HSTS 标头,这正是官方 HSTS 规范所说的你应该做的,那么 SSL Labs 不会承认我启用了 HSTS。
那么我在这里错过了什么?执行此操作的实际正确方法是什么?
如果你想看看我在说什么,有问题的网站是 nightowlcircusarts.com
您可以通过以下 bash 命令使用 curl 查看未加密的标头:
或者将该 http 更改为 https 以查看加密的标头:
目前,我将其配置为仅通过 TLS 发送该标头,而不是没有它,正如 HSTS 规范所说的那样。但是您会看到 SSL 实验室测试仍然显示我没有启用 HSTS: https ://www.ssllabs.com/ssltest/analyze.html?d=nightowlcircusarts.com
asp.net - 由于 HSTS common_name_invalid 无法浏览 localhost
上周,我能够毫无问题地构建和运行一个本地托管的 .NET 网站。但是,在过去的几天里,我无法解决这个错误:
ERR_CERT_COMMON_NAME_INVALID
此错误消息同时出现在 Chrome 和 Firefox 中。Edge 和 IE 将加载页面但不解释地阻止所有 AJAX 请求。
该网站在 IIS 中配置为应用程序,并使用自签名证书(在 IIS 中创建)。
我在运行一个完全独立的 .NET 网站时遇到了同样的问题,所以我怀疑它与每个网站的单独配置有什么关系。
我的同事能够在与我安装的相同浏览器版本中使用自签名证书浏览同一网站的本地托管版本。
拜托,谁能告诉我我的设置可能发生了什么,为什么浏览器不再接受我的证书,以及如何回到正在运行的 localhost 网站?
ssl - 如何修复:其安全证书来自 [missing_subjectAltName]
今天我偶然发现了一个问题:
“此服务器无法证明它是”MY_SERVER_NAME“它的安全证书来自 [missing_subjectAltName]”
这可能最近也发生在你身上。基本上您的 SSL 证书没有正确设置,并且缺少其主题替代名称。
为什么最近会发生这种情况?因此:https ://textslashplain.com/2017/03/10/chrome-deprecates-subject-cn-matching/
怎么修?使用主题 alt 名称创建 SSL 证书: 如何使用 openssl 创建自签名证书?
http - 我想在不使用 https 的情况下访问我的自定义域
我想在不使用 https 的情况下访问自定义域。我想访问“ http://my_domain.com ”
删除 app.yaml 中的 'secure' 或将其更改为 'never' ,但会在未经许可的情况下重定向到 'https'。
asp.net - ASP.NET HTTPS 重定向和 HSTS 标头
我们在 Azure 中托管了一个 ASP.NET 站点。
之前我们实现了以下重写规则来强制 HTTPS:
我们现在通过以下规则(来自本指南)引入 HSTS:
我们是否需要两条规则,还是可以删除 HTTPS 规则而只使用 HSTS 规则?