2016-05-04 11 views
1

mit node.js und ein letsencrypt.org ZertifikatWSS letsencrypt UNABLE_TO_GET_ISSUER_CERT

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}); 

Mein zweiter Server, der zu verbinden versucht hat genau das gleiche Setup mit einem eigenen certs und Code

Wenn ich versuche, Verbinden Server-zu-Server Es nur Fehler mit [Error: unable to get issuer certificate] code: 'UNABLE_TO_GET_ISSUER_CERT'

Googled die Hölle daraus! Nichts kommt auf Letsencrypt.org und die Fehlermeldung zeigt keine Ahnung!

Ich kann auf jede Datei testen, dass ich darauf zugreifen kann:

var test=require('fs').readFileSync('/etc/letsencrypt/lets-encrypt-x3-cross-signed.pem','utf8'); 

console.dir(test);//I see the pem!!! 

Es ist diese Linie sein könnte, weil, wenn ich es entfernen dann ich den gleichen Fehler:

hardhttps.globalAgent.options.ca=require(__dirname+'/../node_modules/ssl-root-cas/latest').inject().addFile('/etc/letsencrypt/lets-encrypt-x3-cross-signed.pem'); 

I habe es damit verbunden, da zweifellos andere Leute eine Lösung brauchen https://community.letsencrypt.org/t/error-unable-to-get-issuer-certificate-code-unable-to-get-issuer-cert/15342/3

Antwort

0

(pfg Community Modorator sagte)

benzmuircroft:

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}); 

Es gibt keine Notwendigkeit, irgendetwas davon zu setzen. Server 2 ist nur ein TLS-Client, der Server 1 anfordert, er benötigt weder den Schlüssel noch die Zertifikatsdatei des Servers. Sie wollen wahrscheinlich nur:

var ws=new require('ws')('wss://mysite1:8004'); 

nicht sicher, ob das der Fix ist - es versuchen.

BEHOBEN!

Der Server, der sich mit dem Listener-Server verbindet, muss keine Pem-Daten senden, aber der Listener muss den Pem verfügbar haben.

https://community.letsencrypt.org/t/error-unable-to-get-issuer-certificate-code-unable-to-get-issuer-cert/15342/3