2015-10-25 8 views
6

Voglio collegarmi con socket.io tramite SSL. Ho letto le altre risposte, ma niente ha funzionatoSSL in socket.io con express: PFX o certificato mancante chiave privata.

Ecco il mio codice:

var ssl_options = { 
    key : fs.readFileSync(my_key_path), 
    cert : fs.readFileSync(my_cert_path) 
}; 

var protocol = "https"; 

preparedApp = require(protocol).createServer(ssl_options,app); 

var io = require('socket.io')(preparedApp); 

preparedApp.listen(8080, function(){}); 
io.on('connection', function(socket){}); 

E qui è il registro dei miei ssl_options ...

{ key: <Buffer 41 ...>, 
cert: <Buffer 4a ...> } 

Questo errori con l'errore nel titolo throw new Error('Missing PFX or certificate + private key.');. Qualcuno sa cosa potrebbe accadere? Nessuna delle altre soluzioni a questa risposta ha risolto il mio caso.

risposta

2

Utilizzare il formato PEM (RSA) per la chiave privata. Verifica se la chiave privata è codificata in base64, compresa tra "----- INVIA PRIVATE RSA CHIAVE -----" e "----- END RSA PRIVATE KEY -----"

Da la documentazione:

  • principali: una stringa o tampone contenente la chiave privata del server in formato PEM
  • cert: Una stringa contenente il PEM codificato certificato
  • passphrase: Una stringa di passphrase per la chiave privata o pfx [facoltativo predefinito: null]

o

  • pfx: Una stringa o buffer tenendo PFX o PKCS12 codificato chiave privata, il certificato e certificati CA

Per convertire una chiave privata RSA PEM: openssl rsa -in <PATH TO KEY> -out key.pem -outform PEM

Per creare un PKCS # 12 utilizzo fascio openssl pkcs12 -export -in cert.pem -inkey key.pem -certfile ca.pem -out host.pfx

- OLTRE -

Per ensu il certificato è codificato PEM openssl x509 -in <PATH TO CERT> -out cert.pem -outform PEM

+0

Fondamentalmente ho trasformato il mio .key in un file .pem usando il comando che mi hai detto di fare. In seguito ho cambiato il mio codice per 'ssl_options var = { chiave: fs.readFileSync (my_pem_path), (è in .pem) cert: fs.readFileSync (my_cert_path) (è in .crt) };' ma è ancora fallito con gli stessi errori. Qualche idea? – Fane

+0

Prova a codificare il crt come pem. Vedi l'aggiunta della mia risposta. – windm

+0

no ... esattamente la stessa cosa :( – Fane

Problemi correlati