wss letsencrypt UNABLE_TO_GET_ISSUER_CERT
wss letsencrypt UNABLE_TO_GET_ISSUER_CERT
使用 node.js 和 letsencrypt.org 证书
var hardhttps=require('hardhttps');
hardhttps.globalAgent.options.ca=require('ssl-root-cas/latest').inject().addFile('/etc/letsencrypt/lets-encrypt-x3-cross-signed.pem');
var pem={
key:require('fs').readFileSync('/etc/letsencrypt/live/mysite.com/privkey.pem','utf8')
, cert:require('fs').readFileSync('/etc/letsencrypt/live/mysite.com/fullchain.pem','utf8')
, ca:require('fs').readFileSync('/etc/letsencrypt/lets-encrypt-x3-cross-signed.pem','utf8')
, pass:'xxxx'
}
var server=(hardhttps.createServer({key:pem.key,cert:pem.cert,ca:[pem.ca],passphrase:pem.pass})).listen(port);
var wss=new WebSocketServer({server:server});
我尝试连接的第二台服务器的设置与它自己的证书和代码完全相同
当我尝试连接服务器到服务器时,它只是出错 [Error: unable to get issuer certificate] code: 'UNABLE_TO_GET_ISSUER_CERT'
用谷歌搜索一下! letsencrypt.org 中什么也没有出现,错误消息也没有任何线索!
我可以测试我可以访问的每个文件:
var test=require('fs').readFileSync('/etc/letsencrypt/lets-encrypt-x3-cross-signed.pem','utf8');
console.dir(test);//I see the pem!!!
可能是这一行,因为如果我删除它,我会得到同样的错误:
hardhttps.globalAgent.options.ca=require(__dirname+'/../node_modules/ssl-root-cas/latest').inject().addFile('/etc/letsencrypt/lets-encrypt-x3-cross-signed.pem');
我已将其链接到此,因为毫无疑问其他人可能需要解决方案 https://community.letsencrypt.org/t/error-unable-to-get-issuer-certificate-code-unable-to-get-issuer-cert/15342/3
本兹穆尔克罗夫特:
pem:{
key:require('fs').readFileSync('/etc/letsencrypt/live/mysite.com/privkey.pem','utf8')
, cert:require('fs').readFileSync('/etc/letsencrypt/live/mysite.com/fullchain.pem','utf8')//was chain.pen
, ca:require('fs').readFileSync('/etc/letsencrypt/lets-encrypt-x3-cross-signed.pem','utf8')
, pass:'xxxxxxxxxxx'
}
var ws=new require('ws')('wss://mysite:8004',{key:pem.key,cert:pem.cert,ca:[pem.ca],passphrase:pem.pass,requestCert:true});
无需进行任何设置。服务器 2 只是一个请求服务器 1 的 TLS 客户端,它不需要服务器的密钥或证书文件。你可能只想:
var ws=new require('ws')('wss://mysite1:8004');
不确定这是否是解决方法 - 试一试。
已修复!
连接到侦听服务器的服务器不需要发送 pem 内容,但侦听服务器确实需要有可用的 pem。
使用 node.js 和 letsencrypt.org 证书
var hardhttps=require('hardhttps');
hardhttps.globalAgent.options.ca=require('ssl-root-cas/latest').inject().addFile('/etc/letsencrypt/lets-encrypt-x3-cross-signed.pem');
var pem={
key:require('fs').readFileSync('/etc/letsencrypt/live/mysite.com/privkey.pem','utf8')
, cert:require('fs').readFileSync('/etc/letsencrypt/live/mysite.com/fullchain.pem','utf8')
, ca:require('fs').readFileSync('/etc/letsencrypt/lets-encrypt-x3-cross-signed.pem','utf8')
, pass:'xxxx'
}
var server=(hardhttps.createServer({key:pem.key,cert:pem.cert,ca:[pem.ca],passphrase:pem.pass})).listen(port);
var wss=new WebSocketServer({server:server});
我尝试连接的第二台服务器的设置与它自己的证书和代码完全相同
当我尝试连接服务器到服务器时,它只是出错 [Error: unable to get issuer certificate] code: 'UNABLE_TO_GET_ISSUER_CERT'
用谷歌搜索一下! letsencrypt.org 中什么也没有出现,错误消息也没有任何线索!
我可以测试我可以访问的每个文件:
var test=require('fs').readFileSync('/etc/letsencrypt/lets-encrypt-x3-cross-signed.pem','utf8');
console.dir(test);//I see the pem!!!
可能是这一行,因为如果我删除它,我会得到同样的错误:
hardhttps.globalAgent.options.ca=require(__dirname+'/../node_modules/ssl-root-cas/latest').inject().addFile('/etc/letsencrypt/lets-encrypt-x3-cross-signed.pem');
我已将其链接到此,因为毫无疑问其他人可能需要解决方案 https://community.letsencrypt.org/t/error-unable-to-get-issuer-certificate-code-unable-to-get-issuer-cert/15342/3
本兹穆尔克罗夫特:
pem:{
key:require('fs').readFileSync('/etc/letsencrypt/live/mysite.com/privkey.pem','utf8')
, cert:require('fs').readFileSync('/etc/letsencrypt/live/mysite.com/fullchain.pem','utf8')//was chain.pen
, ca:require('fs').readFileSync('/etc/letsencrypt/lets-encrypt-x3-cross-signed.pem','utf8')
, pass:'xxxxxxxxxxx'
}
var ws=new require('ws')('wss://mysite:8004',{key:pem.key,cert:pem.cert,ca:[pem.ca],passphrase:pem.pass,requestCert:true});
无需进行任何设置。服务器 2 只是一个请求服务器 1 的 TLS 客户端,它不需要服务器的密钥或证书文件。你可能只想:
var ws=new require('ws')('wss://mysite1:8004');
不确定这是否是解决方法 - 试一试。
已修复!
连接到侦听服务器的服务器不需要发送 pem 内容,但侦听服务器确实需要有可用的 pem。