使用nodeJS检查其他域SSL证书

我需要检查给定的域是否有一个有效的SSL证书使用NodeJS,所以我使用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透明度报告中的网站进行testing: https : //transparencyreport.google.com/https/top-sites

一些结果:

  • aliexpress.comCertificate Status: true正确
  • expired.badssl.comCertificate Status: false正确

两者都正确。 但是,当一个站点没有使用SSL时, socket.authorized所有值仍然是正确的:

  • alibaba.comCertificate Status: true错误
  • www.bbc.comCertificate Status: true错误

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

正如在我的问题的评论中指出的那样,这些网站恰好在加载站点时使用httpshttpredirect。 所以最初的“有效证书”结果是正确的。

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

从包描述:

直接replace节点http和https,自动跟随redirect。