HTTPS的NodeJS上的SSL证书失效

问题描述:

不会失败,我现在用的是https library对向的NodeJS发送使用下面的代码HTTPS GET请求。即使正在测试的服务器的证书已过期,我也会得到有效的200状态。HTTPS的NodeJS上的SSL证书失效

https.get(options, this.onResponseCallback.bind(this)); 

选项的值如下所示。

{ 
    protocol: 'https: ', 
    slashes: true, 
    auth: null, 
    host: 'XXXXXXXX', 
    port: '443', 
    hostname: 'XXXXXXXX', 
    hash: null, 
    search: 'XXXXXXXX', 
    query: 'XXXXXXXX', 
    pathname: '/XXXXXXXX/XXXXXXXX', 
    path: '/XXXXXXXX/XXXXXXXX?XXXXXXXX', 
    href: 'https://XXXXXXXX', 
    headers: { 
     'User-Agent': 'NodeUptime/3.0(https://github.com/fzaninotto/uptime)' 
    }, 
    rejectUnauthorized: true 
} 

如果我在浏览器中找到相同的URL,会出现以下错误。

Firefox

我如何当证书过期的NodeJS失败?

+0

什么使你确定证书已过期?那个curl错误信息不会这么说。错误60可能由许多不同的问题引起,并且过期它说“证书已过期”而不是“无效的证书链”。你可以试试'openssl s_client'(只有来自URL的host:端口,如果不是默认情况下使用相同的信任库),它是什么意思? – 2014-12-05 23:15:33

+0

什么使我确信我故意在我们的服务器上使用过期的证书。这是自动测试我们的系统并且无法检测证书到期失败的系统的一部分。所以我用旧证书做了一个测试服务器。 – 2014-12-06 00:08:44

+0

然后我忍不住,对不起。 OpenSSL绝对可以在默认情况下检查过期。我不知道在通往node.js的路上会发生什么:-( – 2014-12-06 03:12:40

我认为浏览器的安全策略比你在节点上可以做得更严格一些。

您可以通过访问信息关于服务器的证书:

https.request(options, function(response){ 
    var cert = response.client.pair.cleartext.getPeerCertificate(); 
}); 

.valid_to是你在找什么。

有关更多信息TLS

+0

我仍然认为这个库默认会失败,但这会让我超出我的问题。谢谢 – 2014-12-09 14:48:27