Comment puis-je utiliser un certificat auto-signé pour un HTTPS Node.js le serveur?

J'ai commencé à écrire un wrapper pour une API qui exige que toutes les demandes soient sur HTTPS. Au lieu de faire des requêtes à l'API réel alors que je suis en train d'élaborer et de le tester, je voudrais que mon propre serveur localement qui se moque de l'réponses.

Je suis confus sur la façon de générer les certificats-je besoin de créer un serveur HTTPS et d'envoyer des demandes.

Mon serveur ressemble à quelque chose comme ceci:

var options = {
  key: fs.readFileSync('./key.pem'),
  cert: fs.readFileSync('./cert.pem')
};

https.createServer(options, function(req, res) {
  res.writeHead(200);
  res.end('OK\n');
}).listen(8000);

Le pem fichiers ont été générés avec:

openssl genrsa 1024 > key.pem
openssl req -x509 -new -key key.pem > cert.pem

Et une demande ressemble à quelque chose comme ceci:

var options = {
  host: 'localhost',
  port: 8000,
  path: '/api/v1/test'
};

https.request(options, function(res) {
  res.pipe(process.stdout);
}).end();

Avec cette configuration, j'obtiens Error: DEPTH_ZERO_SELF_SIGNED_CERT, donc je pense que j'ai besoin d'ajouter un ca option pour la demande.

Donc ma question est comment dois-je générer les suivantes:

  1. Le serveur key?
  2. Le serveur cert?
  3. La ca de la demande?

J'ai lu quelques choses à propos de générer les certificats auto-signés avec openssl, mais ne semble pas possible d'envelopper ma tête autour de lui et de déterminer qui des clés et des certificats à utiliser où dans mon nœud de code.

Mise à jour

L'API fournit un certificat d'autorité de certification à utiliser à la place des valeurs par défaut. Le code suivant fonctionne à l'aide de leur certificat et c'est ce que je veux reproduire localement.

var ca = fs.readFileSync('./certificate.pem');

var options = {
  host: 'example.com',
  path: '/api/v1/test',
  ca: ca
};
options.agent = new https.Agent(options);

https.request(options, function(res) {
  res.pipe(process.stdout);
}).end();
InformationsquelleAutor Brett | 2013-10-29