相关疑难解决方法(0)

有没有办法使用JavaScript获取SSL证书详细信息?

我想在特定网站上收集SSL证书的某​​些细节.我知道在Linux/MacOSX上使用openssl工具很简单.但是在JavaScript中是相同还是相似?

我知道浏览器处理套接字连接,并且SSL握手发生在任何一方发送数据之前.但是在XMLHTTPRequest中,我想知道是否有可能将这些细节作为某种响应代码等?

javascript ssl openssl javascript-events

18
推荐指数
2
解决办法
2万
查看次数

如何在Firefox Add On中获取*current*页面的SSL证书信息

我正在尝试开发一个Firefox扩展/附加组件,需要访问当前加载的页面的SSL证书信息.获得此信息后,我计划根据SSL信息修改页面内容.虽然,在我到达那里之前,我首先需要获取SSL信息.

此处概述的方法使用单独的XMLHTTPRequest来获取安全证书.如果我可以避免它,我宁愿不这样做,因为它会带来安全问题.

例如,恶意站点/中间人可以在页面的第一个请求(浏览器将验证)上提供一个证书,然后为我的扩展所做的XMLHTTPRequest提供另一个证书.这将导致扩展基于不一致的信息修改站点内容.因此,我想获取浏览器本身在验证网站时使用的SSL证书信息.

考虑到这一点,我将上述方法与在Firefox扩展更改HTTP响应中概述的方法相结合,通过添加"http-on-examine-response"事件的观察者来拦截所有HTTP响应.我认为通过这种方法,我可以简单地获取从网站下载的证书信息.

这是我的代码的内容,其中大部分来自上面的链接(其余的是Firefox扩展样板):

function dumpSecurityInfo(channel) {

    const Cc = Components.classes
    const Ci = Components.interfaces;

    // Do we have a valid channel argument?
    if (! channel instanceof  Ci.nsIChannel) {
        dump("No channel available\n");
        return;
    }

    var secInfo = channel.securityInfo;


    // Print general connection security state

    if (secInfo instanceof Ci.nsITransportSecurityInfo) {
        dump("name: " + channel.name + "\n");
        secInfo.QueryInterface(Ci.nsITransportSecurityInfo);

        dump("\tSecurity state: ");

        // Check security state flags
        if ((secInfo.securityState & Ci.nsIWebProgressListener.STATE_IS_SECURE) == Ci.nsIWebProgressListener.STATE_IS_SECURE)
            dump("secure\n");

        else if ((secInfo.securityState …
Run Code Online (Sandbox Code Playgroud)

javascript firefox firefox-addon firefox-5

5
推荐指数
1
解决办法
6243
查看次数