首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何以编程方式测试网站是否使用HTTPS?

如何以编程方式测试网站是否使用HTTPS?
EN

Stack Overflow用户
提问于 2015-03-06 22:49:17
回答 2查看 1.5K关注 0票数 2

我想要构建一个脚本的某种类型,可以判断一个网站是否使用https。

以编程方式确定这一点的方法是什么?我尝试访问我自己的一个域,我知道它没有https,但是服务器仍然给了我200段代码(至少根据我使用的Chrome扩展)。

是否有某种错误,我可以捕捉,或其他一些信息,将是一致的网站?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-03-07 01:26:59

从理论上讲,应该由您预先知道是否应该使用HTTPS。我的意思是,用户对某些站点使用HTTPS有一定的判断。在现实世界中,当你走进你的银行和走进一家咖啡店时,你通常会有不同的安全期望。一般情况下,你不会像给你的银行家那样,向酒吧后面的人提供同样的细节。在网络上也是如此。

也就是说,您确实可以测试是否可以建立到某个网站的HTTPS连接。问题是,无法建立这种联系可能意味着以下几点:

  • 那个网站根本不支持HTTPS,
  • 有个暂时的连接问题,
  • 有个攻击者阻止你建立那个连接。

许多站点将尝试通过重定向将您从HTTP升级到HTTPS,以使用户意识到HTTPS是可用的,并希望在下次访问该站点时让他们期待它。有些站点甚至会使用HTTP严格传输安全(HSTS)来迫使您下次访问该站点时记住升级。这是一个合理的妥协,如果你可以假设你的第一个连接是没有缓和的。

以编程方式确定这一点的方法是什么?我尝试访问我自己的一个域,我知道其中一个域没有https,但是服务器仍然给了我200个代码。

如果您的域没有有效的证书,那么证书验证就会失败,并且您应该无法获得任何HTTP状态代码作为响应。

我猜想您所使用的脚本没有进行任何证书验证,而且可能这些域指向共享主机环境,其中具有相同IP地址的其他服务都启用了HTTPS。

您至少应该确保脚本正确地验证证书:

  • 您应该能够验证证书是真实的,并且是由您信任的CA颁发的,并且及时有效。( RFC 3820和RFC 5820中通常都有这样的规定)
  • 您应该能够验证它对于您要查找的主机名是否有效。( RFC 2818和RFC 6125中通常都有这样的规定。)

并非所有SSL/TLS库都默认启用了此功能(特别是第二点)。

我不确定您在脚本中使用了什么,或者您提到的扩展名是做什么的。例如,如果您使用的是curl,请确保您没有使用-k--insecure,并且您使用的是wget,请确保您没有使用--no-check-certificate。如果您使用的是libcurl,您应该确保自己是适当地。如果您使用的不是其他实现,请在其他实现中寻找类似的选项,并且不要忽略浏览器警告。

票数 2
EN

Stack Overflow用户

发布于 2015-03-06 23:45:20

在Windows上,您可以使用免费基础版HttpWatch及其自动化接口编写访问要测试的站点的程序。

误差性质 on Entry类允许您检测HTTP失败的情况。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28909015

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档