2015-06-20 22 views
21

Węzeł nie tworzy bezpiecznego kontekstu dla komunikacji SSL.NodeJS i SSL - "nieprawidłowe odczytanie hasła"

W szczególności próbuję uzyskać zdalne powiadomienia do pracy w systemie iOS. Używam moduł o nazwie węzła APN, który generuje ten błąd:

Error: error:0906A068:PEM routines:PEM_do_header:bad password read 
at Error (native) 
at Object.createSecureContext (_tls_common.js:108:19) 
at Object.exports.connect (_tls_wrap.js:852:21) 
at apnSocket (/home/Slurp/node_modules/apn/lib/socket.js:56:19) 
at Connection.<anonymous> (/home/Slurp/node_modules/apn/lib/connection.js:188:17) 
at _fulfilled (/home/Slurp/node_modules/apn/node_modules/q/q.js:834:54) 
at self.promiseDispatch.done (/home/Slurp/node_modules/apn/node_modules/q/q.js:863:30) 
at Promise.promise.promiseDispatch (/home/Slurp/node_modules/apn/node_modules/q/q.js:796:13) 

to wydaje się być ogólny błąd, choć i tak naprawdę nie jest związane z APN specjalnie.

Odpowiedz

47

Wynika to z faktu, że podczas generowania certyfikatu określono hasło. Jest to hasło, które musi podać każdy, kto chce z niego skorzystać.

Dodanie pola hasła do poświadczeń rozwiązuje problem.

var credentials = { 
    key: fs.readFileSync('XXX.key', 'utf8'), 
    cert: fs.readFileSync('XXX.crt', 'utf8'), 
    passphrase: 'XXXX' 
} 

var httpsServer = https.createServer(credentials, app); 
+0

Czy to hasło jest używane do tworzenia plików ".pem" lub ".crt"? – Sravan

+0

Myślę, że został użyty do utworzenia pliku .crt. –

+0

To rozwiązało problem! –

4

Następujące polecenie wygeneruje klucz niezaszyfrowany, więc nie będzie musiał dostarczyć hasło:

openssl rsa -in yourKey.key -out newKey.key 

Polecenie to poprosi o jego podanie.