使用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.com
–Certificate Status: true
正确 -
expired.badssl.com
–Certificate Status: false
正确
两者都正确。 但是,当一个站点没有使用SSL时, socket.authorized
所有值仍然是正确的:
-
alibaba.com
–Certificate Status: true
错误 -
www.bbc.com
–Certificate Status: true
错误
validation域是否具有有效的SSL证书的正确方法是什么?
正如在我的问题的评论中指出的那样,这些网站恰好在加载站点时使用https
到http
redirect。 所以最初的“有效证书”结果是正确的。
为了解决这个问题,我使用了一个npm包zfollow-redirects`,这就解决了这个问题。
从包描述:
直接replace节点http和https,自动跟随redirect。