扫描网站以获取https部署最佳实践
pshtt的Python项目详细描述
按下https:lock:
pshtt
("pushed")是一个扫描域中https的最佳工具
实践。它将结果保存到csv(或json)文件中。
pshtt被开发成推动组织,特别是大型组织 就像美国联邦政府:美国:在 企业。联邦机构必须遵守 M-15-13,一份2015年的白纸黑字备忘录 众议院管理和预算办公室,以及董事会 18-01,来自 国土安全部,要求联邦机构 在其公共web服务上强制使用https。已经做了很多,但是 现在还有更多的消息要告诉我们 做 ./p>
pshtt
是网络和基础设施之间的协作
安全局的国家网络安全评估和技术
服务(NCATS)团队和概述
服务管理部门的18F团队
美国国家航空航天局、劳伦斯·利弗莫尔国家实验室和
各种非政府组织
组织
开始
pshtt
需要python 3.6或3.7+。不支持Python 2。
pshtt
可以作为模块安装,也可以直接从
存储库。
作为模块安装
pshtt
可以直接通过pip安装:
pip install pshtt
然后可以直接运行:
pshtt example.com [options]
直接运行
要从存储库本地运行该工具,而不安装,请首先 安装要求:
pip install -r requirements.txt
然后通过python-m将其作为模块运行:
python -m pshtt.cli example.com [options]
用法和示例
pshtt [options] DOMAIN... pshtt [options] INPUT pshtt dhs.gov pshtt --output=homeland.csv --debug dhs.gov us-cert.gov usss.gov pshtt --sorted current-federal.csv
注意:如果输入以.csv
结尾,则将从第一个域中读取域
CSV的列。CSV输出将始终写入磁盘(除非
--指定json),默认为results.csv
选项
-h --help Show this message. -s --sorted Sort output by domain, A-Z. -o --output=OUTFILE Name output file. (Defaults to "results".) -j --json Get results in JSON. (Defaults to CSV.) -m --markdown Get results in Markdown. (Defaults to CSV.) -d --debug Print debug output. -u --user-agent=AGENT Override user agent. -t --timeout=TIMEOUT Override timeout (in seconds). -c --cache-third-parties=DIR Cache third party data, and what directory to cache it in. -f --ca-file=PATH Specify custom CA bundle (PEM format)
使用您自己的CA捆绑包
默认情况下,pshtt
依赖于
mozilla根目录
存储< /a>。如果
你在一家公司的代理公司工作,或者有自己的证书
不是公开可信的,您可以指定自己的ca包:
pshtt --ca-file=/etc/ssl/ca.pem server.internal-location.gov
使用Docker(可选)
./run [opts]
opts
是传递给pshtt
的参数
检查了什么?
在域的四个端点上检查域:
http://
http://www
https://
https://www
在results.csv中返回以下值:
域和重定向信息
域
-正在扫描的域!基本域
-域的基本域。例如,对于 sub.example.com的域,基本域将是example.com
。通常这是二级域,但是pshtt
将下载并加入公共后缀 计算基数时列出。 领域。(要缓存公共后缀列表,请使用后缀缓存 以上记录。)规范url
-上述四个端点之一;a 基于观察到的域重定向逻辑的判断调用。live
-如果任何端点是live,则域是"live"。https live
-如果任何https端点是 活着.<https完全连接
-如果有,则域"完全连接" https终结点已完全连接。一个"完全连接"的https 端点是pshtt可以与之建立完全tls连接的端点。https client auth required
-域需要客户端 如果任何https端点要求完整tls进行身份验证 连接。重定向
-如果至少有一个域是"重定向域" 端点是重定向,所有端点都是重定向或 下降。重定向到
-如果域是"重定向域",它在哪里 重定向到?
登陆https
有效的https
-如果域在端口上响应,则域具有"有效的https" 443在其规范URL中的主机名处,具有未过期的有效 主机名的证书。这可能是真的,即使 url使用http。https public trusted
-如果域的 规范终结点具有公共可信证书。https custom truststore trusted
-域是"custom truststore" "受信任"如果其规范终结点具有受信任的证书 通过自定义信任库。默认为https
-如果域的规范 端点使用https。降级https
-如果https是 以某种方式支持,但它的规范https端点立即 在内部重定向到http。严格强制使用https
-这与域是否 "默认"为https。如果 https端点是"live",如果两个http端点都是 关闭或立即重定向到任何https uri。http重定向可以 转到另一个域上的https,只要它是即时的。(一个域 如果证书无效,则仍可以强制使用https。)
常见错误
https坏链
-如果https 终结点包含坏链。https坏主机名
-如果https 终结点未通过主机名验证。https expired cert
-域具有过期证书,如果 https终结点具有过期证书。https自签名证书
-域具有自签名证书,如果 任何一个https端点都有一个selF-签名证书。https可能缺少中间证书 如果规范的https端点是 可能缺少中间证书。
高速列车
hsts
-如果域的 规范的https端点已启用hsts。hsts header
-此字段在其上提供域的hsts header 规范终点。hsts max age
-域的hsts max age是其规范端点的 最大年龄。hsts整个域 域,如果它的根https端点不是规范的https endpoint)已启用hsts并使用hsts
includeSubdomains
旗. < /LI>hsts preload ready
-如果一个域的 根https端点(不是规范的https端点) 启用HSTS,最长使用时间至少为18周,并使用包含子域
和预加载
标志。hsts preload pending
-当域处于"preload pending"状态时 出现在chrome preload pending中 使用包含子域
标志等于真
。pshtt的目的是 为了确保用户被完全保护,所以它只计算 域作为hsts预加载,如果它们是完全预加载的hsts (意味着所有子域也包括在内)。hsts预加载
-如果域名是hsts预加载的 出现在chrome预加载中。 列表 使用include_subdomains
标志等于true
,无论 任何端点上都有什么头。pshtt的目的是 确保用户受到完全保护,因此它只起作用 域作为hsts预加载,如果它们是完全预加载的hsts (意味着所有子域也包括在内)。预加载的基本域hsts
-域的基本域是hsts 如果其基本域出现在chrome预加载中 列表 使用include_subdomains
标志等于true
。这是微妙的 与hsts整个域不同,它检查 基域以查看HST是否正确设置为包含整个 区域:
评分
这三个字段使用前面的结果达到高级 关于域行为的结论。
域支持https 降级并具有有效的https,或者当它没有降级并具有 一个坏的链,但不是一个坏的主机名(坏的主机名表明 域没有主动尝试支持https,而 不完整的链条只是一个错误。)具有坏链的域 "支持"https,但可能会出现用户端错误。
域强制使用https
-"强制使用https"的域必须 "支持https",默认为https。对于网站(其中重定向
如果
false
),则允许它们最终重定向到https://
uri。对于"重定向域"(其中 值为true
)它们必须立即将客户端重定向到https://
uri(即使该uri位于另一个域上),以便 据说要强制使用https。域使用强hsts
-当 最大年龄≥31536000。
一般信息
IP
-的IP域名。服务器头
-响应中的服务器头 域:服务器版本
-从服务器中提取的服务器版本 标头,https证书链长度
-的证书链长度 规范的https端点。注释
-一个字段,在该字段中可以对域进行自由形式的注释 存储。
异常错误
未知错误
-一个布尔值,指示是否 测试域时遇到意外异常。这个 此字段的目的是标记任何奇数网站 调试。
故障排除
DNS黑洞/DNS协助
运行pshtt
时可能出现的一个问题,特别是
家庭/住宅网络,使用标准的ISP是"DNS
帮助"功能,也称为"DNS黑洞"。
在这些环境中,您可能会看到来自pshtt
由于您的ISP正在尝试检测
一个没有DNS记录的未知站点,正在将您重定向到
搜索该网站的网页。这意味着的端点应该
由于
检测实时搜索结果页。
如果要禁用此"功能",有几个ISP提供 能够选择退出此服务,并维护自己的 操作说明:
谁用pshtt?
- GSA维护脉搏,一个仪表板 跟踪联邦政府域如何满足 网络。Pulse是开源的 《新闻基础》的自由运行 securethe.news,一个旨在"跟踪"的网站 推动各大新闻采用https加密 组织的网站"。确保新闻已打开 来源
- DHS问题https报告 联邦行政分支机构。
致谢
这段代码是根据ben建模的
< > >站点检查器
eric mill的重要指导
该项目位于世界范围内的公共领域公共域
该项目在美国属于公共领域,并且 通过以下方式放弃世界范围内作品的版权和相关权利: cc0 1.0通用公共域 奉献精神
所有对该项目的贡献将在CC0下发布 奉献精神。提交请求即表示您同意遵守 放弃版权权益。