web-dev-qa-db-fra.com

Comment créer des fichiers .pem pour un serveur Web https

J'utilise le framework Express dans Node.js pour créer un serveur Web. Je veux que le transport soit basé sur SSL.

Le code pour créer le serveur Web https est comme ci-dessous.

var app = express.createServer({
  key: fs.readFileSync('./conf/key.pem'),
  cert: fs.readFileSync('./conf/cert.pem')
});
module.exports = app;

Question: Comment créer le key.pem et le cert.pem requis par express?

83
Jeffrey

Les deux fichiers dont vous avez besoin sont un certificat SSL codé PEM et une clé privée. Les certificats et les clés PEM codés sont du texte codé Base64 avec des délimiteurs de début/fin qui ressemblent à -----BEGIN RSA PRIVATE KEY----- ou similaire.

Pour créer un certificat SSL, vous devez d’abord générer une clé privée et une demande de signature de certificat, ou CSR (qui contient également votre clé publique). Vous pouvez le faire de différentes façons, mais voici comment cela fonctionne dans OpenSSL.

openssl req -newkey rsa:2048 -new -nodes -keyout key.pem -out csr.pem

Cela vous obligera à entrer une invite interactive pour générer une clé privée RSA 2048 bits et une CSR contenant toutes les informations que vous choisissez d'entrer aux invites. (Remarque: le nom commun est l'endroit où vous voulez placer le nom de domaine que vous utiliserez pour accéder à votre site.) Une fois que vous avez terminé, vous devez normalement envoyer cette CSR à un certificat de confiance. et une fois qu'ils ont validé votre demande, vous recevrez un certificat.

Si vous ne vous souciez pas de la fiabilité de votre certificat (généralement du point de vue du développement), vous pouvez simplement créer un certificat auto-signé. Pour ce faire, nous pouvons utiliser presque la même ligne, mais nous allons passer deux paramètres supplémentaires.

openssl req -newkey rsa:2048 -new -nodes -x509 -days 3650 -keyout key.pem -out cert.pem

Cela vous donnera un certificat (valable 10 ans) et une paire de clés que vous pourrez utiliser dans l'extrait de code que vous avez publié.

183
Paul Kehrer

Suivez simplement cette procédure:

  1. créez le dossier dans lequel vous souhaitez stocker votre clé et votre certificat:

    mkdir conf


  1. allez dans ce répertoire:

    cd conf


  1. prenez ceci ca.cnf fichier à utiliser comme raccourci de configuration:

    wget https://raw.githubusercontent.com/anders94/https-authorized-clients/master/keys/ca.cnf


  1. créez une nouvelle autorité de certification à l'aide de cette configuration:

    openssl req -new -x509 -days 9999 -config ca.cnf -keyout ca-key.pem -out ca-cert.pem


  1. maintenant que nous avons notre autorité de certification en ca-key.pem et ca-cert.pem, générons une clé privée pour le serveur:

    openssl genrsa -out key.pem 4096


  1. prenez ceci server.cnf fichier à utiliser comme raccourci de configuration:

    wget https://raw.githubusercontent.com/anders94/https-authorized-clients/master/keys/server.cnf


  1. générer la demande de signature de certificat en utilisant cette configuration:

    openssl req -new -config server.cnf -key key.pem -out csr.pem


  1. signer la demande:

    openssl x509 -req -extfile server.cnf -days 999 -passin "pass:password" -in csr.pem -CA ca-cert.pem -CAkey ca-key.pem -CAcreateserial -out cert.pem

J'ai trouvé cette procédure ici , avec plus d'informations sur l'utilisation de ces certificats.

11
John Slegers