Je déconne avec le formulaire de connexion en ce moment avec node.js, j’ai essayé de créer une clé pem et csr en utilisant
openssl req -newkey rsa:2048 -new -nodes -keyout key.pem -out csr.pem
Cependant, des erreurs se sont produites lors de l'exécution du noeud server.js
Voici mon server.js
var http = require('http'),
express = require('express'),
UserServer = require('./lib/user-server');
var https = require('https');
var fs = require('fs');
var options = {
key: fs.readFileSync('./key.pem', 'utf8'),
cert: fs.readFileSync('./csr.pem', 'utf8')
};
var app = express();
app.configure(function(){
app.use(express.bodyParser());
app.use(app.router);
app.use(express.static(__dirname + '/public'));
});
var httpserver = http.createServer(app).listen('3004', '127.0.0.1');
var https_server = https.createServer(options, app).listen('3005', '127.0.0.1');
UserServer.listen(https_server);
Voici l'erreur
crypto.js:104
if (options.cert) c.context.setCert(options.cert);
^
Error: error:0906D06C:PEM routines:PEM_read_bio:no start line
at Object.exports.createCredentials (crypto.js:104:31)
at Server (tls.js:1107:28)
at new Server (https.js:35:14)
at Object.exports.createServer (https.js:54:10)
J'ai essayé de courir
openssl x509 -text -inform DER -in key.pem
Il donne
unable to load certificate
140735208206812:error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag:tasn_dec.c:1319:
140735208206812:error:0D07803A:asn1 encoding routines:ASN1_ITEM_EX_D2I:nested asn1 error:tasn_dec.c:381:Type=X509
Je ne sais pas exactement ce que signifie l'erreur car mon fichier de chiffrement est déjà un fichier .pem; toute aide serait donc la bienvenue.
Merci
Vous utilisez probablement le mauvais fichier de certificat, vous devez générer un certificat auto-signé, comme suit:
openssl req -newkey rsa:2048 -new -nodes -keyout key.pem -out csr.pem
openssl x509 -req -days 365 -in csr.pem -signkey key.pem -out server.crt
puis utilisez le server.crt
var options = {
key: fs.readFileSync('./csr.pem', 'utf8'),
cert: fs.readFileSync('./server.crt', 'utf8')
};
J'ai supprimé cette erreur en écrivant le code suivant
Terminal ouvert
openssl req -newkey rsa: 2048 -nouveau -nodes -keyout key.pem -out csr.pem
openssl x509 -req -days 365 -in csr.pem -signkey clé.pem -out serveur.crt
Maintenant, utilisez les fichiers server.crt et key.pem
fichier app.js ou server.js
var https = require('https');
var https_options = {
key: fs.readFileSync('key.pem', 'utf8'),
cert: fs.readFileSync('server.crt', 'utf8')
};
var server = https.createServer(https_options, app).listen(PORT);
console.log('HTTPS Server listening on %s:%s', Host, PORT);
Cela fonctionne mais le certificat n'est pas approuvé. Vous pouvez afficher l'image dans un fichier image.
A été confronté au même problème Dans mon cas, j'ai changé le paramètre d'option de cert à pfx et supprimé le codage utf8.
avant:
var options = {
hostname : 'localhost',
path : '/',
method : 'POST',
cert: fs.readFileSync(testCert, 'utf8'),
passphrase:passphrase,
agent:false,
rejectUnauthorized:false
};
après:
var options = {
hostname : 'localhost',
path : '/',
method : 'POST',
pfx: fs.readFileSync(testCert),
passphrase:passphrase,
agent:false,
rejectUnauthorized:false
};
J'imagine que c'est parce que votre certificat de nodejs a expiré. Tapez cette ligne:npm set registry http://registry.npmjs.org/
et après cela, essayez à nouveau avec npm install. Cela a effectivement résolu mon problème.
Pour moi, le problème était que j'avais la clé et le certificat échangés.
var options = {
key: fs.readFileSync('/etc/letsencrypt/live/mysite.com/privkey.pem'),
cert: fs.readFileSync('/etc/letsencrypt/live/mysite.com/fullchain.pem'),
ca: fs.readFileSync('/etc/letsencrypt/live/mysite.com/chain.pem')
};
En fait, je viens d'avoir ce même message d'erreur.
Le problème était que j'avais key
et cert
fichiers échangés dans l'objet de configuration.
Si vous vous connectez le
var options = {
key: fs.readFileSync('./key.pem', 'utf8'),
cert: fs.readFileSync('./csr.pem', 'utf8')
};
Vous remarquerez peut-être que des caractères non valides sont dus à un codage incorrect.
Si vous utilisez Windows, vous devez vous assurer que les fichiers de certificat csr.pem et key.pem ne comportent pas de fin de ligne de style unix. Openssl générera les fichiers de clés avec des fins de ligne de style unix. Vous pouvez convertir ces fichiers au format dos en utilisant un utilitaire tel que unix2dos ou un éditeur de texte tel que notepad ++