当前位置: 首页 > 面试题库 >

我的node.js https客户端始终有效,无论证书是否有效

谢涵亮
2023-03-14
问题内容

该测试程序连接到https服务器并获取一些内容。我已经在浏览器中使用curl检查了服务器,并且证书运行正常。如果我运行curl从服务器上获取数据,它会正确地抱怨证书未知,除非我使用
–cacert传递它,或者使用-k关闭安全性。

所以我遇到的问题是,尽管我认为我的客户应该进行证书身份验证,并且告诉它公共证书在哪里,但是它始终可以工作。如果我删除了ca:选项,以至于它不知道服务器上的证书是什么,那么它将以静默方式工作。我想捕获身份验证错误,但似乎无法捕获。

var https = require('https');
var fs = require('fs');

function main() {

      var data = '';

      var get = https.get({
        path: '/',
        host: 'localhost',
        port: 8000,
        agent: false,
        ca: [ fs.readFileSync('https_simple/cacert.pem') ]

      }, function(x) {

        x.setEncoding('utf8');
        x.on('data', function(c) {data += c});
        x.on('error', function(e) {
          throw e;
        });
        x.on('end', function() {
          console.log('Hai!. Here is the response:');
          console.log(data);
        });

      });

      get.on('error', function(e) {throw e});

      get.end();

    }

main();

问题答案:

为了完成这项工作,我需要升级到v0.7.8(尽管可以使用任何v0.7都可以),在其中已将rejectUnauthorized功能添加到https.get中。

需要这些选项组合:

agent: false, // or you can supply your own agent, but if you don't you must set to false
rejectUnauthorized: true, 
ca: [ fs.readFileSync('https_simple/cacert.pem') ]

现在,如果身份验证失败,您将收到一个“错误”事件,该请求将不会继续。

有关创建自己的代理的详细信息,请参阅https.request
文档。

该更改已提交错误修复:https :
//github.com/joyent/node/commit/f8c335d0



 类似资料:
  • 我收到了一个新的密钥库。jks文件用于ssl连接,以替换旧的但仍在工作的。jks密钥库文件,但我收到了“意外握手消息:serve_hello”错误。我被告知要确保密钥库包含客户端证书,所以我使用keytool将其证书导出到pem文件,然后使用openssl检查目的。结果显示 证书用途:SSL客户端:否SSL客户端CA:否SSL服务器:是SSL服务器CA:否... 然而,当我应用相同的过程来检查旧的

  • 我四处寻找了一下,我认为我的解决方案很好,但不知何故 属性始终是 。 请考虑以下代码段: 仍然给我一个有效的modelstate,尽管它清楚地显示了所需的属性是 。 我忽略了什么? 请注意,手动添加 在 方法的顶部,在 字段上抛出一个 ,因此它实际上可以验证模型。问题仍然是:为什么它不是自动的? 此外,这是不适用的,因为我的 不是 。

  • 本文向大家介绍什么是客户端证书?相关面试题,主要包含被问及什么是客户端证书?时的应答技巧和注意事项,需要的朋友参考一下 客户端系统向远程服务器发出经过身份验证的请求所用的数字证书被称为客户端证书。客户端证书在许多相互认证设计中起着非常重要的作用,为请求者的身份提供了强有力的保证。

  • 问题内容: 我正在尝试为我也编写的基于CXF的Web服务实现客户端。 我的Web服务运行良好(通过soapUI测试正常),但是运行客户端失败,并显示以下内容: 该消息明确指出了证书问题,因此我进行了快速搜索,找到了在CXF中支持SSL的正确方法,并将以下内容添加到了Spring应用程序上下文配置XML: 并重建了客户。客户端构建成功,但是我仍然得到相同的确切错误和相同的堆栈跟踪,好像我从未添加过该

  • null 有人能帮帮我吗?谢谢。 代码 斯塔克特莱斯

  • 我希望向的api发出http get请求来获取数据。 而且我仍然可以看到api内容与链接从浏览器,这是不推荐的。 我使用apache cxf作为客户端,下面是示例java代码。 如果我将它作为独立的java程序运行,它就会正常运行,并且得到响应,但是apache karaf内的包中的相同代码不能工作,并给出以下异常。