代码之家  ›  专栏  ›  技术社区  ›  D-Money

使用NodeJ检查其他域SSL证书

  •  2
  • D-Money  · 技术社区  · 9 年前

    我需要使用NodeJS检查给定域是否具有有效的SSL证书,因此我使用 https 类似这样的模块:

    const https = require('https');
    
    const options = {
      host: 'www.some-site.com',
      method: 'get',
      path: '/'
    };
    
    const req = https.request(options, res => {
      console.log('Certificate Status: ', res.socket.authorized);
    });
    
    req.on('error', error => {
      console.error('Error: ', error);
    });
    
    req.end();
    

    我一直在针对谷歌透明度报告中列出的一些不安全网站进行测试: https://transparencyreport.google.com/https/top-sites

    一些结果:

    • aliexpress.com - Certificate Status: true 对的
    • expired.badssl.com - Certificate Status: false 对的

    两者都正确。然而,当一个站点根本不使用SSL时 socket.authorized

    • alibaba.com - 证书状态:true
    • www.bbc.com - 证书状态:true

    验证域是否具有有效SSL证书的正确方法是什么?

    1 回复  |  直到 9 年前
        1
  •  0
  •   D-Money    9 年前

    正如我的问题在评论中指出的,这些网站碰巧使用了来自的重定向 https 到 http 一旦网站加载。因此,最初的“有效证书”结果是正确的。

    为了解决这个问题,我使用了一个npm包zfollow重定向,这解决了这个问题。

    从包装说明中:

    自动替换http和https节点 遵循重定向。