是否有一种使用JavaScript获取SSL证书详细信息的方法?
我想收集特定网站上SSL证书的某些详细信息。我知道在Linux/MacOSX上使用openssl工具很简单。但是,JavaScript中是否可能存在相同或类似的情况是否有一种使用JavaScript获取SSL证书详细信息的方法?,javascript,ssl,openssl,dom-events,Javascript,Ssl,Openssl,Dom Events,我想收集特定网站上SSL证书的某些详细信息。我知道在Linux/MacOSX上使用openssl工具很简单。但是,JavaScript中是否可能存在相同或类似的情况 我知道浏览器处理套接字连接,SSL握手发生在任何一方发送数据之前。但是,在XMLHTTPRequest中,我想知道是否可以将这些详细信息作为某种响应代码等获取?这些信息根本没有暴露在javascript中,它很少使用(因为它不可用,所以从未使用过,但很少使用)我想,这对于添加到javascript对象模型是不够重要的……对于任何很少
我知道浏览器处理套接字连接,SSL握手发生在任何一方发送数据之前。但是,在XMLHTTPRequest中,我想知道是否可以将这些详细信息作为某种响应代码等获取?这些信息根本没有暴露在javascript中,它很少使用(因为它不可用,所以从未使用过,但很少使用)我想,这对于添加到javascript对象模型是不够重要的……对于任何很少使用的特性都是一样的 当然,出于安全原因,它也可能被遗漏……我目前还没有足够的创造力来设计一个,但我确信那里也有一个漏洞。不,不可能
可以通过javascript检测当前正在查看的页面是否通过SSL连接(document.location.protocol==“https:”),但仅此而已。证书不是DOM的一部分,因此不可能。对不起 当前的JS语言标准没有公开证书信息;除此之外,这可能取决于您如何使用JavaScript,如果您希望最终用户的浏览器公开证书信息,那么这将是一个真正的问题,因为您需要获得最低限度的FF、Chrome、Safari、IE、Edge等。。。揭露它 然而,正如本文所提到的,这对于这些浏览器来说并不是一个理想的实现选项,因为这将允许网站开发人员编写代码错误地信任用户端凭据 阻止javascript访问浏览器当前SSL证书信息的与其说是可见性安全风险,不如说是第四道墙安全风险,JS开发人员必须意识到“用户接受的”证书不一定是网站提供的证书。HTML页面实际上不应该处理客户端代码的安全问题,相反,它应该能够依靠安全层正确地完成它的工作。(我完全理解你想要检查安全层,但你在顶层所做的任何管理工作都将是肤浅的,或者是对整个生物圈的改造) 因为我们假设javascript确实提供了一种使用证书的方法,那么当Bob因为安全性被破坏而信任Mallory时,就无法停止以下交换: 办公室工作人员Bob在Mega Corp的长城防火墙的一边,IT Mallory负责在本地传递进出公司的流量的防火墙,Web主机Alice令人敬畏的网站在WWW上
编辑2018年4月4日——虽然上述观点没有错,但更多的是从嵌入式和链接JS的角度出发,而不是从
XMLHTTPRequest
JS对象的角度出发;此外,反对与XMLHTTPRequest
共享PKI详细信息的最有力论据可能如下:
HTTPS协议的HTTP部分和S部分之间需要保持一条强有力的分界线。JavaScript及其XMLHTTPRequest
对象位于该行的HTTP(应用层)端,而整个证书交换过程位于该行的s(trans/sec层)端。为了使安全端原子化(可热插拔),其内部工作不能跨线路向应用端公开;因为有一天,传输/安全层可能不再使用PKI证书来促进其安全通信服务,并且当这一天到来时,没有人需要重写任何依赖于这些证书中包含的细节来处理数据的现有JS代码
authority = [ userinfo "@" ] host [ "#" legalentity ] [ ":" port ]
legalentity = *( unreserved / pct-encoded / sub-delims )