web-dev-qa-db-fra.com

NodeJS & SSL - "mauvais mot de passe lu"

Le nœud ne parvient pas à créer un contexte sécurisé pour les communications SSL.

Plus précisément, j'essaie de faire fonctionner les notifications à distance sur iOS. J'utilise un module, appelé node-apn qui lance cette erreur:

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)

Cela semble être une erreur générique et n'est pas vraiment lié à APN spécifiquement.

39
MrQuiw

En effet, vous avez spécifié une phrase secrète lors de la génération du certificat. Il s'agit d'un mot de passe qui doit être fourni par toute personne souhaitant l'utiliser.

L'ajout d'un champ de phrase secrète aux informations d'identification résout le problème.

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

var httpsServer = https.createServer(credentials, app);
79
Gang Su

La commande suivante générera une clé non chiffrée, vous n'aurez donc pas besoin de fournir de phrase secrète:

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

Cette commande vous demandera la phrase secrète.

8
Daniel

Utilisez-les pour générer pem.

openssl genrsa -out server-key.pem 1024 openssl req -new -key server-key.pem -out server-csr.pem openssl x509 -req -in server-csr.pem -signkey server-key.pem -out server-cert.pem

0