Comment puis-je fournir un certificat SSL avec create-réagir-app?
Je suis en train d'accueillir un réagir application que j'ai créé et testé localement à l'aide de l'facebook passe-partout.
Le client app interagit avec une API que j'ai faite à l'aide de node.js et avec qui je n'avais aucun problème de configuration d'une connexion sécurisée (avec un node.js client envoi de mon certificat SSL, pour les tests).
Cependant, je rencontre des difficultés lors de l'utilisation de réagir à envoyer mon certificat SSL au lieu d'une auto-signé une qui me fait rencontrer cette erreur à l'aide de chrome et d'essayer d'accéder à https://example.net:3000 :
Votre connexion n'est pas privée (NET:ERR_CERT_AUTHORITY_INVALID)
La documentation n'a pas assez de m'aider:
Noter que le serveur utilise un certificat auto-signé, de sorte que votre navigateur web sera presque certainement afficher un avertissement lors de l'accès à la page.
https://github.com/facebookincubator/create-react-app/blob/master/packages/react-scripts/template/README.md#using-https-in-development
Comment puis-je utiliser mon propre certificat SSL (que j'utilise déjà sur une autre application sur mon domaine et fonctionne comme un charme) à la place de cette auto-signé un ? Ai-je raté quelque chose ?
Vous devez vous connecter pour publier un commentaire.
Votre serveur qui sert de fichiers à partir de ce port doit être configuré pour l'utilisation de votre certificat SSL. J'imagine que vous l'utilisez webpack-dev-serveur sur ce port (c'est ce que
npm start
n'en créez-réagir-app), et peut-être un autre serveur (apache, nginx, etc) sur le port 80?Vous pouvez servir vos fichiers compilés à l'aide de votre déjà configuré le serveur, ou configurer webpack-dev-serveur pour l'utilisation de votre certificat SSL.
Pour ce faire, vous pouvez utiliser webpack-dev-serveur
--cert
option. Voir https://webpack.github.io/docs/webpack-dev-server.htmlSi vous voulez faire cela à l'aide de mnp début, ce qui appelle une custom script de démarrage, vous devrez éditer le script de démarrage. Vous devrez peut-être utiliser le
eject
première commande, qui exporte tous les config de code dans votre repo afin que vous pouvez le modifier.Voici le code source du script de lancement: https://github.com/facebookincubator/create-react-app/blob/master/packages/react-scripts/scripts/start.js#L230
Je tiens également à noter que webpack-dev-serveur n'est pas destiné à être utilisé dans un environnement de production.
Amusez-vous!
react-app-rewired
—voir github.com/timarney/react-app-rewired. J'ai trouvé que, pour obtenir que cela fonctionne, j'ai encore besoin de définir la variable d'environnement HTTPS pourtrue
Éjection
create-react-app
n'est pas recommandée, car vous ne pourrez facilement le mettre à jour. En outre, vous pouvez facilement avoir certificat SSL valide sans éjecter.Vous aurez besoin de la copie de votre certificat de
node_modules/webpack-dev-server/ssl/server.pem
. L'inconvénient est que vous devez copier manuellement le fichier. Cependant, une façon de faire ce fluide est d'ajouter unpostinstall
script qui crée un lien symbolique.Voici une script j'ai créé:
Votre
package.json
devrait ressembler à quelque chose comme:node_modules/webpack-dev-server/ssl/
dir, puis d'exécuternpm run build && serve -s build
. OU,npm run postinstall && npm run build && serve -s build
... est-ce exact?node_modules
) qui contient votreserver.pem
et le fichier de script. Ensuite, vous ajoutez lespostinstall
script à votrepackage.json
. Le script s'exécute automatiquement après chaquenpm install
, donc pas besoin de changer votre flux de travail. HTH../local-certificate
à.gitignore
?De s'étendre sur les Elad réponse:
/cert/server.pem
)./cert
. Je puis ajouter l'prestart
script pour mon colis.json:cp -f ./cert/server.pem ./node_modules/webpack-dev-server/ssl
. L'avantage de l'utilisation de devcert est que vous obtenez un certificat signé vs auto-signé et de de sorte que vous ne verrez pas les avertissements ou des erreurs dans Chrome.C'est ce que j'ai fait:
Puis je double clic et importés:
rootCA.pem
etserver.pem
Puis j'ai modifié
package.json
:De très importantes sources: