【问题标题】:Checking other domains SSL certificates using nodeJS使用 nodeJS 检查其他域 SSL 证书
【发布时间】:2017-10-11 09:35:33
【问题描述】:

我需要使用 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();

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

部分结果:

  • aliexpress.com - Certificate Status: true 正确
  • expired.badssl.com - Certificate Status: false 正确

两者都正确。但是,当网站完全不使用 SSL 时,socket.authorized 的值仍然为 true:

  • alibaba.com - Certificate Status: true 错了
  • www.bbc.com - Certificate Status: true 错了

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

【问题讨论】:

  • 域名alibaba.com和bbc.com有关联的ssl证书,点击这里查看..alibaba.com,您可以在这里验证ssl证书状态...... ......sslshopper.com/ssl-checker.html
  • 正如 Nithin 指出的那样,证书是正确的。您指出的两个站点在 Web 浏览器中打开时会执行从 HTTPS 到 HTTP 的自动重定向。因此,我假设您认为它们不支持 SSL。
  • 你们是对的,感谢您的帮助!

标签: javascript node.js ssl https


【解决方案1】:

正如我在 cmets 中针对我的问题所指出的,这些网站在加载网站后恰好使用从 httpshttp 的重定向。所以最初的“有效证书”结果是正确的。

为了解决这个问题,我使用了一个 npm 包 zfollow-redirects`,这解决了这个问题。

来自包装说明:

自动替换节点 http 和 https 跟随重定向。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-12-30
    • 2015-02-25
    • 1970-01-01
    • 1970-01-01
    • 2012-12-17
    • 1970-01-01
    • 2017-02-03
    相关资源
    最近更新 更多