如何阅读SSL数据?

时间:2015-11-14 06:42:20

标签: javascript node.js ssl npm ssl-certificate

我发现了一个简洁的npm包,允许这个,称为https://jsfiddle.net/tp82y04n/1/。但是,由于某些原因,这不起作用(我得到Uncaught Error: Module did not self-register)。还有其他方法可以通过node.js / JavaScript / jQuery读取网站的SSL信息吗?

编辑:

对于未来的搜索者!接受的答案是正确的,但如果您想要一些可操作的数据怎么办?这对我有用(现在):

results.toString().match(/subject=\/(.*)/)[1].match(/CN=(.*)/)[1] // Subject Common Name
results.toString().match(/subject=\/(.*)/)[1].match(/O=(.*)\//)[1] // Subject Organization Name

results.toString().match(/issuer=\/(.*)/)[1].match(/CN=(.*)/)[1] // Issuer Common Name
results.toString().match(/issuer=\/(.*)/)[1].match(/O=(.*)\//)[1] // Issuer Organization Name

所有这个正则表达式都很难看,但是sslinfo没有合作。另外,我将答案代码略微修改为:

openssl.exec("s_client", {
  showcerts: true, connect: url // "url" is what I'm passing to the function
}, function (err, results) {
  console.log(
    // results.toString().match(/subject=\/(.*)/)[1].match(/CN=(.*)/)[1] // Subject Common Name
    // results.toString().match(/subject=\/(.*)/)[1].match(/O=(.*)\//)[1] // Subject Organization Name

    // results.toString().match(/issuer=\/(.*)/)[1].match(/CN=(.*)/)[1] // Issuer Common Name
    // results.toString().match(/issuer=\/(.*)/)[1].match(/O=(.*)\//)[1] // Issuer Organization Name
  );
});

1 个答案:

答案 0 :(得分:2)

sslinfo基于openssl-wrapper,因此可以直接使用。 E.g:

var openssl = require('openssl-wrapper');

var url = 'www.google.com:443'

return openssl.exec('s_client', {showcerts: true, connect: url }, function(err, buffer) {
    console.log(buffer.toString());
});

在命令行中等效于此:

openssl s_client -showcerts -connect www.google.com:443