扫描网站以获取https部署最佳实践

pshtt的Python项目详细描述


按下https:lock:

最新版本构建状态coverage status总警报语言等级:python

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的参数

检查了什么?

在域的四个端点上检查域:

results.csv中返回以下值:

域和重定向信息

登陆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并使用hstsincludeSubdomains 旗. < /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?

致谢

这段代码是根据ben建模的 < > >站点检查器 eric mill的重要指导

公共域

该项目位于世界范围内的公共领域

该项目在美国属于公共领域,并且 通过以下方式放弃世界范围内作品的版权和相关权利: cc0 1.0通用公共域 奉献精神

所有对该项目的贡献将在CC0下发布 奉献精神。提交请求即表示您同意遵守 放弃版权权益。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
具有MVC模式的java观察者/可观察对象   java junit在测试执行后未清理记录器   java减少spring boot应用程序中的网络延迟   java MyFirstApp教程Android Studio sendMessage问题   java无法转换消息   java JSP如果是,则递增   URL和方法的java spring安全设置   spring中的java自动动态绑定   java在Wicket中构建表   使用JUnit在与main相同的类中使用java测试方法   使用tomcat 8管理器部署后,java找不到WAR文件路径   java原子整数错误行为   需要java吗?   java允许多个JLabel中的文本重叠   java Hadoop mapreduce映射程序编程   json参数化Jackson Java库的JsonProperty值