2012-11-19 8 views
17

Ich arbeite an der Einrichtung eines SSL über GoDaddy für die Verwendung mit meinem node.js Server auf AWS EC2. Ich konnte es nicht zur Arbeit bringen.Erstellen eines SSL-Schlüssels für die Arbeit mit node.js

Hier ist, was ich versucht habe:

für die Domain Beabsichtigte: files.mysite.com

auf dem Server Ich betreibe:

$ openssl req -new -newkey rsa:2048 -nodes -keyout files.mysite.key -out files.mysite.csr 

Common Name: files.mysite.com 
password: left empty 

ich die CSR dann bekommen: vim files.mysite.csr

Kopieren und Einfügen von:

-----BEGIN CERTIFICATE----- 
......... lots of stuff 
-----END CERTIFICATE----- 

Es gibt eine zusätzliche leere Zeile am Ende, die ich hinterlasse und in die GoDaddy-Schnittstelle einfügen mit Rekey.

ich dann die GoDaddy Schlüssel herunterladen, die lautet:

gd_bundle.crt 
files.mysite.com.crt 

dann in Knoten I einfügen:

key: fs.readFileSync('server.key').toString(), 
cert: fs.readFileSync('server.crt').toString() 

Ich bin mir nicht sicher, was server.key ist oder server.crt gegeben, dass GoDaddy Stellt zwei CRT-Dateien zur Verfügung?
Können Sie helfen?

+3

Diese Frage ist auch eine Antwort. Ihr openssl-Befehl ist geeignet, um eine CSR für Node.js-Apps zu generieren. Entweder das ist wirklich offensichtlich und ich bin langsam oder es ist nicht und es gibt wahrscheinlich eine Menge Leute wie ich, die diese Informationen brauchen, also wünschte ich, ich könnte dies für aufwerten sowohl eine Frage als auch eine Antwort. – rainabba

Antwort

25

GoDaddy verwendet ein intermidiate Zertifikat Ihr Zertifikat zu unterzeichnen. Dies hat mehrere Vorteile für Sie und GoDaddy. Aber es braucht ein bisschen mehr Arbeit, um es zum Laufen zu bringen (nur ein bisschen, meistens herumjagend).

In node.js können Sie sie wie folgt installieren:

require('https').createServer({ 
    key: fs.readFileSync('files.mysite.com.key'), 
    cert: fs.readFileSync('files.mysite.com.crt'), 
    ca: [fs.readFileSync('gd_bundle.crt')] // <----- note this part 
}, app).listen(443); 
+2

Wie erzeuge ich .key? –

+1

Guter Punkt zum Kettenbündel. –

+0

Warum hast du [] um die ca aber nicht die anderen Felder? –

3

Sie sollten die Dateien .crt und .key bei der Erstellung Ihrer http-Server-Instanz verwenden. Der folgende Ausschnitt wird Ihnen die Idee:

require('https').createServer({ 
    key: fs.readFileSync('/path/to/something.key'), 
    cert: fs.readFileSync('/path/to/something.crt'), 
}, app).listen(443); 

Wenn Sie ein Passwort für Ihren Schlüssel haben, können Sie es aber passieren, wie folgt:

require('https').createServer({ 
    key: fs.readFileSync('/path/to/something.key'), 
    cert: fs.readFileSync('/path/to/something.crt'), 
    passphrase: 'your_secret_passpahrase' 
}, app).listen(443); 
Verwandte Themen