使用公共签名证书与服务器进行双向authentication,但使用私有CA的客户端

我是一个node-js的人,但我认为这只是证书/ CA。

我想使用由公共CA签名的证书来设置https服务器,以便所有浏览器都可以访问我的网站,而不会出现证书错误。 同时,我希望我的服务器提供双向httpsvalidation,以便服务器可以识别我的客户端,如果我的客户端正在使用证书。 客户端证书由我自己创build的CA签署。

当我让客户端连接到服务器,它会得到一个错误,称为Error: CERT_UNTRUSTED 。 但是我已经为服务器和客户端设置了“ca”和“agent”选项,所以我无法弄清楚我的错误。

我已经在我的Windows 8根证书上安装了自签名的CA,尽pipe我不认为它是真正需要的。

我的代码:

服务器

 var options = { key:keyForCertificate, cert:certFromPublicCA, ca:[PublicCA, self-signedCA], requestCert: true, rejectUnauthorized: false }; var server = require('https').Server(options, require('express')()); server.listen(443); 

客户

 require('https').request({ host: "www.publicWebsite.com" , method: "GET" , port: 443 , headers: { host: "www.publicWebsite.com" } , ca:[PublicCA, self-signedCA], , path: "/" }, function (res) { if (res.client.authorized) { console.log("node test: OK") } else { throw new Error(res.client.authorizationError) } }).end()