Comment autoriser HTTPS pour Apache sur localhost?
193
On m'a demandé de configurer HTTPS avec un certificat auto-signé sur Apache sur localhost, mais comment puis-je faire cela? Je n'ai aucune idée du tout.
Utilisez Serveo ! ssh -R youruniquesubdomain:80:localhost:3000 serveo.netEntrez votre sous-domaine et votre numéro de port et vous êtes prêt à continuerhttps://youruniquesubdomain.serveo.net
totymedli
Réponses:
135
Je viens de tenter ceci - j'avais besoin de tester du code de développement sur mon hôte local Apache sous Windows . C'était WAAAY plus difficile qu'il ne devrait l'être. Mais voici les étapes qui ont réussi à fonctionner après beaucoup d'épilation ...
J'ai trouvé que mon installation Apache est fournie, openssl.exece qui est utile. Si vous n'avez pas de copie, vous devrez la télécharger. Ma copie était dans le Apache2\bindossier, c'est ainsi que je la référence ci-dessous.
Pas:
Assurez-vous que vous disposez des autorisations d'écriture sur votre dossier Apache conf
Ouvrez une invite de commande dans le Apache2\confdossier
Type ..\bin\openssl req -config openssl.cnf -new -out blarg.csr -keyout blarg.pem
Vous pouvez laisser toutes les questions vides sauf:
PEM Passphrase: un mot de passe temporaire tel que "mot de passe"
Nom commun: le nom d'hôte de votre serveur
Lorsque cela est terminé, tapez ..\bin\openssl rsa -in blarg.pem -out blarg.key
Ouvrez le conf\httpd.conffichier Apache et assurez-vous que le module SSL est activé - il ne devrait y avoir aucun hachage au début de cette ligne: LoadModule ssl_module modules/mod_ssl.so
Certaines installations Apache placent la configuration SSL dans un fichier séparé. Si tel est le cas, assurez-vous que le fichier de configuration SSL est inclus. Dans mon cas, j'ai dû décommenter cette ligne: Include conf/extra/httpd-ssl.conf
Dans la configuration SSL, httpd-ssl.confj'ai dû mettre à jour les lignes suivantes:
Mettre SSLSessionCache "shmcb:C:\Program Files (x86)\Zend\Apache2/logs/ssl_scache(512000)" à jour vers SSLSessionCache "shmcb:C:/Progra\~2/Zend/Apache2/logs/ssl_scache(512000)" (Les crochets dans le chemin confondent le module, nous devons donc les échapper)
DocumentRoot - définissez ceci dans le dossier de vos fichiers Web
ServerName - le nom d'hôte du serveur
SSLCertificateFile "conf/blarg.cert"
SSLCertificateKeyFile "conf/blarg.key"
Redémarrez Apache.
Essayez de charger https://localhost/dans votre navigateur.
J'espère que vous êtes arrivé jusqu'ici. N'hésitez pas à mettre à jour cet article avec toute autre information utile.
(Captures d'écran fournies par Neil Obremski et son article utile - bien que maintenant assez obsolète.)
Merci. J'ai également dû modifier les directives ErrorLog, TransferLog et CustomLog en chemins valides, sinon Apache ne démarrerait pas.
Tamlyn
1
Pour une raison quelconque, les instructions ne fonctionnent plus ou sont incomplètes
Jacobian
6
J'ai également dû décommenter ce qui suit dans mon httpd.conf pour que cela fonctionne: LoadModule socache_shmcb_module modules / mod_socache_shmcb.so
erik
1
J'ai fait deux autres étapes pour le faire fonctionner, ajouter le module LoadModule socache_shmcb_module modules / mod_socache_shmcb.so et dans httpd-ssl.conf je corrige le chemin du journal ssl à la ligne 250, CustomLog ".apache24 / logs / ssl_request.log" \
Wasim A .
5
Afin de générer les fichiers .pem et .key, j'ai dû définir 2 variables d'environnement à l'étape 2: définissez OPENSSL_CONF = C: \ path \ to \ apache \ Apache2.4.4 \ conf \ openssl.cnf set RANDFILE = C: \ chemin \ vers \ apache \ Apache2.4.4 \ conf \ .rnd
eosphere
57
J'utilise ngrok ( https://ngrok.com/ ) pour cela. ngrok est un outil de ligne de commande et crée un tunnel pour localhost. Il crée à la fois une connexion http et https. Après l'avoir téléchargé, la commande suivante doit être exécutée:
ngrok http 80
(Dans la version 2, la syntaxe est: ngrok http 80. Dans la version 2, n'importe quel port peut être tunnelé.)
@sudip, est-ce que le code open source de ngrok fonctionne de telle manière que nous pouvons l'héberger sur notre propre serveur sans modification? Sinon, c'est à peu près un showstopper car il n'est pas correct de rediriger les demandes des utilisateurs vers un hôte externe comme ngrok.
Pacerier
2
@Pacerier Je n'ai pas l'intention de l'utiliser sur le serveur. Je l'utilise sur localhost (Bcz mon fournisseur de réseau me donne une adresse IP dynamique). Je l'ai utilisé pour la première fois pour les tests IPN paypal et cela a parfaitement fonctionné. Je me demande pourquoi quelqu'un va l'utiliser sur le serveur et dans quel but.
sudip
@sudip, Le but est évident, Permettre au code qui fonctionne sur HTTP de fonctionner également avec HTTPS sans codage supplémentaire nécessaire.
Pacerier
1
Bien que cela soit utile, il semble incroyablement peu sûr d'autoriser l'accès à votre machine de développement à Internet ouvert. Utiliser quelque chose comme celui-ci vous ferait virer un employeur soucieux de la sécurité.
Andy M
@YumYumYum. Il était complètement gratuit auparavant dans la version 1. Mais, les ports http et https sont toujours libres dans la version 2 (je ne sais pas s'il existe une restriction de port). Vérifiez le plan gratuit ici: ngrok.com/product#pricing
sudip
24
voici le moyen le plus simple de le faire
copiez d'abord ces fichiers server.crt & server.key (à trouver en pièce jointe) dans votre répertoire apache / conf / ssl
puis ouvrez le fichier httpd.conf et ajoutez la ligne suivante
J'ai dû activer également le module LoadModule ssl_module libexec / apache2 / mod_ssl.so dans le (/etc/apache2/httpd.conf)
Alexey
17
Je me demande à quel point le téléchargement de fichiers * .crt * .key est sûr / dangereux à partir de sources non fiables au lieu de générer les vôtres.
Petr Peller
4
@PetrPeller, nous mettons en place https pour le développement local, alors pourquoi se demander sûr / dangereux
Anil Gupta
7
Une explication sur la façon de générer ces fichiers serait formidable. Parce que télécharger des fichiers à partir d'une source inconnue est une mauvaise pratique, mais aussi parce que ce type de liens se rompra à un moment donné.
Afin de protéger la sécurité des informations envoyées vers et depuis votre serveur Web, il est judicieux d'activer le cryptage de la communication entre les clients et le serveur. Ceci est souvent appelé SSL .
Alors configurons HTTPS avec un certificat auto-signé sur Apache2. Je vais énumérer les étapes à suivre:
Installez le serveur Web apache2 sur votre machine. Pour la machine Linux, ouvrez le terminal et tapez
sudo apt-get installer apache2
Après une installation réussie, vérifiez l'état du service apache2 en exécutant la commande
Vérifiez que vous obtenez la page par défaut pour apache2 comme ceci.
Pour crypter une connexion Web, nous avons besoin d'un certificat de CA (autorité de certification) ou nous pouvons utiliser des certificats auto-signés. Créons un certificat auto-signé à l'aide de la commande suivante.
Veuillez remplir les informations en conséquence comme indiqué ci-dessous.
mykey.key et mycert.pem doivent être créés dans votre répertoire de travail actuel.
Ce serait bien de déplacer les certificats et les clés à un endroit commun et il sera facile pour le serveur Web apache2 de les trouver. Alors exécutons les commandes suivantes
sudo cp mycert.pem / etc / ssl / certs
sudo cp mykey.key / etc / ssl / private
Activons le mode SSL sur votre serveur
sudo a2enmod ssl
Il devrait sortir comme ça
Configurons apache2 pour utiliser le certificat et la clé auto-signés que nous avons générés ci-dessus.
sudo vi /etc/apache2/sites-available/default-ssl.conf
Veuillez trouver ces deux lignes et les remplacer par vos chemins cert et key.
Initiale
Final
Activer le site
cd / etc / apache2 / sites-disponibles /
sudo a2ensite default-ssl.conf
Redémarrez le service apache2
redémarrage du service sudo apache2
Vérifiez le serveur Web Apache2 sur HTTPS. Ouvrez à nouveau votre navigateur et saisissez
Il devrait afficher quelque chose comme celui-ci avec un avertissement que la page que vous êtes sur le point de consulter n'est pas sécurisée car nous avons configuré le serveur avec un certificat auto-signé.
Félicitations, vous avez configuré votre apache2 avec un point de terminaison HTTPS, cliquez maintenant sur avancé -> ajouter une exception -> confirmer l'exception de sécurité , vous verrez à nouveau la page par défaut.
Je préfère ne modifier aucun fichier de configuration si je peux, donc je suis parti default-ssl.conftel quel. J'étais sur le point de renommer mycertpour , ssl-cert-snakeoilmais ce fichier existe déjà si je viens d' utiliser ça! J'ai donc pu sauter en toute sécurité deux étapes sur Debian.
Rolf
@Rolf Je suis d'accord avec vous mais en production, c'est toujours le cas d'utiliser un nouveau certificat et une nouvelle clé. Donc, juste pour montrer comment ils peuvent être créés, j'ai ajouté 2 étapes supplémentaires pour Debian. Merci :)
Dinesh Kumar
Puis-je ajouter mon certificat auto-signé en tant qu'autorité de certification, pour éviter de voir des avertissements?
Aaron Franke
9
Windows + Apache 2.4, par exemple:
décommentez ssl_module dans votre httpd.conffichier.
LoadModule ssl_module modules/mod_ssl.so
écoutez le port 443 tout comme le port 80 dans votre httpd.conffichier.
Listen 80
Listen 443
uncomment Inclure les hôtes virtuels dans votre httpd.conffichier.
# Virtual hosts
Include conf/extra/httpd-vhosts.conf
ajoutez VirtualHost dans votre conf/extra/httpd-vhosts.conf
<VirtualHost _default_:443>
DocumentRoot "D:/www" #your site directory path
ServerName localhost
#ServerAlias localhost.com localhost2.com
SSLEngine on
SSLCertificateFile "${SRVROOT}/conf/ssl/server.crt"
SSLCertificateKeyFile "${SRVROOT}/conf/ssl/server.key"
<Directory "D:/www">
Options -Indexes +FollowSymLinks +ExecCGI
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
seulement le numéro de port 443etSSL...... lignes sont différents de la configuration http normale.
enregistrez votre fichier de configuration et redémarrez le service apache. alors vous pouvez visiter https: // localhost /
Le navigateur Web vous avertira que ce n'est pas sûr la première fois, choisissez simplement continuer.
Cela a fonctionné pour moi sur XP Home, Apache 2.4. Copie des 2 fichiers de certificat du post précédent (par Anil Gupta). Mod_ssl non commenté et inclus httpd-vhosts.conf dans httpd.conf, ajout de la directive VirtualHost d'Anil Gupta (avec quelques chemins ajustés) dans httpd-vhosts.conf.
jogi99
7
C'est en fait assez simple, en supposant que vous ayez une installation openssl à portée de main. (Sur quelle plateforme êtes-vous?)
En supposant que vous soyez sous linux / solaris / mac os / x, le mini-HOWTO Apache SSL / TLS de Van a une excellente procédure que je ne reproduirai pas ici.
Cependant, le résumé analytique est que vous devez créer un certificat auto-signé. Puisque vous exécutez apache pour localhost vraisemblablement pour le développement (c'est-à-dire pas un serveur Web public), vous saurez que vous pouvez faire confiance au certificat auto-signé et ignorer les avertissements que votre navigateur vous lancera.
Salut, je travaille sur le système d'exploitation Windows. Et quant au certificat auto-signé, dois-je le télécharger ou par tout autre moyen?
KennC.
3
Nan. Vous créerez vous-même le certificat auto-signé. Avez-vous la configuration apache httpd + ssl? Vous aurez besoin du ssl pour ce faire. Ce site: rubayathasan.com/tutorial/apache-ssl-on-windows a de bonnes informations sur la mise en route de ssl sous Windows. Vous ferez du travail en ligne de commande, mais c'est bon pour vous quand même. :-)
Pete Clark
3
Les liens sont morts :(
kpuccino
Ouais - ça a l'air d'être mort. C'est Internet pour vous ... Cependant, le lien vers le Wiki CentOS ci-dessous référencé par @kayakinkoder est également bon: wiki.centos.org/HowTos/Https Si vous êtes sur un mac, cet article semble également raisonnable: gist. github.com/nrollr/4daba07c67adcb30693e
Pete Clark
4
Cela devrait fonctionner Ubuntu, Mint similaire avec Apache2
Je poste cette réponse car j'ai eu du mal avec cela moi-même et Chrome a mis à jour sa sécurité en exigeant un autre nom de sujet que beaucoup de messages n'ont pas car il n'était pas nécessaire lorsqu'ils ont été publiés comme réponse. Je suppose que WAMP est déjà installé.
Bien que cette partie soit facultative, elle facilite l'exécution des commandes par la suite. Si vous ignorez cette étape, vous devrez fournir le chemin d'accès complet à openssl.exe où vous exécuterez la commande. Si vous préférez le définir, mettez à jour le chemin openssl.exe dans Variables d'environnement.
Variables d'environnement -> Variables système -> Chemin -> Modifier -> Nouveau -> c: \ Program Files \ OpenSSL-Win64 \ bin
**ÉTAPE 3**
Créez un dossier nommé «clé» dans le c:/wamp64/bin/apache/apache2.4.27(your version number)/conf/répertoire.
Créez un fichier de configuration pour votre CA MyCompanyCA.cnf avec le contenu (vous pouvez le modifier selon vos besoins):
[ req ]
distinguished_name = req_distinguished_name
x509_extensions = root_ca
[ req_distinguished_name ]
countryName = Country Name (2 letter code)
countryName_min = 2
countryName_max = 2
stateOrProvinceName = State or Province Name (full name)
localityName = Locality Name (eg, city)
0.organizationName = Organization Name (eg, company)
organizationalUnitName = Organizational Unit Name (eg, section)
commonName = Common Name (eg, fully qualified host name)
commonName_max = 64
emailAddress = Email Address
emailAddress_max = 64
[ root_ca ]
basicConstraints = critical, CA:true
Créez le fichier de configuration des extensions MyCompanyLocalhost.ext pour votre certificat de serveur Web:
Remarque: c'est la partie la plus délicate. Si vous faites une petite erreur lors de l'édition de ce fichier, SSL ne fonctionnera pas. Faites-en une copie avant de le modifier.
** ÉTAPE 8 **
Redémarrez Wamp et Chrome. Localhost est maintenant sécurisé: https: // localhost
2 - Ajoutez les fichiers server.crtet server.keydans le C:/Apache24/conf/ssldossier. Voir les autres réponses sur cette page pour trouver ces 2 fichiers.
Oui, cela fonctionne. J'ai utilisé l'étape 1 - 3 de StephanieQ pour générer le certificat et ensuite "openssl x509 -req -in server.csr -signkey server.key -out server.crt" pour générer le fichier * .crt avec cygwin.
b3wii
Je n'ai pas de httpd.conffichier, dans quel fichier dois-je le mettre? Voici ce qui se passe lorsque je mets ce texte à l'intérieur apache2.conf:Invalid command 'SSLEngine', perhaps misspelled or defined by a module not included in the server configuration
Vous pouvez spécifier un correctif personnalisé, sous-domaine.
Vous pouvez l'héberger vous-même, vous pouvez donc utiliser votre propre domaine et être à l'épreuve du temps, même si le service tombe en panne.
Je ne pouvais pas croire quand j'ai trouvé ce service. Il offre tout et c'est le plus simple à utiliser. S'il y avait un outil aussi simple et indolore pour chaque problème ...
Cela ne fonctionne plus en 2020, la page se charge pour toujours. Cependant, pour une raison quelconque, la commande SSH fonctionne toujours ...?
Aaron Franke le
1
Exécuter Apache sur Windows 10 ici. Je n'ai pas pu faire en sorte que Chrome fasse confiance au certificat créé dans la première réponse de Simon. J'ai fini par utiliser PowerShell pour générer un certificat auto-signé.
Étape 1 - Générer un certificat auto-signé
Dans PowerShell New-SelfSignedCertificate -DnsName "localhost" -CertStoreLocation "cert:\LocalMachine\My"1
Étape 2 - Configurer et exporter le certificat
Tapez Certificatedans la barre de recherche Windows, cliquez sur l' Manage Computer Certificatesélément du panneau de configuration qui est suggéré.
Depuis le programme de gestion des certificats qui apparaît (certlm), vous devriez maintenant voir une localhostclé sous Personal >> Certificates.
J'ai copié ce certificat dans Trusted Root Certification Authorities. Je serai honnête en ce sens que je ne suis pas sûr que ce soit nécessaire.
En sélectionnant le certificat nouvellement copié, double-cliquez dessus (le certificat localhost). Dans le modal Certificat, cliquez sur l' Detailsonglet, puis sur le Copy to File...bouton.
Cela fera apparaître et Assistant d'exportation, j'ai choisi d'exporter la clé privée, cliquez sur Suivant. J'ai également choisi de Export all extended properties(encore une fois, je ne suis pas sûr que c'était nécessaire). J'ai choisi d'utiliser un mot de passe simple ( pass) et le cryptage par défaut. Choisissez un dossier vers lequel exporter et nommez le fichier. Vous pouvez toujours déplacer et renommer le fichier si nécessaire. Par souci de simplicité, copions-le dans votre dossier conf sous votre installation Apache (dans mon cas :) C:\apache\confet nommez le fichier myCert(le fichier résultant sera un .pfxfichier)
Étape 3 - Convertir le .pfxfichier pour une utilisation avec Apache
De là, j'ai essentiellement suivi le tutoriel ici , mais j'ajouterai des instructions ici (ajustées pour nos paramètres) au cas où ce site tomberait en panne.
Ouvrez votre invite de commande dans le /apache/conf/dossier
Exécutez les commandes suivantes: Remarque: Cela suppose que vous avez openssl.exedans le bindossier dans le dossier racine apache (cela doit être standard / par défaut)
Cela vous demandera un mot de passe, entrez ce que vous entrez à l'étape 2 lorsque vous avez exporté le .pfxfichier. Dans mon cas, c'est pass. J'ai entré le même mot de passe pour la phrase PEM et encore une fois pour vérifier. Cela créera un nouveau fichier appelé privateKey.pemdans votre dossier conf.
Encore une fois, vous serez invité à entrer un mot de passe ( Enter pass phrase for privateKey.pem:), utilisez le mot de passe que vous avez défini privateKey.pem. (Dans mon cas, pass)
Vous devriez voir un message qui dit writing RSA keyet un nouveau fichier appelé private.pemdans votre conf/dossier. Ce sera votre SSLCertificateKeyFile.
Maintenant, pour générer le certificat de serveur correspondant. Courir:
Cela vous demandera un mot de passe, entrez ce que vous entrez à l'étape 2 lorsque vous avez exporté le .pfxfichier. Entrez-le et vous aurez maintenant un fichier appelé EntrustCert.pemdans votre confdossier. Ceci est votre SSLCertificateFile
Étape 4 - Configurer httpd.conf
Utilisez les nouveaux fichiers créés comme clé et certificat de votre serveur. Assurez-vous de changer la racine de votre document à l'endroit où se trouvent vos fichiers!
Décommentez (REMARQUE: assurez Include conf/extra/httpd-ssl.conf-vous que c'est là que se trouve le fichier!)
J'ai également des bibliothèques curl et ssl ouvertes incluses:
# load curl and open ssl libraries
LoadFile "C:\php\libeay32.dll"
LoadFile "C:\php\ssleay32.dll"
LoadFile "C:\php\libssh2.dll"
Ces modules ne devraient pas être nécessaires, mais je noterai que je les ai activés: LoadModule rewrite_module modules/mod_rewrite.so LoadModule filter_module modules/mod_filter.so LoadModule deflate_module modules/mod_deflate.so
Étape 5 - Config httpd-ssl.conf
Dans le extra/dossier du conf/dossier, vous devriez voir un fichier appelé httpd-ssl.conf.
5a. Changer leDocumentRoot - Remplacez le DocumentRootpar défaut par le répertoire où se trouvent vos fichiers.
5b. Changer leServerName - Remplacez le ServerNamepar défaut (quelque chose comme www.example.com:443) parlocalhost:443
5c. Modifiez leSSLCertificateFile
changement du SSLCertificateFilede la valeur par défaut ( ${SRVROOT}/conf/server.crt) à${SRVROOT}/conf/EntrustCert.pem
5c. Modifiez leSSLCertificateKeyFile
changement du SSLCertificateKeyFilede la valeur par défaut ( ${SRVROOT}/conf/server.key) à${SRVROOT}/conf/private.pem
Tous ensemble, dans le <VirtualHost _default_:443>tag.
# General setup for the virtual host
DocumentRoot "${SRVROOT}/htdocs/MYSITE"
ServerName localhost:443
ServerAdmin [email protected]
ErrorLog "${SRVROOT}/logs/error.log"
TransferLog "${SRVROOT}/logs/access.log"
# SSL Engine Switch:
# Enable/Disable SSL for this virtual host.
SSLEngine on
# Server Certificate:
# Point SSLCertificateFile at a PEM encoded certificate. If
# the certificate is encrypted, then you will be prompted for a
# pass phrase. Note that a kill -HUP will prompt again. Keep
# in mind that if you have both an RSA and a DSA certificate you
# can configure both in parallel (to also allow the use of DSA
# ciphers, etc.)
# Some ECC cipher suites (http://www.ietf.org/rfc/rfc4492.txt)
# require an ECC certificate which can also be configured in
# parallel.
SSLCertificateFile "${SRVROOT}/conf/EntrustCert.pem"
#SSLCertificateFile "${SRVROOT}/conf/server-dsa.crt"
#SSLCertificateFile "${SRVROOT}/conf/server-ecc.crt"
# Server Private Key:
# If the key is not combined with the certificate, use this
# directive to point at the key file. Keep in mind that if
# you've both a RSA and a DSA private key you can configure
# both in parallel (to also allow the use of DSA ciphers, etc.)
# ECC keys, when in use, can also be configured in parallel
SSLCertificateKeyFile "${SRVROOT}/conf/private.pem"
#SSLCertificateKeyFile "${SRVROOT}/conf/server-dsa.key"
#SSLCertificateKeyFile "${SRVROOT}/conf/server-ecc.key"
Redémarrez Apache
Après avoir apporté ces modifications, vous devriez pouvoir redémarrer Apache et accéder à https: // localhost sans avertissement de sécurité et un petit cadenas!
Remarque: en supposant que vous avez installé openssl .
Enregistrez le code ci-dessous dans un fichier nommé simple-https-server.pydans n'importe quel répertoire dans lequel vous souhaitez exécuter le serveur.
et accédez à la page sur n'importe quel appareil connecté à votre réseau. Ceci est très pratique dans des cas tels que "vous devez tester l'API de géolocalisation HTML5 dans un mobile et Chrome limite l'API uniquement dans les connexions sécurisées".
Je voudrais ajouter quelque chose à la très bonne réponse de @CodeWarrior, qui fonctionne parfaitement sur Chrome, mais pour Firefox a besoin d'une étape supplémentaire.
Étant donné que Firefox ne propose pas de certificats CA comme Windows par défaut, vous devez continuer about:config, faites défiler jusqu'àsecurity.enterprise_roots.enabled et le changer en vrai.
Maintenant, votre certificat devrait être considéré comme valide également sur Firefox.
Bien sûr, ce n'est qu'à des fins de développement, car la confiance SSL est un problème de sécurité critique et ne modifiez ces paramètres que si vous en connaissez les implications.
ssh -R youruniquesubdomain:80:localhost:3000 serveo.net
Entrez votre sous-domaine et votre numéro de port et vous êtes prêt à continuerhttps://youruniquesubdomain.serveo.net
Réponses:
Je viens de tenter ceci - j'avais besoin de tester du code de développement sur mon hôte local Apache sous Windows . C'était WAAAY plus difficile qu'il ne devrait l'être. Mais voici les étapes qui ont réussi à fonctionner après beaucoup d'épilation ...
J'ai trouvé que mon installation Apache est fournie,
openssl.exe
ce qui est utile. Si vous n'avez pas de copie, vous devrez la télécharger. Ma copie était dans leApache2\bin
dossier, c'est ainsi que je la référence ci-dessous.Pas:
Apache2\conf
dossier..\bin\openssl req -config openssl.cnf -new -out blarg.csr -keyout blarg.pem
Vous pouvez laisser toutes les questions vides sauf:
Lorsque cela est terminé, tapez
..\bin\openssl rsa -in blarg.pem -out blarg.key
Générez votre certificat auto-signé en tapant:
..\bin\openssl x509 -in blarg.csr -out blarg.cert -req -signkey blarg.key -days 365
Ouvrez le
conf\httpd.conf
fichier Apache et assurez-vous que le module SSL est activé - il ne devrait y avoir aucun hachage au début de cette ligne:LoadModule ssl_module modules/mod_ssl.so
Certaines installations Apache placent la configuration SSL dans un fichier séparé. Si tel est le cas, assurez-vous que le fichier de configuration SSL est inclus. Dans mon cas, j'ai dû décommenter cette ligne:
Include conf/extra/httpd-ssl.conf
Dans la configuration SSL,
httpd-ssl.conf
j'ai dû mettre à jour les lignes suivantes:SSLSessionCache "shmcb:C:\Program Files (x86)\Zend\Apache2/logs/ssl_scache(512000)"
à jour vers
SSLSessionCache "shmcb:C:/Progra\~2/Zend/Apache2/logs/ssl_scache(512000)"
(Les crochets dans le chemin confondent le module, nous devons donc les échapper)
DocumentRoot
- définissez ceci dans le dossier de vos fichiers WebServerName
- le nom d'hôte du serveurSSLCertificateFile "conf/blarg.cert"
SSLCertificateKeyFile "conf/blarg.key"
Redémarrez Apache.
https://localhost/
dans votre navigateur.J'espère que vous êtes arrivé jusqu'ici. N'hésitez pas à mettre à jour cet article avec toute autre information utile.
(Captures d'écran fournies par Neil Obremski et son article utile - bien que maintenant assez obsolète.)
la source
J'utilise ngrok ( https://ngrok.com/ ) pour cela. ngrok est un outil de ligne de commande et crée un tunnel pour localhost. Il crée à la fois une connexion http et https. Après l'avoir téléchargé, la commande suivante doit être exécutée:
(Dans la version 2, la syntaxe est: ngrok http 80. Dans la version 2, n'importe quel port peut être tunnelé.)
Après quelques secondes, il donnera deux URL:
Désormais, les deux URL pointent vers l'hôte local.
la source
voici le moyen le plus simple de le faire
copiez d'abord ces fichiers server.crt & server.key (à trouver en pièce jointe) dans votre répertoire apache / conf / ssl
puis ouvrez le fichier httpd.conf et ajoutez la ligne suivante
la source
Afin de protéger la sécurité des informations envoyées vers et depuis votre serveur Web, il est judicieux d'activer le cryptage de la communication entre les clients et le serveur. Ceci est souvent appelé SSL .
Alors configurons HTTPS avec un certificat auto-signé sur Apache2. Je vais énumérer les étapes à suivre:
Il devrait sortir
Vérifiez que vous obtenez la page par défaut pour apache2 comme ceci.
Veuillez remplir les informations en conséquence comme indiqué ci-dessous.
mykey.key et mycert.pem doivent être créés dans votre répertoire de travail actuel.
Il devrait sortir comme ça
Veuillez trouver ces deux lignes et les remplacer par vos chemins cert et key.
Initiale
Final
Il devrait afficher quelque chose comme celui-ci avec un avertissement que la page que vous êtes sur le point de consulter n'est pas sécurisée car nous avons configuré le serveur avec un certificat auto-signé.
la source
default-ssl.conf
tel quel. J'étais sur le point de renommermycert
pour ,ssl-cert-snakeoil
mais ce fichier existe déjà si je viens d' utiliser ça! J'ai donc pu sauter en toute sécurité deux étapes sur Debian.Windows + Apache 2.4, par exemple:
décommentez ssl_module dans votre
httpd.conf
fichier.écoutez le port 443 tout comme le port 80 dans votre
httpd.conf
fichier.uncomment Inclure les hôtes virtuels dans votre
httpd.conf
fichier.ajoutez VirtualHost dans votre
conf/extra/httpd-vhosts.conf
seulement le numéro de port
443
etSSL......
lignes sont différents de la configuration http normale.enregistrez votre fichier de configuration et redémarrez le service apache. alors vous pouvez visiter https: // localhost /
Le navigateur Web vous avertira que ce n'est pas sûr la première fois, choisissez simplement continuer.
la source
C'est en fait assez simple, en supposant que vous ayez une installation openssl à portée de main. (Sur quelle plateforme êtes-vous?)
En supposant que vous soyez sous linux / solaris / mac os / x, le mini-HOWTO Apache SSL / TLS de Van a une excellente procédure que je ne reproduirai pas ici.
Cependant, le résumé analytique est que vous devez créer un certificat auto-signé. Puisque vous exécutez apache pour localhost vraisemblablement pour le développement (c'est-à-dire pas un serveur Web public), vous saurez que vous pouvez faire confiance au certificat auto-signé et ignorer les avertissements que votre navigateur vous lancera.
la source
Cela devrait fonctionner Ubuntu, Mint similaire avec Apache2
C'est un bon guide, alors suivez ceci
https://www.digitalocean.com/community/tutorials/how-to-create-a-ssl-certificate-on-apache-for-ubuntu-14-04
et en laissant votre ssl.conf comme ceci ou similaire
Tu peux l'avoir.
J'espère que cette aide pour linuxer
la source
Mise à jour 2020
Je poste cette réponse car j'ai eu du mal avec cela moi-même et Chrome a mis à jour sa sécurité en exigeant un autre nom de sujet que beaucoup de messages n'ont pas car il n'était pas nécessaire lorsqu'ils ont été publiés comme réponse. Je suppose que WAMP est déjà installé.
ÉTAPE 1
Télécharger OpenSSL Light et installez
** ÉTAPE 2 (facultatif) **
Bien que cette partie soit facultative, elle facilite l'exécution des commandes par la suite. Si vous ignorez cette étape, vous devrez fournir le chemin d'accès complet à openssl.exe où vous exécuterez la commande. Si vous préférez le définir, mettez à jour le chemin openssl.exe dans Variables d'environnement.
**ÉTAPE 3**
Créez un dossier nommé «clé» dans le
c:/wamp64/bin/apache/apache2.4.27(your version number)/conf/
répertoire.Créez un fichier de configuration pour votre CA MyCompanyCA.cnf avec le contenu (vous pouvez le modifier selon vos besoins):
Créez le fichier de configuration des extensions MyCompanyLocalhost.ext pour votre certificat de serveur Web:
**ÉTAPE 4**
Exécutez ces commandes dans l'ordre indiqué pour générer la clé et les certificats:
En conséquence, vous aurez les fichiers MyCompanyCA.cer , MyCompanyLocalhost.cer et MyCompanyLocalhost.pvk .
** ÉTAPE 5 **
Installez MyCompanyCA.cer sous
Pour installer MyCompanyLocalhost.cer, double-cliquez dessus.
** ÉTAPE 6 **
Ouvrez
c:/wamp64/bin/apache/apache2.4.27(your version number)/conf/httpd.conf
et dé-commentez (supprimez le #) les 3 lignes suivantes:** ÉTAPE 7 **
Ouvrez
c:/wamp64/bin/apache/apache2.4.37/conf/extra/httpd-ssl.conf
et remplacez tous les paramètres par ceux indiqués ci-dessous:Remarque: c'est la partie la plus délicate. Si vous faites une petite erreur lors de l'édition de ce fichier, SSL ne fonctionnera pas. Faites-en une copie avant de le modifier.
** ÉTAPE 8 **
Redémarrez Wamp et Chrome. Localhost est maintenant sécurisé: https: // localhost
la source
C'est très simple,
lancez simplement les commandes suivantes
Voilà, vous avez terminé.
Si vous souhaitez forcer SSL (pour toujours utiliser https), modifiez le fichier:
et ajoutez cette ligne
puis recommencez
la source
systemctl reload apache2
aprèssudo a2ensite default-ssl.conf
.Ce guide pratique pour CentOS était facile à suivre et ne prenait qu'environ 5 minutes: https://wiki.centos.org/HowTos/Https
Je ne détaillerai pas chaque étape ici, mais les principales étapes sont:
1.) Installez le module openssl pour apache, s'il n'est pas déjà installé
2.) Générez un certificat auto-signé
- À ce stade, vous devriez pouvoir visiter https: // localhost avec succès
3.) Configurez un hôte virtuel si nécessaire
la source
Cela a fonctionné sur Windows 10 avec Apache24:
1 - Ajoutez ceci au bas de
C:/Apache24/conf/httpd.conf
2 - Ajoutez les fichiers
server.crt
etserver.key
dans leC:/Apache24/conf/ssl
dossier. Voir les autres réponses sur cette page pour trouver ces 2 fichiers.C'est tout!
la source
httpd.conf
fichier, dans quel fichier dois-je le mettre? Voici ce qui se passe lorsque je mets ce texte à l'intérieurapache2.conf
:Invalid command 'SSLEngine', perhaps misspelled or defined by a module not included in the server configuration
tl; dr
Et votre environnement local est accessible sur https://youruniquesubdomain.serveo.net
Serveo est le meilleur
Je ne pouvais pas croire quand j'ai trouvé ce service. Il offre tout et c'est le plus simple à utiliser. S'il y avait un outil aussi simple et indolore pour chaque problème ...
la source
Exécuter Apache sur Windows 10 ici. Je n'ai pas pu faire en sorte que Chrome fasse confiance au certificat créé dans la première réponse de Simon. J'ai fini par utiliser PowerShell pour générer un certificat auto-signé.
Étape 1 - Générer un certificat auto-signé
Dans PowerShell
New-SelfSignedCertificate -DnsName "localhost" -CertStoreLocation "cert:\LocalMachine\My"
1Étape 2 - Configurer et exporter le certificat
Tapez
Certificate
dans la barre de recherche Windows, cliquez sur l'Manage Computer Certificates
élément du panneau de configuration qui est suggéré.Depuis le programme de gestion des certificats qui apparaît (certlm), vous devriez maintenant voir une
localhost
clé sousPersonal >> Certificates
.J'ai copié ce certificat dans
Trusted Root Certification Authorities
. Je serai honnête en ce sens que je ne suis pas sûr que ce soit nécessaire.En sélectionnant le certificat nouvellement copié, double-cliquez dessus (le certificat localhost). Dans le modal Certificat, cliquez sur l'
Details
onglet, puis sur leCopy to File...
bouton.Cela fera apparaître et Assistant d'exportation, j'ai choisi d'exporter la clé privée, cliquez sur Suivant. J'ai également choisi de
Export all extended properties
(encore une fois, je ne suis pas sûr que c'était nécessaire). J'ai choisi d'utiliser un mot de passe simple (pass
) et le cryptage par défaut. Choisissez un dossier vers lequel exporter et nommez le fichier. Vous pouvez toujours déplacer et renommer le fichier si nécessaire. Par souci de simplicité, copions-le dans votre dossier conf sous votre installation Apache (dans mon cas :)C:\apache\conf
et nommez le fichiermyCert
(le fichier résultant sera un.pfx
fichier)Étape 3 - Convertir le
.pfx
fichier pour une utilisation avec ApacheDe là, j'ai essentiellement suivi le tutoriel ici , mais j'ajouterai des instructions ici (ajustées pour nos paramètres) au cas où ce site tomberait en panne.
Ouvrez votre invite de commande dans le
/apache/conf/
dossierExécutez les commandes suivantes: Remarque: Cela suppose que vous avez
openssl.exe
dans lebin
dossier dans le dossier racine apache (cela doit être standard / par défaut)Cela vous demandera un mot de passe, entrez ce que vous entrez à l'étape 2 lorsque vous avez exporté le
.pfx
fichier. Dans mon cas, c'estpass
. J'ai entré le même mot de passe pour la phrase PEM et encore une fois pour vérifier. Cela créera un nouveau fichier appeléprivateKey.pem
dans votre dossier conf.Ensuite, cours
Encore une fois, vous serez invité à entrer un mot de passe (
Enter pass phrase for privateKey.pem:
), utilisez le mot de passe que vous avez définiprivateKey.pem
. (Dans mon cas,pass
)Vous devriez voir un message qui dit
writing RSA key
et un nouveau fichier appeléprivate.pem
dans votreconf/
dossier. Ce sera votre SSLCertificateKeyFile.Maintenant, pour générer le certificat de serveur correspondant. Courir:
Cela vous demandera un mot de passe, entrez ce que vous entrez à l'étape 2 lorsque vous avez exporté le
.pfx
fichier. Entrez-le et vous aurez maintenant un fichier appeléEntrustCert.pem
dans votreconf
dossier. Ceci est votre SSLCertificateFileÉtape 4 - Configurer
httpd.conf
Utilisez les nouveaux fichiers créés comme clé et certificat de votre serveur. Assurez-vous de changer la racine de votre document à l'endroit où se trouvent vos fichiers!
Aussi dans
httpd.conf
:LoadModule ssl_module modules/mod_ssl.so
n'est pas commenté (non#
devant)LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
LoadModule http2_module modules/mod_http2.so
Include conf/extra/httpd-ssl.conf
-vous que c'est là que se trouve le fichier!)J'ai également des bibliothèques curl et ssl ouvertes incluses:
Ces modules ne devraient pas être nécessaires, mais je noterai que je les ai activés:
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule filter_module modules/mod_filter.so
LoadModule deflate_module modules/mod_deflate.so
Étape 5 - Config
httpd-ssl.conf
Dans le
extra/
dossier duconf/
dossier, vous devriez voir un fichier appeléhttpd-ssl.conf
.5a. Changer le
DocumentRoot
- Remplacez leDocumentRoot
par défaut par le répertoire où se trouvent vos fichiers.5b. Changer le
ServerName
- Remplacez leServerName
par défaut (quelque chose commewww.example.com:443
) parlocalhost:443
5c. Modifiez le
SSLCertificateFile
changement du
SSLCertificateFile
de la valeur par défaut (${SRVROOT}/conf/server.crt
) à${SRVROOT}/conf/EntrustCert.pem
5c. Modifiez le
SSLCertificateKeyFile
changement du
SSLCertificateKeyFile
de la valeur par défaut (${SRVROOT}/conf/server.key
) à${SRVROOT}/conf/private.pem
Tous ensemble, dans le
<VirtualHost _default_:443>
tag.Redémarrez Apache
Après avoir apporté ces modifications, vous devriez pouvoir redémarrer Apache et accéder à https: // localhost sans avertissement de sécurité et un petit cadenas!
J'espère que ça aidera quelqu'un! 😊
Sources:
1.) Réponse d'Auri Rahimzadeh sur la création d'un certificat auto-signé
2.) Entrust Datacard - Comment puis-je convertir un .pfx à utiliser avec un serveur Apache?
la source
Une autre méthode simple consiste à utiliser Python Server dans Ubuntu.
Générez server.xml avec la commande suivante dans le terminal:
openssl req -new -x509 -keyout server.pem -out server.pem -days 365 -nodes
Remarque: en supposant que vous avez installé openssl .
Enregistrez le code ci-dessous dans un fichier nommé
simple-https-server.py
dans n'importe quel répertoire dans lequel vous souhaitez exécuter le serveur.Exécutez le serveur à partir du terminal:
python simple-https-server.py
Visitez la page à:
https://localhost:4443
Notes supplémentaires ::
Vous pouvez changer le port dans le
simple-https-server.py
fichier en lignehttpd = BaseHTTPServer.HTTPServer(('localhost', 4443), SimpleHTTPServer.SimpleHTTPRequestHandler)
Vous pouvez changer
localhost
votre adresse IP dans la même ligne ci-dessus:httpd = BaseHTTPServer.HTTPServer(('10.7.1.3', 4443), SimpleHTTPServer.SimpleHTTPRequestHandler)
et accédez à la page sur n'importe quel appareil connecté à votre réseau. Ceci est très pratique dans des cas tels que "vous devez tester l'API de géolocalisation HTML5 dans un mobile et Chrome limite l'API uniquement dans les connexions sécurisées".
Gist: https://gist.github.com/dergachev/7028596
http://www.piware.de/2011/01/creating-an-https-server-in-python/
la source
Pour ceux qui utilisent macOS, c'est un excellent guide https://getgrav.org/blog/macos-sierra-apache-multiple-php-versions pour configurer votre environnement de développement Web local. Dans sa 3ème partie https://getgrav.org/blog/macos-sierra-apache-ssl Andy Miller explique comment configurer apache avec un certificat auto-signé:
Voici le raccourci clavier:
Mais il y a quelques étapes à suivre, alors vérifiez cela et bonne chance! ;)
la source
Je voudrais ajouter quelque chose à la très bonne réponse de @CodeWarrior, qui fonctionne parfaitement sur Chrome, mais pour Firefox a besoin d'une étape supplémentaire.
Étant donné que Firefox ne propose pas de certificats CA comme Windows par défaut, vous devez continuer
about:config
, faites défiler jusqu'àsecurity.enterprise_roots.enabled
et le changer en vrai.Maintenant, votre certificat devrait être considéré comme valide également sur Firefox.
Bien sûr, ce n'est qu'à des fins de développement, car la confiance SSL est un problème de sécurité critique et ne modifiez ces paramètres que si vous en connaissez les implications.
la source