2013-04-07 19 views
5

nodejs versione: 0.8.6
ho creato un file ssl CSR utilizzando utilizzando OpenSSL con il seguente comando: openssl req -nodes -newkey RSA: 2048 -keyout myserver.key -out myserver.csrcome creare il server nodejs ssl?

  • Il contenuto csr è stato inviato al mio provider SSL, il certificato è stato restituito.

Ora volevo creare un server sicuro SSL:

var fs = require("fs"); 
var https = require('https'); 
var credentials = { 
      key: fs.readFileSync(options.base_project_folder + 'privatekey.pem'), 
      cert: fs.readFileSync(options.base_project_folder + 'certificate.pem') 
}; 
var server = https.createServer(credentials, app); 
server.listen(port, address, function() { 
    var addr = this.address(); 
    console.log('listening on %s:%d', addr.address, addr.port); 
}); 

server è in esecuzione, ma ottengo: "errore di connessione SSL"

cercando di controllare il problema ho fatto: openssl s_client -connect my_dns: 443 // my_dns punti al mio server nodejs ofcourse

risultato: COLLEGATI (00000003) 139.813.382.997.664: errore: 140790E5: routine SSL: SSL23_WRITE: ssl errore di handshake: s23_lib.c: 177:
nessun certificato pari disponibili
Nessun nome CA certificato client inviato
handshake SSL ha letto 0 byte e scritto 226 byte
Nuovo, (none), Cipher è (nessuno)
Rinegoziazione sicuro non è supportato
Compressione: NESSUNA
espansione: nESSUNO

qualcuno mi può aiutare? Ho perso la strada nell'oscurità SSL :(

+0

Il codice del server che pubblicate è incompleto. O non hai postato il resto (se sì, per favore pubblicalo pure), o ti mancano solo parti essenziali della creazione di un vero server HTTPS nel Nodo. – robertklep

+0

ho modificato il codice, spero che questo aiuti a trovare il mio problema. – IdanHen

+0

E 'port' è uguale a' 443', giusto? – robertklep

risposta

7

Provate ad aggiungere la CA in questo modo:

var credentials = { 
    key: fs.readFileSync(options.base_project_folder + 'privatekey.pem'), 
    cert: fs.readFileSync(options.base_project_folder + 'certificate.pem'), 
    ca: fs.readFileSync(/path/to/CA/cert) 
}; 

The docs say che l'argomento delle opzioni è simile a tls.createServer

+0

qual è il file ca? qual è il contenuto di esso? ho provato a scoprirlo: ( – IdanHen

+0

è stato trovato un problema, i miei file hanno avuto un problema, e ho anche bisogno del ca :) – IdanHen

+1

http://www.benjiegillam.com/2012/06/node-dot-js-ssl- catena di certificati /, che ho trovato tramite un commento su un link nell'altra risposta, ha un punto importante. Nelle versioni più recenti di Node, la proprietà "ca" non prenderà un file in bundle; se si dispone di più di un certificato intermedio, è necessario caricarli singolarmente in un array e impostare la proprietà "ca" su tale array. – lawrence

1

Credo che sia necessario specificare anche un certificato CA per il firmatario Poiché non si tratta di un certificato autofirmato, si dovrebbe aver ricevuto un pacchetto da qualsiasi luogo in cui si è ottenuto il certificato.

Un paio di link che dovrebbero aiutare: http://qugstart.com/blog/node-js/install-comodo-positivessl-certificate-with-node-js/ http://www.gettingcirrius.com/2012/06/securing-nodejs-and-express-with-ssl.html

+0

+1 Sono d'accordo che il problema potrebbe benissimo mancare al certificato CA. – talentedmrjones