[MUSIC]
Dans la conférence précédente, nous avons appris sur HTTPS et comment ils peuvent assurer
une communication sécurisée entre le client et le serveur.
Nous avons également appris un peu sur la cryptographie,
assez pour comprendre comment HTTPS fonctionne.
Pour que nous puissions configurer notre serveur HTTP,
nous devons obtenir une clé publique et un certificat.
Nous allons maintenant configurer notre serveur Confusion pour utiliser HTTPS dans cet exercice.
Donc, continuons de l'avant, d'abord pour générer la clé et
le certificat que nous pouvons utiliser pour notre serveur
, puis modifier notre application express pour prendre en charge HTTPS.
Pour commencer cet exercice, accédez au dossier du serveur Confusion.
Et puis dans votre terminal ou fenêtre de commande
, puis allez dans le dossier bin à l'intérieur du dossier serveur Confusion.
Et dans le dossier bin, vous verrez un fichier nommé www.
C' est le dossier où nous allons générer notre clé privée et
ensuite aussi générer le certificat pour
notre serveur HTTPS en utilisant un outil de ligne de commande appelé OpenSSL.
Maintenant, OpenSSL est généralement installé sur les machines Mac OS par défaut.
Pour les machines Windows, vous devrez peut-être télécharger et installer OpenSSL de manière explicite.
Maintenant, j'ai fourni quelques liens dans les instructions pour que vous puissiez aller
chercher OpenSSL.
Je vous ai également fourni un site Web où vous pouvez générer une
clé privée auto-signée et un certificat.
Alors allons-y jeter un coup d'oeil à ça.
Si vous exécutez un ordinateur Windows et
si OpenSSL n'est pas déjà installé.
Ensuite, ce lien fournit des binaires pour
OpenSSL que vous pouvez télécharger et installer sur votre ordinateur Windows.
Donc, ce lien est fourni dans les instructions pour cet exercice.
Donc, en allant là-bas,
vous trouverez plusieurs téléchargements de
distributions liées à OpenSSL tierces que vous pouvez télécharger et installer sur votre ordinateur.
Installez donc l'un d'entre eux afin
de poursuivre cet exercice si vous n'avez pas OpenSSL déjà sur votre machine.
Maintenant, aussi si vous voulez une autre façon de
générer votre clé privée et votre certificat.
Voici un article de blog, un lien vers lequel j'ai déjà fourni dans les instructions,
qui explique également comment configurer votre machine Windows avec
OpenSSL et aussi générer la clé privée et le certificat.
Suivez donc ces étapes pour configurer votre ordinateur Windows pour
générer la clé privée et le certificat.
Maintenant, si vous ne voulez pas installer OpenSSL, voici un lien
vers un site qui vous permet d'
y générer un certificat SSL auto-signé et une clé comme vous le voyez ici.
Donc, un lien vers ce site est également fourni dans l'instruction.
Vous pouvez donc utiliser le serveur pour générer le certificat SSL et la
clé pour votre machine Windows.
Ainsi, n'importe laquelle de ces approches peut être utilisée pour
générer la clé privée et le certificat de votre machine Windows.
Puisque je suis en cours d'exécution sur une machine OSX,
je vais générer ma clé privée et mon certificat en utilisant OpenSSL.
Donc, en allant au terminal, laissez-moi taper openssl genrsa
1024, ce qui signifie que je vais générer une clé privée de taille 1024.
Donc, je vais mettre cela dans un fichier nommé clé privée, et
une fois cela généré, alors nous allons générer le fichier cert.csr correspondant
donc il dira openssl req requête.
Donc, nous demandons un nouveau certificat,
avec la clé private.key, et cela va générer cela.
Cert.csr ici.
Maintenant, lorsque vous générez le cert.csr, il
vous posera quelques questions à remplir.
Vous pouvez accepter les valeurs par défaut ou
vous pouvez remplir vos propres valeurs si vous le souhaitez.
Cela n'a pas vraiment d'importance parce que ce certificat que nous utilisons uniquement dans notre
ordinateur pour tester notre serveur HTTPS.
Alors, laissez-moi vous donner quelques détails.
Je vais laisser quelques choses vides là-bas.
Et cela fonctionnerait très bien,
peu importe que vous remplissiez ces informations ou non.
Donc, une fois que vous faites, votre cert.csr est généré et
à partir de cela, ils vont générer le certificat de distribution, donc
nous allons taper à l'invite de commande
openssl x509 -req -in cert.csr -signkey
private.key -out certificate.pem.
Donc, cela va générer le certificat pour
nous, et donc une fois que vous
aurez terminé ces étapes, lorsque vous regardez votre dossier,
vous verrez que vous avez le private.key,
le cert.csr et certificate.pem là-dedans.
Cela sera nécessaire pour configurer notre serveur HTTPS.
Donc, maintenant pour configurer le serveur HTTPS, allons dans notre éditeur.
Dans l'éditeur, nous allons aller à ce dossier bin ici.
Et dans le dossier bin, vous verrez ce fichier appelé www.
Nous avons brièvement examiné ce dossier dans l'un des exercices précédents.
Maintenant, en entrant dans ce fichier, nous allons maintenant
importer également le module de base HTTPS donc
nous dirons que HTTPS nécessite HTTPS Et
nous aurons également besoin du module de système de fichiers.
Vous avez déjà rencontré le module de système de fichiers plus tôt
dans l'un des exercices.
Donc, nous allons importer ces deux.
Et puis, en descendant ici, nous allons configurer le numéro de port sur lequel notre
serveur HTTPS fonctionnera, donc nous allons dire app.set et
nous allons dire SecPort.
Donc, nous allons mettre en place une variable ici appelée port sécurisé
, puis je vais initialiser ceci au port+443.
Maintenant, pourquoi est-ce que j'utilise ce port+443 ?
Dans un serveur standard, si votre serveur agit en tant que serveur Web,
votre protocole HTTP sera exécuté au port numéro 80 de votre serveur.
Et le HTTP sécurisé fonctionnera sur le port numéro 443.
Maintenant, vous ne voudriez normalement pas utiliser ces ports réservés
dans une application de développement, mais nous le faisons dans ce cours.
Au lieu de cela, comme vous l'avez vu précédemment,
nous avions configuré notre numéro de port sur 3000 où notre serveur HTTP fonctionne.
Donc, je vais exécuter le serveur HTTPS, au port numéro 3443.
Alors 3000 plus 443.
C' est la raison pour laquelle je déclare ce port sécurisé.
Comme port+443, notre serveur HTTPS fonctionnera au numéro de port 443.
Je vais toujours exécuter le serveur HTTP au port 3000,
nous avons déjà créé le serveur HTTP ici dans le WWW, ou plutôt,
cela est généré automatiquement par le générateur express.
Maintenant, puisque le serveur HTTP est déjà configuré,
nous allons maintenant configurer le serveur HTTPS.
Donc, pour configurer le serveur HTTPS, juste après avoir configuré le serveur HTTP.
Maintenant, la raison pour laquelle je vais toujours exécuter le serveur HTTP est que,
si je reçois une requête sur le port du serveur HTTP,
cette requête sera redirigée vers le serveur HTTPS.
Donc, mon serveur ne fera que la demande de service entrant sur les ports HTTPS.
Mais si par hasard quelqu'un accède au serveur sur le port HTTP,
je redirigerai cette requête vers le port HTTPS.
Nous le ferons un peu plus tard.
Tout d'abord, nous allons configurer le serveur HTTPS.
Donc, pour configurer le serveur HTTPS, ici,
je vais déclarer quelques options ici pour mon serveur HTTPS.
Rappelons maintenant que pour un serveur HTTPS, nous devons configurer la clé privée et
le certificat que mon serveur HTTPS va utiliser.
Donc, dans les options, je vais spécifier la clé,
puis j'utiliserai le système de fichiers, puis je dirai, ReadFileSync.
Donc, je vais lire ce fichier de manière synchrone afin que je termine la lecture dans le fichier
avant de pouvoir configurer mon serveur HTTPS.
Donc, je vais lire ce fichier à partir de __dirname.
Vous savez déjà pourquoi j'utilise __dirname des
exercices précédents où nous avons vu les cinq modules système utilisés.
Et puis, donc je vais dire __dirname+.
Donc, ici, nous fournissons le chemin vers le private.key.
Maintenant, rappelez-vous que ce www est dans le dossier bin.
Et le private.key est également dans le dossier bin, donc
c'est pourquoi je vais dire dirname+ ceci, donc cela spécifiera
au module de lecture du système de fichiers que le fichier doit être
lu à partir de ce répertoire bin, à partir de ce fichier private.key ici.
Maintenant aussi, nous allons lire dans le certificat ici.
Donc, nous allons dire, cert FS.ReadFileSync.
Donc, il va lire le fichier synchrone ce qui signifie que,
le fichier sera lu complètement avant de passer à cette étape suivante ici.
Et le fichier que nous devons lire est aussi __dirname+.
Et nous dirons, /certificate.pem, que nous avons généré plus tôt.
Et cela devrait être une virgule, et je ne devrais pas mettre un point-virgule là,
car c'est un objet JavaScript que nous avons défini a les options.
Donc, une fois que nous définissons l'objet JavaScript, puis nous allons configurer le serveur sécurisé.
Donc, nous allons dire var SecureServer https.
Rappelez-vous que, maintenant, nous allons utiliser https, puis nous dirons CreateServer.
Rappelons donc que pour HTTP, nous avons configuré notre serveur comme celui-ci ici.
Pour le serveur sécurisé, nous allons créer cela en disant,
var SecureServer Https.CreateServer, puis nous allons fournir
les options que nous venons de configurer et puis la deuxième partie est l'application ici.
Donc, mon SecureServer va bien,
va également être disponible pour mon application d'accéder.
Maintenant en bas ici, je vais configurer
le SecureServer.Listen sur le numéro de port,
SecPort.
Rappelons que nous avions fait ici un app.set SecPort, donc
nous définissons cette valeur ici sur le numéro de port sécurisé.
Et puis en bas ici, nous disons app.get.
Donc, cela signifie que cette valeur que nous avons
configurée plus tôt sera disponible
pour nous pour configurer notre port d'écoute pour
notre serveur, app.get SecPort,
puis fournir la fonction de rappel ici.
Et à l'intérieur de cette fonction de rappel, nous dirons,
console.log Server écoute sur le port.
Faisons l'écoute du serveur sécurisé sur le port
Et puis, une fois que nous configurons le SecureServer,
alors nous devons, Voir, SecureServer sur.
Donc, si le SecureServer reçoit un événement d'erreur,
alors nous aimerons que OnError, qui est configuré ci-dessous, gère cela.
Et puis nous dirons, SecureServer.on.
Écouter, donc si vous recevez l'événement d'écoute,
alors nous appellerons le OnListening.
Maintenant, où sont configurés OnError et OnListening ?
Si vous descendez dans le code ici, en bas ici.
Vous spécifiez ces deux fonctions que OnError fonction ici,
puis la fonction OnListening ici.
Nous allons donc utiliser ces deux fonctions pour configurer notre serveur ici.
Donc, avec ces modifications,
mon serveur est maintenant configuré pour exécuter également SecureServer au port numéro 443.
Nous avons déjà configuré le serveur HTTP standard ici.
Donc, une fois que nous avons fait ces deux, alors, notre prochaine mise à jour sera dans le fichier app.js.
Donc, aller au fichier app.js Ce que je vais faire est de configurer ce
serveur de sorte qu'il redirige tout trafic venant vers le port non sécurisé.
C' est le numéro de port 3 000, il redirigera cette demande vers le port sécurisé.
Donc, pour ce faire, laissez-moi mettre en place un middleware juste après que nous avons déclaré l'app.express.
Donc, ici, nous allons dire, app.all, donc ce qui signifie, pour
toutes les demandes, quel que soit le chemin dans la requête.
Propre requête entrant, je vais rediriger cela vers,
Donc nous allons dire rec, res, next, et
la fonction de rappel étant définie ici.
Et donc nous allons, Déclarer la fonction à l'intérieur ici.
Et nous dirons, si req.secure.
Donc, si la demande entrante est déjà une demande sécurisée,
alors comment le savons-nous ?
Si la requête entrante est déjà une requête sécurisée, alors l'
objet requête portera cet indicateur appelé secure qui sera déjà défini sur true.
Si la requête entrante n'est pas du tout un port sécurisé
mais arrive au port non sécurisé, alors le write.secure ne sera pas défini.
Donc, c'est ce dont je m'occupe.
S' il arrive déjà au port sécurisé, je vais juste aller de l'avant
sans rien faire parce qu'il arrive déjà au port sécurisé.
Donc je peux dire simplement, ensuite.
Sinon, alors nous dirons, revenez ensuite.
Sinon, de sorte que le contraire se produira,
Quand il vient au port non sécurisé.
Donc, dans ce cas, je dirai res.redirect.
Ainsi, la méthode de redirection est disponible,
qui redirige la requête entrante vers une autre URL.
Donc, je vais rediriger cette requête non sécurisée vers https ://.
Donc, je redirige cette requête vers le nom req.host.
Ainsi, la requête portera déjà le nom d'hôte.
Donc, parce que cela arrive sur le même serveur, donc
je redirige vers le même serveur.
Et puis nous dirons +,
; + app.get.
Rappelons maintenant que nous avions déjà configuré le port sécurisé dans l'app.get there.
Donc, nous allons dire app.get SecPort + req.url.
Maintenant, ce req.url contiendra le reste du chemin à l'
exception du nom d'hôte et du numéro de port.
Donc, si vous dites un localhost:3000,
ce localhost:3000 sera couvert par la première partie et
cela sera redirigé vers localhost:3443 par cette configuration ici.
Et puis, le reste, le req.url contiendra le chemin réel sur le serveur.
Donc, nous l'ajoutons simplement au chemin de redirection, et
c'est le chemin vers lequel je vais rediriger le message de demande entrante.
Donc, une fois que je redirige le message de demande entrante
, mon message de demande sera redirigé vers le port sécurisé.
Et un dernier changement pourrait res.rediriger,
nous allons ajouter le code d'état écrit comme 307.
307 représente ici que la ressource cible réside temporairement sous une
URL différente.
Et l'agent utilisateur ne doit pas modifier la méthode de requête s'il
se transforme en redirection automatique vers cette URL.
Donc, je m'attends à ce que l'agent utilisateur réessaie
avec la même méthode qu'ils ont utilisée pour le point de fin d'origine.
C' est tout, que le changement que je dois faire dans le fichier app.js.
Donc, après avoir changé le app.js, et le www, et
également généré la clé et le certificat,
nous pouvons maintenant enregistrer les changements, et aller et démarrer notre serveur.
Accédez au terminal ou à la fenêtre de commande, assurez-vous que vous êtes de
retour dans votre dossier ConfusionServer, puis démarrez le serveur.
Donc, je suis au terminal de taper npm start.
Et votre serveur sera opérationnel, et vous remarquez également que nous sommes en train d'
imprimer ici disant, Secure Server écoute sur le port numéro 3443 ici.
Pour accentuer le serveur sécurisé, accédez à un navigateur comme Chrome ici.
Et puis, laissez-moi d'abord accéder au serveur sécurisé à
localhost : 3443 qui est l'endroit où mon serveur sécurisé est en cours d'exécution.
Et notez que lorsque j'essaie le https://localhost3443 dans le navigateur,
il viendra avec ce message ici disant, Votre connexion n'est pas privée.
Évidemment, parce que le certificat que nous utilisons actuellement
est un certificat auto-signé.
Et ceci n'est pas reconnu par Chrome comme un certificat valide.
Mais comme nous savons ce que nous faisons, il est normal pour nous d'accepter
que nous allons permettre de passer à ce serveur particulier.
Maintenant, je vous conseille fortement de ne jamais le faire sur
n'importe quel site qui vient avec la suggestion.
Nous le faisons spécifiquement dans cet exercice parce que
nous savons exactement où se trouve le serveur, et
nous savons que nous avons explicitement configuré le serveur nous-mêmes.
Mais si un autre site Web arrive avec ce message, je
vous conseille fortement de ne pas accepter la suggestion et de procéder à l'accès au serveur.
Donc, vous devriez revenir à la sécurité si jamais vous voyez ceci ou sur n'importe quel autre site Web.
Mais puisque nous savons que c'est notre propre serveur, je vais passer à
l'hôte local ici, et vous verrez que nous accédons au serveur Express.
Et aussi, vous remarqueriez ici
que votre navigateur vous montre que vous accédez à un serveur non sécurisé.
Lorsque vous cliquez dessus, vous verrez
ce message indiquant que votre connexion au site n'est pas sécurisée.
Mais nous savons que puisque nous exécutons le serveur nous-mêmes, c'est normal de le faire.
C' est ainsi que vous accédez au serveur HTTPS.
Maintenant, laissez-moi essayer d'accéder au même serveur HTTP mais, laissez-moi accéder au,
Standard localhost : 3000.
C' est là que nos serveurs non sécurisés sont au serveur HTTP normal est en cours d'exécution.
Donc, quand j'essaie d'accéder à ce localhost HTTP : 3000,
alors vous voyez immédiatement que mon serveur me redirigera vers le serveur sécurisé.
Ainsi, votre serveur que nous venons de configurer
s'assure que vous accéderez toujours au serveur sur son port sécurisé.
Cela garantit également le fait que, lorsque vous échangez,
lorsque vous envoyez vos informations d'identification, etc.,
tous les échanges des informations d'identification dans l'en-tête du message.
Et aussi lorsque vous vous connectez avec l'authentification locale, tout cela se fait de
manière sécurisée dans un canal crypté entre votre client et le serveur.
Donc, maintenant, nous avons configuré notre serveur pour être un serveur HTTPS sécurisé.
Avec cela, nous complétons cet exercice.
Dans cet exercice, nous avons appris comment configurer un serveur HTTP sécurisé ou
utiliser le protocole HTTPS.
Avec cela, nous complétons cet exercice.
C' est le bon moment pour vous de faire un commit git avec le message, HTTPS.
[ MUSIQUE]