我需要使用 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
-证书状态:true
正确expired.badssl.com
-证书状态:false
正确
都正确。但是,当站点根本不使用 SSL 时,socket.authorized
的值仍然为真:
alibaba.com
-证书状态:true
错误www.bbc.com
-证书状态:true
错误
验证域是否具有有效 SSL 证书的正确方法是什么?
最佳答案
正如我的问题的评论中所指出的,这些网站恰好在网站加载后立即使用从 https
到 http
的重定向。所以最初的“有效证书”结果是正确的。
为了解决这个问题,我使用了一个 npm 包 zfollow-redirects`,这解决了这个问题。
来自包的描述:
Drop-in replacement for Nodes http and https that automatically follows redirects.
关于javascript - 使用 nodeJS 检查其他域的 SSL 证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46684774/