服务器。配置如下:ssl_certificate/usr/local/nginx/priv/mysite.ca.chained.crt;ssl_certificate_key/usr/local/nginx/priv/mysite.ca.key;ssl_protocolsSSLv3TLSv1TLSv1.1TLSv1.2;ssl_ciphersHIGH:!aNULL:!MD5;ssl_verify_depth2;chaincertificate命令行:catmysite.ca.crtbundle.crt>mysite.ca.chained.crt其中mysite.ca.crt是签名机构给我的证书,而bundle.crt是我的签名机构再次发给我的CA证书。这里的问题是我没有直接从GlobalSign购买SSL证书,而是通过我的托管服务提供商Singlehop购买的。SSL证书的主要目的是参照HTTPS协议确认身份验证,保证服务器与客户端之间信息交换的安全性。这只有在本地计算机具有由证书颁发机构直接或间接签署的有效根证书时才有可能。但是当根证书不能正常使用时,尤其是SSL客户端发起HTTPS请求时,会出现无法获取本地颁发者证书的错误,此时客户端必须共享SSL证书进行认证。任何人都可以通过生成签名密钥来签署SSL证书;但是,操作系统和Web浏览器可能无法识别它。SSL证书的主要目的是确认网站的身份验证并保护服务器和浏览器之间传递的信息。有时,在向HTTPS站点发出cURL请求时,您需要共享SSL证书以进行身份??验证。这样做时,您可能会遇到无法获取本地颁发者证书的错误。如果使用如下Node.js应用访问https服务:app.get('/test-no-ssl',function(req,res){fetch('http://jsonplaceholder.typicode.com/users').then(res=>res.json()).then(users=>{res.send(users)}).catch(function(error){res.send(error)})})//--HTTPS--app.get('/test-ssl',function(req,res){fetch('https://jsonplaceholder.typicode.com/users').then(res=>res.json())。then(users=>{res.send(users)}).catch(function(error){res.send(error)})})app.listen(3003,()=>console.log('侦听端口3003...'))解决方法:process.env["NODE_TLS_REJECT_UNAUTHORIZED"]=0如果时间允许,可以考虑将上述环境变量的修改注入到命令行的执行中。环境变量允许您在本地开发、测试、暂存、用户验收测试(UAT)、生产和作为项目工作流程一部分的任何其他环境之间切换。更好的解决方案:constfetch=require('node-fetch');consthttps=require('https');consthttpsAgent=newhttps.Agent({rejectUnauthorized:false,});constresponse=awaitfetch(url,{method:'POST',headers:headers,body:body,agent:httpsAgent,});
