docker - 使用 Docker 时如何在 Traefik 中使用 STS 标头
问题描述
这是我几天来一直在努力解决的问题,但我在 stackoverflow 上找不到任何帮助,甚至没有接近它。我希望将来能帮助有类似问题的人。非常欢迎对此问题/答案进行任何详细说明。
在Docker环境中使用Traefik作为代理时,我一直在尝试将STS-headers设置为 http-requests 。不知何故,无论我如何尝试设置标题,我的浏览器(谷歌浏览器)都会忽略它们。我究竟做错了什么?
解决方案
当我了解到一些关于 HSTS 的重要信息时,我已经在 Traefik 中与 HSTS 标头作斗争了好几天:
当您的浏览器认为您使用的证书不可信/不安全时,您的浏览器将忽略任何 STS 标头。您可以使用开发人员工具中的安全选项卡验证这一点(在 Chrome 中)。
为了使 HSTS(HTTP 严格传输安全)工作,我必须在我的特定场景中解决接下来的几件事:
我用于开发的证书是自签名的并安装到我的机器上。但是因为它是自签名的,所以没有放在“受信任的根证书颁发机构”目录中。我的浏览器抱怨它在那个目录中找不到我的证书,所以我不得不把它放在那里,否则浏览器仍然会认为证书不安全。请注意,这仅用于开发目的,官方证书正在开发中。
起初我创建了我的证书,将我的域放在CN(通用名称)部分。如今,浏览器有点忽略该部分并寻找SAN(主题备用名称)。我必须在该部分中使用我的域创建一个新证书。
这两件事是我错过的,在解决了这些之后,我的 STS 标头(用于 docker-compose 服务标签)正在工作。标签(Traefik v1.7)如下所示:
my_service:
deploy:
labels:
- "traefik.frontend.headers.STSPreload=true"
- "traefik.frontend.headers.STSSeconds=31536000"
希望它可以帮助任何人。
推荐阅读
- reactjs - 如何在本机反应中生成 SonarQube 报告?
- css - ng-select 下拉位置在可滚动的 div 中不正确
- swift - 为什么我不能在 Swift Jupyter Notebook 中导入 Glibc?
- reactjs - Babel throwing 当前未启用对实验性语法“jsx”的支持
- excel - excel使用vba在access中导入文本文件
- android - iOS CLLocationManager 未检测到从 Android 发送的 Android 信标库 iBeacon 信号
- python - 重新创建与输入相同的 xml 文件
- r - 用于功能“BoostFit”的包?
- javascript - 如何在 data-id 和输入类型上使用 querySelector
- javascript - 事件发生在时间间隔而不是点击