Ich wurde gebeten, HTTPS mit einem selbstsignierten Zertifikat für Apache auf localhost einzurichten, aber wie mache ich das eigentlich? Ich habe überhaupt keine Ahnung.
Ich habe es gerade versucht - ich musste Entwicklungscode auf meinem lokalen Host Apache unter Windows testen . Dies war WAAAY schwieriger als es sein sollte. Aber hier sind die Schritte, die nach viel Haarausfall erfolgreich waren ...
Ich habe festgestellt, dass meine Apache-Installation mitgeliefert wird, openssl.exewas hilfreich ist. Wenn Sie keine Kopie haben, müssen Sie diese herunterladen. Meine Kopie befand sich in einem Apache2\binOrdner, auf den ich unten verweise.
Schritte:
Stellen Sie sicher, dass Sie über Schreibberechtigungen für Ihren Apache conf-Ordner verfügen
Öffnen Sie eine Eingabeaufforderung im Apache2\confOrdner
Art ..\bin\openssl req -config openssl.cnf -new -out blarg.csr -keyout blarg.pem
Sie können alle Fragen leer lassen, außer:
PEM-Passphrase: Ein temporäres Passwort wie "Passwort"
Allgemeiner Name: Der Hostname Ihres Servers
Wenn dies abgeschlossen ist, geben Sie ein ..\bin\openssl rsa -in blarg.pem -out blarg.key
Generieren Sie Ihr selbstsigniertes Zertifikat, indem Sie Folgendes eingeben: ..\bin\openssl x509 -in blarg.csr -out blarg.cert -req -signkey blarg.key -days 365
Öffnen Sie die Apache- conf\httpd.confDatei und stellen Sie sicher, dass das SSL-Modul aktiviert ist. Am Anfang dieser Zeile sollte kein Hash stehen: LoadModule ssl_module modules/mod_ssl.so
Bei einigen Apache-Installationen wird die SSL-Konfiguration in einer separaten Datei abgelegt. Stellen Sie in diesem Fall sicher, dass die SSL-Konfigurationsdatei enthalten ist. In meinem Fall musste ich diese Zeile auskommentieren: Include conf/extra/httpd-ssl.conf
In der SSL-Konfiguration musste httpd-ssl.confich folgende Zeilen aktualisieren:
Update SSLSessionCache "shmcb:C:\Program Files (x86)\Zend\Apache2/logs/ssl_scache(512000)" auf SSLSessionCache "shmcb:C:/Progra\~2/Zend/Apache2/logs/ssl_scache(512000)" (Die Klammern im Pfad verwirren das Modul, daher müssen wir sie maskieren.)
DocumentRoot - Stellen Sie dies auf den Ordner für Ihre Webdateien ein
ServerName - der Hostname des Servers
SSLCertificateFile "conf/blarg.cert"
SSLCertificateKeyFile "conf/blarg.key"
Starten Sie Apache neu.
Versuchen Sie, https://localhost/in Ihren Browser zu laden .
Hoffentlich hast du es so weit geschafft. Fühlen Sie sich frei, diesen Beitrag mit anderen hilfreichen Informationen zu aktualisieren.
(Screenshots mit freundlicher Genehmigung von Neil Obremski und seinem hilfreichen Artikel - obwohl jetzt ziemlich veraltet.)
Vielen Dank. Ich musste auch die Anweisungen ErrorLog, TransferLog und CustomLog in gültige Pfade bearbeiten, sonst würde Apache nicht starten.
Tamlyn
1
Aus irgendeinem Grund funktionieren Anweisungen nicht mehr oder unvollständig
Jacobian
6
Ich musste auch Folgendes in meiner httpd.conf auskommentieren, damit es funktioniert: LoadModule socache_shmcb_module modules / mod_socache_shmcb.so
erik
1
Ich habe zwei weitere Schritte ausgeführt, damit es funktioniert. Fügen Sie das Modul LoadModule socache_shmcb_module modules / mod_socache_shmcb.so hinzu. In httpd-ssl.conf korrigiere ich den ssl-Protokollpfad in Zeile 250, CustomLog ".apache24 / logs / ssl_request.log" \
Wasim A. .
5
Um die .pem- und .key-Dateien zu generieren, musste ich in Schritt 2 zwei Umgebungsvariablen festlegen: OPENSSL_CONF = C: \ path \ to \ apache \ Apache2.4.4 \ conf \ openssl.cnf set RANDFILE = C: \ Pfad \ zu \ Apache \ Apache2.4.4 \ conf \ .rnd
Eosphere
57
Ich benutze dafür ngrok ( https://ngrok.com/ ). ngrok ist ein Befehlszeilenprogramm und erstellt einen Tunnel für localhost. Es wird sowohl eine http- als auch eine https-Verbindung hergestellt. Nach dem Herunterladen muss der folgende Befehl ausgeführt werden:
ngrok http 80
(In Version 2 lautet die Syntax: ngrok http 80. In Version 2 kann jeder Port getunnelt werden.)
@sudip, Funktioniert der OpenSource-Code von ngrok so, dass wir ihn ohne Änderungen auf unserem eigenen Server hosten können? Wenn nicht, ist es so ziemlich ein Showstopper, weil es nicht in Ordnung ist, Benutzeranforderungen an einen externen Host wie ngrok umzuleiten.
Pacerier
2
@ Pacerier Ich habe nicht vor, es auf dem Server zu verwenden. Ich benutze es auf localhost (Bcz mein Netzwerkanbieter gibt mir eine dynamische IP). Ich habe es zum ersten Mal für Paypal-IPN-Tests verwendet und es hat perfekt funktioniert. Ich frage mich, warum jemand es auf dem Server verwenden wird und zu welchem Zweck.
Sudip
@sudip, Der Zweck liegt auf der Hand. Damit Code, der unter HTTP funktioniert, auch mit HTTPS funktioniert, ohne dass zusätzliche Codierung erforderlich ist.
Pacerier
1
Obwohl dies nützlich ist, scheint es unglaublich unsicher, den Zugriff auf Ihre Entwicklungsmaschine über das offene Internet zuzulassen. Wenn Sie so etwas verwenden, werden Sie bei einem sicherheitsbewussten Arbeitgeber entlassen.
Andy M
@Yum Yum yum . Es war zuvor in V 1 völlig kostenlos. In Version 2 sind jedoch die http- und https-Ports noch frei (ich weiß nicht, ob es eine Portbeschränkung gibt, es gibt einen kostenlosen Plan). Überprüfen Sie den kostenlosen Plan hier: ngrok.com/product#pricing
Sudip
24
Hier ist der einfachste Weg, dies zu tun
Kopieren Sie zuerst diese server.crt- und server.key- Dateien (finden Sie im Anhang) in Ihr Verzeichnis apache / conf / ssl
Öffnen Sie dann die Datei httpd.conf und fügen Sie die folgende Zeile hinzu
Ich musste auch das Modul LoadModule ssl_module libexec / apache2 / mod_ssl.so in der (/etc/apache2/httpd.conf)
Alexey
17
Ich frage mich, wie sicher / gefährlich es ist, * .crt * .key-Dateien von einer nicht vertrauenswürdigen Quelle herunterzuladen, anstatt eigene zu generieren.
Petr Peller
4
@PetrPeller wir richten https für die lokale Entwicklung ein, warum also für sicher / gefährlich wundern
Anil Gupta
7
Eine Erklärung, wie diese Dateien generiert werden, wäre großartig. Weil das Herunterladen von Dateien von einer unbekannten Quelle eine schlechte Praxis ist, aber auch, weil diese Art von Links irgendwann kaputt gehen.
Um die Sicherheit von Informationen zu gewährleisten, die an und von Ihrem Webserver gesendet werden, empfiehlt es sich, die Verschlüsselung der Kommunikation zwischen Clients und Server zu aktivieren. Dies wird oft als SSL bezeichnet .
Richten wir also HTTPS mit einem selbstsignierten Zertifikat für Apache2 ein. Ich werde die Schritte auflisten, denen Sie folgen sollten:
Installieren Sie den Apache2-Webserver auf Ihrem Computer. Für Linux-Maschine öffnen Sie das Terminal und geben Sie ein
sudo apt-get install apache2
Überprüfen Sie nach erfolgreicher Installation den Status des Apache2-Dienstes, indem Sie den Befehl ausführen
Stellen Sie sicher, dass Sie die Standardseite für Apache2 wie folgt erhalten.
Zum Verschlüsseln einer Webverbindung benötigen wir ein Zertifikat von CA (Zertifizierungsstelle) oder wir können selbstsignierte Zertifikate verwenden. Erstellen wir ein selbstsigniertes Zertifikat mit dem folgenden Befehl.
Bitte füllen Sie die Informationen entsprechend aus, wie unten gezeigt.
mykey.key und mycert.pem sollten in Ihrem aktuellen Arbeitsverzeichnis erstellt werden.
Es wäre schön, wenn wir Zertifikate und Schlüssel an einen gemeinsamen Ort verschieben würden, und es wird für den Apache2-Webserver leicht sein, sie zu finden. Führen wir also die folgenden Befehle aus
sudo cp mycert.pem / etc / ssl / certs
sudo cp mykey.key / etc / ssl / privat
Lassen Sie uns den SSL-Modus auf Ihrem Server aktivieren
sudo a2enmod ssl
Es sollte so ausgegeben werden
Lassen Sie uns apache2 so konfigurieren, dass selbstsignierte Zertifikate und Schlüssel verwendet werden, die wir oben generiert haben.
sudo vi /etc/apache2/sites-available/default-ssl.conf
Finden Sie diese beiden Zeilen und ersetzen Sie sie durch Ihre Zertifizierungs- und Schlüsselpfade.
Initiale
Finale
Aktivieren Sie die Site
cd / etc / apache2 / sites-available /
sudo a2ensite default-ssl.conf
Starten Sie den Apache2-Dienst neu
sudo service apache2 neu starten
Überprüfen Sie den Apache2-Webserver unter HTTPS. Öffnen Sie Ihren Browser erneut und geben Sie ein
Es sollte so etwas mit einer Warnung ausgeben, dass die Seite, die Sie anzeigen möchten, nicht sicher ist, da wir den Server mit einem selbstsignierten Zertifikat konfiguriert haben.
Herzlichen Glückwunsch, Sie haben Ihren Apache2 mit HTTPS-Endpunkt konfiguriert. Klicken Sie nun auf Erweitert -> Ausnahme hinzufügen -> Sicherheitsausnahme bestätigen. Die Standardseite wird erneut angezeigt.
Ich bevorzuge es, keine Konfigurationsdatei zu bearbeiten, wenn ich kann, also habe ich default-ssl.confes so belassen, wie es ist. Ich wollte gerade umbenennen mycert, ssl-cert-snakeoilaber diese Datei existiert bereits, also habe ich sie einfach benutzt! So konnte ich zwei Schritte auf Debian sicher überspringen.
Rolf
@Rolf Ich stimme dir zu, aber in der Produktion ist es immer der Fall, ein neues Zertifikat und einen neuen Schlüssel zu verwenden. Um zu zeigen, wie sie erstellt werden können, habe ich zwei zusätzliche Schritte für Debian hinzugefügt. Danke :)
Dinesh Kumar
9
Windows + Apache 2.4 zum Beispiel:
Kommentieren Sie ssl_module in Ihrer httpd.confDatei aus.
LoadModule ssl_module modules/mod_ssl.so
Hören Sie 443 Port genau wie 80 Port in Ihrer httpd.confDatei.
Listen 80
Listen 443
auskommentieren Nehmen Sie virtuelle Hosts in Ihre httpd.confDatei auf.
# Virtual hosts
Include conf/extra/httpd-vhosts.conf
Fügen Sie VirtualHost in Ihr 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>
Nur die Portnummer 443und die SSL......Leitungen unterscheiden sich von der normalen http-Konfiguration.
Speichern Sie Ihre Konfigurationsdatei und starten Sie den Apache-Dienst neu. dann können Sie https: // localhost / besuchen
Der Webbrowser warnt Sie, dass es beim ersten Mal unsicher ist. Wählen Sie einfach Weiter.
Dies hat bei XP Home, Apache 2.4 für mich funktioniert. Kopierte die 2 Zertifikatdateien aus dem vorherigen Beitrag (von Anil Gupta). Unkommentiert mod_ssl und httpd-vhosts.conf in httpd.conf eingefügt, fügte Anil Guptas VirtualHost-Direktive (mit einigen angepassten Pfaden) in httpd-vhosts.conf hinzu.
jogi99
7
Es ist eigentlich ganz einfach, vorausgesetzt, Sie haben eine OpenSSL-Installation zur Hand. (Auf welcher Plattform bist du?)
Angenommen, Sie arbeiten unter Linux / Solaris / Mac OS / X, hat Vans Apache SSL / TLS Mini-HOWTO eine hervorragende Anleitung, die ich hier nicht reproduzieren werde.
Die Zusammenfassung lautet jedoch, dass Sie ein selbstsigniertes Zertifikat erstellen müssen. Da Sie Apache für localhost vermutlich für die Entwicklung ausführen (dh keinen öffentlichen Webserver), wissen Sie, dass Sie dem selbstsignierten Zertifikat vertrauen und die Warnungen ignorieren können, die Ihr Browser auf Sie wirft.
Hallo, ich arbeite unter Windows. Und was das selbstsignierte Zertifikat betrifft, muss ich es herunterladen oder auf andere Weise?
KennC.
3
Nee. Sie erstellen das selbstsignierte Zertifikat selbst. Haben Sie das Apache httpd + ssl Setup? Dazu benötigen Sie die SSL. Diese Seite: rubayathasan.com/tutorial/apache-ssl-on-windows bietet gute Informationen darüber, wie man SSL unter Windows zum Laufen bringt. Sie werden einige Kommandozeilenarbeiten ausführen, aber das ist trotzdem gut für Sie. :-)
Pete Clark
3
Die Links sind tot :(
kpuccino
Ja - es scheint tot zu sein. Das ist das Internet für Sie ... aber der Link zum CentOS Wiki unten durch @kayakinkoder referenziert ist auch gut: wiki.centos.org/HowTos/Https Wenn Sie auf einem Mac sind, diese Zuschreibung sieht auch vernünftig: Kern. github.com/nrollr/4daba07c67adcb30693e
Pete Clark
4
Dies sollte Ubuntu, Mint ähnlich wie Apache2 funktionieren
Und Sie müssen laufen systemctl reload apache2nach sudo a2ensite default-ssl.conf.
Bis zum
2
Update 2019
Ich poste diese Antwort, da ich selbst damit zu kämpfen hatte und Chrome ihre Sicherheit dahingehend aktualisiert hat, dass ein alternativer Betreffname erforderlich ist, den viele Posts nicht haben, da dies nicht erforderlich war, als sie als Antwort veröffentlicht wurden. Ich gehe davon aus, dass WAMP bereits installiert ist.
SCHRITT 1
Laden Sie OpenSSL Light herunter und installieren Sie es
SCHRITT 2 (optional)
Dieser Teil ist zwar optional, erleichtert aber später die Ausführung von Befehlen. Wenn Sie diesen Schritt überspringen, müssen Sie den vollständigen Pfad zu openssl.exe angeben, in dem Sie den Befehl ausführen. Wenn Sie es lieber festlegen möchten, aktualisieren Sie den Pfad openssl.exe in Umgebungsvariablen.
Umgebungsvariablen -> Systemvariablen -> Pfad -> Bearbeiten -> Neu -> c: \ Programme \ OpenSSL-Win64 \ bin
SCHRITT 3
Erstellen Sie einen Ordner mit dem Namen "Schlüssel" im c:/wamp64/bin/apache/apache2.4.27(your version number)/conf/Verzeichnis.
Erstellen Sie eine Konfigurationsdatei für Ihre CA MyCompanyCA.cnf mit Inhalten (Sie können sie an Ihre Bedürfnisse anpassen ):
[ 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
Erstellen Sie die Erweiterungskonfigurationsdatei MyCompanyLocalhost.ext für Ihr Webserverzertifikat:
Als Ergebnis verfügen Sie über die Dateien MyCompanyCA.cer , MyCompanyLocalhost.cer und MyCompanyLocalhost.pvk .
SCHRITT 5
Installieren Sie MyCompanyCA.cer unter
Systemsteuerung -> Benutzerzertifikate verwalten -> Vertrauenswürdige Stammzertifizierungsstellen -> Zertifikate
Um MyCompanyLocalhost.cer zu installieren, doppelklicken Sie einfach darauf.
SCHRITT 6
Öffnen Sie die folgenden 3 Zeilen c:/wamp64/bin/apache/apache2.4.27(your version number)/conf/httpd.confund entfernen Sie den Kommentar (entfernen Sie das #) :
LoadModule ssl_module modules/mod_ssl.so
Include conf/extra/httpd-ssl.conf
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
SCHRITT 7
Öffnen Sie c:/wamp64/bin/apache/apache2.4.37/conf/extra/httpd-ssl.confalle Parameter und ändern Sie sie in die unten gezeigten:
Hinweis: Dies ist der schwierige Teil. Wenn Sie beim Bearbeiten dieser Datei einen kleinen Fehler machen, funktioniert SSL nicht. Erstellen Sie eine Kopie davon, bevor Sie sie bearbeiten.
SCHRITT 8
Starten Sie Wamp und Chrome neu. Localhost ist jetzt sicher: https: // localhost
2 - Fügen Sie die server.crtund server.key-Dateien in den C:/Apache24/conf/sslOrdner ein. Weitere Antworten finden Sie auf dieser Seite, um diese beiden Dateien zu finden.
Ja das funktioniert. Ich habe die Schritte 1 bis 3 von StephanieQ verwendet, um das Zertifikat zu generieren, und dann "openssl x509 -req -in server.csr -signkey server.key -out server.crt", um die * .crt-Datei mit cygwin zu generieren.
Sie können einen benutzerdefinierten Fix und eine Subdomain angeben.
Sie können es selbst hosten, so dass Sie Ihre eigene Domain verwenden und zukunftssicher sein können, selbst wenn der Dienst ausfällt.
Ich konnte es nicht glauben, als ich diesen Service fand. Es bietet alles und ist am einfachsten zu bedienen. Wenn es für jedes Problem ein so einfaches und schmerzloses Werkzeug geben würde ...
Hier wird Apache unter Windows 10 ausgeführt. Ich konnte Chrome nicht dazu bringen, dem Zertifikat zu vertrauen, das in der Top-Antwort von Simon erstellt wurde. Am Ende habe ich mit PowerShell ein selbstsigniertes Zertifikat erstellt.
Schritt 1 - Generieren Sie ein selbstsigniertes Zertifikat
In PowerShell New-SelfSignedCertificate -DnsName "localhost" -CertStoreLocation "cert:\LocalMachine\My"1
Schritt 2 - Zertifikat konfigurieren und exportieren
Geben Sie Certificatein die Windows-Suchleiste ein und klicken Sie auf das Manage Computer Certificatesvorgeschlagene Element der Systemsteuerung.
Im daraufhin angezeigten Zertifikatverwaltungsprogramm (certlm) sollte jetzt ein localhostSchlüssel unter angezeigt werden Personal >> Certificates.
Ich habe dieses Zertifikat in kopiert Trusted Root Certification Authorities. Ich bin ehrlich, ich bin mir nicht sicher, ob das notwendig ist.
Doppelklicken Sie auf das neu kopierte Zertifikat (das localhost-Zertifikat). Klicken Sie im Modal Zertifikat auf die DetailsRegisterkarte und dann auf die Copy to File...Schaltfläche.
Dadurch wird der Export-Assistent aufgerufen. Ich habe mich für den Export des privaten Schlüssels entschieden und auf Weiter geklickt. Ich habe mich auch dafür entschieden Export all extended properties(auch hier bin ich mir nicht sicher, ob das notwendig war). Ich habe mich für ein einfaches Passwort ( pass) und die Standardverschlüsselung entschieden. Wählen Sie einen Ordner aus, in den exportiert werden soll, und benennen Sie die Datei. Sie können die Datei bei Bedarf jederzeit verschieben und umbenennen. Der Einfachheit halber kopieren wir es in Ihren conf-Ordner unter Ihrer Apache-Installation (in meinem Fall :) C:\apache\confund benennen die Datei myCert(die resultierende Datei ist eine .pfxDatei).
Schritt 3 - Konvertieren Sie die .pfxDatei zur Verwendung mit Apache
Von hier aus habe ich im Grunde das Tutorial hier befolgt , aber ich werde hier Anweisungen hinzufügen (angepasst für unsere Einstellungen), falls diese Seite ausfällt.
Öffnen Sie Ihre Eingabeaufforderung im /apache/conf/Ordner.
Führen Sie die folgenden Befehle aus: Hinweis: Dies setzt voraus, dass Sie sich openssl.exeim binOrdner im Apache-Stammordner befinden (dies sollte Standard / Standard sein).
Dadurch werden Sie zur Eingabe eines Kennworts aufgefordert. Geben Sie ein, was Sie beim Exportieren der .pfxDatei für Schritt 2 eingegeben haben . In meinem Fall ist dies pass. Ich habe das gleiche Passwort für die PEM-Phrase eingegeben und erneut überprüft. Dadurch wird eine neue Datei erstellt, die privateKey.pemin Ihrem conf-Ordner aufgerufen wird.
Sie werden erneut aufgefordert, ein Kennwort einzugeben ( Enter pass phrase for privateKey.pem:). Verwenden Sie das von Ihnen festgelegte Kennwort privateKey.pem. (In meinem Fall pass)
Sie sollten eine Meldung mit dem Titel writing RSA keyund eine neue Datei private.pemin Ihrem conf/Ordner sehen. Dies ist Ihre SSLCertificateKeyFile.
Generieren Sie nun das entsprechende Serverzertifikat. Lauf:
Dadurch werden Sie zur Eingabe eines Kennworts aufgefordert. Geben Sie ein, was Sie beim Exportieren der .pfxDatei für Schritt 2 eingegeben haben . Geben Sie es ein und Sie haben jetzt eine Datei EntrustCert.pemin Ihrem confOrdner. Dies ist Ihre SSLCertificateFile
Schritt 4 - Konfigurieren httpd.conf
Verwenden Sie die neuen Dateien, die als Schlüssel und Zertifikat Ihres Servers erstellt wurden. Stellen Sie sicher, dass Sie Ihr Dokumentenstammverzeichnis so ändern, dass sich Ihre Dateien dort befinden!
Kommentar entfernen ( HINWEIS Include conf/extra/httpd-ssl.conf: Stellen Sie sicher, dass sich dort die Datei befindet!)
Ich habe auch Curl- und Open-SSL-Bibliotheken enthalten:
# load curl and open ssl libraries
LoadFile "C:\php\libeay32.dll"
LoadFile "C:\php\ssleay32.dll"
LoadFile "C:\php\libssh2.dll"
Diese Module sollten nicht notwendig sein, aber ich werde feststellen, dass ich sie aktiviert habe: LoadModule rewrite_module modules/mod_rewrite.so LoadModule filter_module modules/mod_filter.so LoadModule deflate_module modules/mod_deflate.so
Schritt 5 - Konfig httpd-ssl.conf
In dem extra/Ordner im conf/Ordner sollte eine Datei mit dem Namen angezeigt werden httpd-ssl.conf.
5a. Ändern Sie dasDocumentRoot - Ändern Sie das DocumentRootvon der Standardeinstellung in das Verzeichnis, in dem sich Ihre Dateien befinden.
5b. Ändern Sie dieServerName - Ändern Sie die ServerNamevon der Standardeinstellung (so etwas wie www.example.com:443) inlocalhost:443
5c. Ändern Sie dasSSLCertificateFile
Ändern Sie das SSLCertificateFilevon der Standardeinstellung ( ${SRVROOT}/conf/server.crt) in${SRVROOT}/conf/EntrustCert.pem
5c. Ändern Sie dasSSLCertificateKeyFile
Ändern Sie das SSLCertificateKeyFilevon der Standardeinstellung ( ${SRVROOT}/conf/server.key) in${SRVROOT}/conf/private.pem
Alles zusammen im <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"
Starten Sie Apache neu
Nachdem Sie diese Änderungen vorgenommen haben, sollten Sie in der Lage sein, Apache neu zu starten und ohne Sicherheitswarnung und ein kleines Vorhängeschloss zu https: // localhost zu navigieren !
und greifen Sie auf die Seite eines beliebigen Geräts zu, mit dem Ihr Netzwerk verbunden ist. Dies ist sehr praktisch in Fällen wie "Sie müssen die HTML5-GeoLocation-API in einem Mobiltelefon testen und Chrome schränkt die API nur in sicheren Verbindungen ein".
Ich möchte der sehr guten Antwort von @CodeWarrior etwas hinzufügen, das unter Chrome perfekt funktioniert, für Firefox jedoch einen zusätzlichen Schritt benötigt.
Da Firefox keine CA-Zertifikate ausgibt, die Windows standardmäßig ausführt, müssen Sie fortfahren about:config, nach unten scrollen security.enterprise_roots.enabled und in true ändern.
Jetzt sollte Ihr Zertifikat auch in Firefox als gültig angesehen werden.
Dies dient natürlich nur zu Entwicklungszwecken, da SSL-Vertrauen ein kritisches Sicherheitsbedenken darstellt. Ändern Sie diese Einstellungen nur, wenn Sie die Auswirkungen kennen.
ssh -R youruniquesubdomain:80:localhost:3000 serveo.net
https://youruniquesubdomain.serveo.net
Antworten:
Ich habe es gerade versucht - ich musste Entwicklungscode auf meinem lokalen Host Apache unter Windows testen . Dies war WAAAY schwieriger als es sein sollte. Aber hier sind die Schritte, die nach viel Haarausfall erfolgreich waren ...
Ich habe festgestellt, dass meine Apache-Installation mitgeliefert wird,
openssl.exe
was hilfreich ist. Wenn Sie keine Kopie haben, müssen Sie diese herunterladen. Meine Kopie befand sich in einemApache2\bin
Ordner, auf den ich unten verweise.Schritte:
Apache2\conf
Ordner..\bin\openssl req -config openssl.cnf -new -out blarg.csr -keyout blarg.pem
Sie können alle Fragen leer lassen, außer:
Wenn dies abgeschlossen ist, geben Sie ein
..\bin\openssl rsa -in blarg.pem -out blarg.key
Generieren Sie Ihr selbstsigniertes Zertifikat, indem Sie Folgendes eingeben:
..\bin\openssl x509 -in blarg.csr -out blarg.cert -req -signkey blarg.key -days 365
Öffnen Sie die Apache-
conf\httpd.conf
Datei und stellen Sie sicher, dass das SSL-Modul aktiviert ist. Am Anfang dieser Zeile sollte kein Hash stehen:LoadModule ssl_module modules/mod_ssl.so
Bei einigen Apache-Installationen wird die SSL-Konfiguration in einer separaten Datei abgelegt. Stellen Sie in diesem Fall sicher, dass die SSL-Konfigurationsdatei enthalten ist. In meinem Fall musste ich diese Zeile auskommentieren:
Include conf/extra/httpd-ssl.conf
In der SSL-Konfiguration musste
httpd-ssl.conf
ich folgende Zeilen aktualisieren:SSLSessionCache "shmcb:C:\Program Files (x86)\Zend\Apache2/logs/ssl_scache(512000)"
auf
SSLSessionCache "shmcb:C:/Progra\~2/Zend/Apache2/logs/ssl_scache(512000)"
(Die Klammern im Pfad verwirren das Modul, daher müssen wir sie maskieren.)
DocumentRoot
- Stellen Sie dies auf den Ordner für Ihre Webdateien einServerName
- der Hostname des ServersSSLCertificateFile "conf/blarg.cert"
SSLCertificateKeyFile "conf/blarg.key"
Starten Sie Apache neu.
https://localhost/
in Ihren Browser zu laden .Hoffentlich hast du es so weit geschafft. Fühlen Sie sich frei, diesen Beitrag mit anderen hilfreichen Informationen zu aktualisieren.
(Screenshots mit freundlicher Genehmigung von Neil Obremski und seinem hilfreichen Artikel - obwohl jetzt ziemlich veraltet.)
quelle
Ich benutze dafür ngrok ( https://ngrok.com/ ). ngrok ist ein Befehlszeilenprogramm und erstellt einen Tunnel für localhost. Es wird sowohl eine http- als auch eine https-Verbindung hergestellt. Nach dem Herunterladen muss der folgende Befehl ausgeführt werden:
(In Version 2 lautet die Syntax: ngrok http 80. In Version 2 kann jeder Port getunnelt werden.)
Nach einigen Sekunden werden zwei URLs angezeigt:
Jetzt zeigen beide URLs auf den lokalen Host.
quelle
Hier ist der einfachste Weg, dies zu tun
Kopieren Sie zuerst diese server.crt- und server.key- Dateien (finden Sie im Anhang) in Ihr Verzeichnis apache / conf / ssl
Öffnen Sie dann die Datei httpd.conf und fügen Sie die folgende Zeile hinzu
quelle
Um die Sicherheit von Informationen zu gewährleisten, die an und von Ihrem Webserver gesendet werden, empfiehlt es sich, die Verschlüsselung der Kommunikation zwischen Clients und Server zu aktivieren. Dies wird oft als SSL bezeichnet .
Richten wir also HTTPS mit einem selbstsignierten Zertifikat für Apache2 ein. Ich werde die Schritte auflisten, denen Sie folgen sollten:
Es sollte ausgegeben werden
Stellen Sie sicher, dass Sie die Standardseite für Apache2 wie folgt erhalten.
Bitte füllen Sie die Informationen entsprechend aus, wie unten gezeigt.
mykey.key und mycert.pem sollten in Ihrem aktuellen Arbeitsverzeichnis erstellt werden.
Es sollte so ausgegeben werden
Finden Sie diese beiden Zeilen und ersetzen Sie sie durch Ihre Zertifizierungs- und Schlüsselpfade.
Initiale
Finale
Es sollte so etwas mit einer Warnung ausgeben, dass die Seite, die Sie anzeigen möchten, nicht sicher ist, da wir den Server mit einem selbstsignierten Zertifikat konfiguriert haben.
quelle
default-ssl.conf
es so belassen, wie es ist. Ich wollte gerade umbenennenmycert
,ssl-cert-snakeoil
aber diese Datei existiert bereits, also habe ich sie einfach benutzt! So konnte ich zwei Schritte auf Debian sicher überspringen.Windows + Apache 2.4 zum Beispiel:
Kommentieren Sie ssl_module in Ihrer
httpd.conf
Datei aus.Hören Sie 443 Port genau wie 80 Port in Ihrer
httpd.conf
Datei.auskommentieren Nehmen Sie virtuelle Hosts in Ihre
httpd.conf
Datei auf.Fügen Sie VirtualHost in Ihr
conf/extra/httpd-vhosts.conf
Nur die Portnummer
443
und dieSSL......
Leitungen unterscheiden sich von der normalen http-Konfiguration.Speichern Sie Ihre Konfigurationsdatei und starten Sie den Apache-Dienst neu. dann können Sie https: // localhost / besuchen
Der Webbrowser warnt Sie, dass es beim ersten Mal unsicher ist. Wählen Sie einfach Weiter.
quelle
Es ist eigentlich ganz einfach, vorausgesetzt, Sie haben eine OpenSSL-Installation zur Hand. (Auf welcher Plattform bist du?)
Angenommen, Sie arbeiten unter Linux / Solaris / Mac OS / X, hat Vans Apache SSL / TLS Mini-HOWTO eine hervorragende Anleitung, die ich hier nicht reproduzieren werde.
Die Zusammenfassung lautet jedoch, dass Sie ein selbstsigniertes Zertifikat erstellen müssen. Da Sie Apache für localhost vermutlich für die Entwicklung ausführen (dh keinen öffentlichen Webserver), wissen Sie, dass Sie dem selbstsignierten Zertifikat vertrauen und die Warnungen ignorieren können, die Ihr Browser auf Sie wirft.
quelle
Dies sollte Ubuntu, Mint ähnlich wie Apache2 funktionieren
Es ist eine nette Anleitung, also folge dieser
https://www.digitalocean.com/community/tutorials/how-to-create-a-ssl-certificate-on-apache-for-ubuntu-14-04
und lassen Sie Ihre ssl.conf so oder ähnlich ähnlich
Du kannst es bekommen.
Hoffe diese Hilfe für Linuxer
quelle
Es ist sehr einfach,
Führen Sie einfach die folgenden Befehle aus
Das war's, du bist fertig.
Wenn Sie SSL erzwingen möchten (um immer https zu verwenden), bearbeiten Sie die Datei:
und fügen Sie diese eine Zeile hinzu
dann neu starten
quelle
systemctl reload apache2
nachsudo a2ensite default-ssl.conf
.Update 2019
Ich poste diese Antwort, da ich selbst damit zu kämpfen hatte und Chrome ihre Sicherheit dahingehend aktualisiert hat, dass ein alternativer Betreffname erforderlich ist, den viele Posts nicht haben, da dies nicht erforderlich war, als sie als Antwort veröffentlicht wurden. Ich gehe davon aus, dass WAMP bereits installiert ist.
SCHRITT 1
Laden Sie OpenSSL Light herunter und installieren Sie es
SCHRITT 2 (optional)
Dieser Teil ist zwar optional, erleichtert aber später die Ausführung von Befehlen. Wenn Sie diesen Schritt überspringen, müssen Sie den vollständigen Pfad zu openssl.exe angeben, in dem Sie den Befehl ausführen. Wenn Sie es lieber festlegen möchten, aktualisieren Sie den Pfad openssl.exe in Umgebungsvariablen.
SCHRITT 3
Erstellen Sie einen Ordner mit dem Namen "Schlüssel" im
c:/wamp64/bin/apache/apache2.4.27(your version number)/conf/
Verzeichnis.Erstellen Sie eine Konfigurationsdatei für Ihre CA MyCompanyCA.cnf mit Inhalten (Sie können sie an Ihre Bedürfnisse anpassen ):
Erstellen Sie die Erweiterungskonfigurationsdatei MyCompanyLocalhost.ext für Ihr Webserverzertifikat:
SCHRITT 4
Führen Sie diese Befehle in der angegebenen Reihenfolge aus, um den Schlüssel und die Zertifikate zu generieren:
Als Ergebnis verfügen Sie über die Dateien MyCompanyCA.cer , MyCompanyLocalhost.cer und MyCompanyLocalhost.pvk .
SCHRITT 5
Installieren Sie MyCompanyCA.cer unter
Um MyCompanyLocalhost.cer zu installieren, doppelklicken Sie einfach darauf.
SCHRITT 6
Öffnen Sie die folgenden 3 Zeilen
c:/wamp64/bin/apache/apache2.4.27(your version number)/conf/httpd.conf
und entfernen Sie den Kommentar (entfernen Sie das #) :SCHRITT 7
Öffnen Sie
c:/wamp64/bin/apache/apache2.4.37/conf/extra/httpd-ssl.conf
alle Parameter und ändern Sie sie in die unten gezeigten:Hinweis: Dies ist der schwierige Teil. Wenn Sie beim Bearbeiten dieser Datei einen kleinen Fehler machen, funktioniert SSL nicht. Erstellen Sie eine Kopie davon, bevor Sie sie bearbeiten.
SCHRITT 8
Starten Sie Wamp und Chrome neu. Localhost ist jetzt sicher: https: // localhost
quelle
Dieses HowTo für CentOS war einfach zu befolgen und dauerte nur etwa 5 Minuten: https://wiki.centos.org/HowTos/Https
Ich werde hier nicht jeden Schritt detaillieren, aber die Hauptschritte sind:
1.) Installieren Sie das openssl-Modul für Apache, falls nicht bereits installiert
2.) Generieren Sie ein selbstsigniertes Zertifikat
- Zu diesem Zeitpunkt sollten Sie https: // localhost erfolgreich besuchen können
3.) Richten Sie bei Bedarf einen virtuellen Host ein
quelle
Dies funktionierte unter Windows 10 mit Apache24:
1 - Fügen Sie dies am unteren Rand von hinzu
C:/Apache24/conf/httpd.conf
2 - Fügen Sie die
server.crt
undserver.key
-Dateien in denC:/Apache24/conf/ssl
Ordner ein. Weitere Antworten finden Sie auf dieser Seite, um diese beiden Dateien zu finden.Das ist es!
quelle
tl; dr
Auf Ihre lokale Umgebung kann über https://youruniquesubdomain.serveo.net zugegriffen werden
Serveo ist das Beste
Ich konnte es nicht glauben, als ich diesen Service fand. Es bietet alles und ist am einfachsten zu bedienen. Wenn es für jedes Problem ein so einfaches und schmerzloses Werkzeug geben würde ...
quelle
Hier wird Apache unter Windows 10 ausgeführt. Ich konnte Chrome nicht dazu bringen, dem Zertifikat zu vertrauen, das in der Top-Antwort von Simon erstellt wurde. Am Ende habe ich mit PowerShell ein selbstsigniertes Zertifikat erstellt.
Schritt 1 - Generieren Sie ein selbstsigniertes Zertifikat
In PowerShell
New-SelfSignedCertificate -DnsName "localhost" -CertStoreLocation "cert:\LocalMachine\My"
1Schritt 2 - Zertifikat konfigurieren und exportieren
Geben Sie
Certificate
in die Windows-Suchleiste ein und klicken Sie auf dasManage Computer Certificates
vorgeschlagene Element der Systemsteuerung.Im daraufhin angezeigten Zertifikatverwaltungsprogramm (certlm) sollte jetzt ein
localhost
Schlüssel unter angezeigt werdenPersonal >> Certificates
.Ich habe dieses Zertifikat in kopiert
Trusted Root Certification Authorities
. Ich bin ehrlich, ich bin mir nicht sicher, ob das notwendig ist.Doppelklicken Sie auf das neu kopierte Zertifikat (das localhost-Zertifikat). Klicken Sie im Modal Zertifikat auf die
Details
Registerkarte und dann auf dieCopy to File...
Schaltfläche.Dadurch wird der Export-Assistent aufgerufen. Ich habe mich für den Export des privaten Schlüssels entschieden und auf Weiter geklickt. Ich habe mich auch dafür entschieden
Export all extended properties
(auch hier bin ich mir nicht sicher, ob das notwendig war). Ich habe mich für ein einfaches Passwort (pass
) und die Standardverschlüsselung entschieden. Wählen Sie einen Ordner aus, in den exportiert werden soll, und benennen Sie die Datei. Sie können die Datei bei Bedarf jederzeit verschieben und umbenennen. Der Einfachheit halber kopieren wir es in Ihren conf-Ordner unter Ihrer Apache-Installation (in meinem Fall :)C:\apache\conf
und benennen die DateimyCert
(die resultierende Datei ist eine.pfx
Datei).Schritt 3 - Konvertieren Sie die
.pfx
Datei zur Verwendung mit ApacheVon hier aus habe ich im Grunde das Tutorial hier befolgt , aber ich werde hier Anweisungen hinzufügen (angepasst für unsere Einstellungen), falls diese Seite ausfällt.
Öffnen Sie Ihre Eingabeaufforderung im
/apache/conf/
Ordner.Führen Sie die folgenden Befehle aus: Hinweis: Dies setzt voraus, dass Sie sich
openssl.exe
imbin
Ordner im Apache-Stammordner befinden (dies sollte Standard / Standard sein).Dadurch werden Sie zur Eingabe eines Kennworts aufgefordert. Geben Sie ein, was Sie beim Exportieren der
.pfx
Datei für Schritt 2 eingegeben haben . In meinem Fall ist diespass
. Ich habe das gleiche Passwort für die PEM-Phrase eingegeben und erneut überprüft. Dadurch wird eine neue Datei erstellt, dieprivateKey.pem
in Ihrem conf-Ordner aufgerufen wird.Dann renne
Sie werden erneut aufgefordert, ein Kennwort einzugeben (
Enter pass phrase for privateKey.pem:
). Verwenden Sie das von Ihnen festgelegte KennwortprivateKey.pem
. (In meinem Fallpass
)Sie sollten eine Meldung mit dem Titel
writing RSA key
und eine neue Dateiprivate.pem
in Ihremconf/
Ordner sehen. Dies ist Ihre SSLCertificateKeyFile.Generieren Sie nun das entsprechende Serverzertifikat. Lauf:
Dadurch werden Sie zur Eingabe eines Kennworts aufgefordert. Geben Sie ein, was Sie beim Exportieren der
.pfx
Datei für Schritt 2 eingegeben haben . Geben Sie es ein und Sie haben jetzt eine DateiEntrustCert.pem
in Ihremconf
Ordner. Dies ist Ihre SSLCertificateFileSchritt 4 - Konfigurieren
httpd.conf
Verwenden Sie die neuen Dateien, die als Schlüssel und Zertifikat Ihres Servers erstellt wurden. Stellen Sie sicher, dass Sie Ihr Dokumentenstammverzeichnis so ändern, dass sich Ihre Dateien dort befinden!
Auch in
httpd.conf
:LoadModule ssl_module modules/mod_ssl.so
es nicht kommentiert ist (nein#
vorne)LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
LoadModule http2_module modules/mod_http2.so
Include conf/extra/httpd-ssl.conf
: Stellen Sie sicher, dass sich dort die Datei befindet!)Ich habe auch Curl- und Open-SSL-Bibliotheken enthalten:
Diese Module sollten nicht notwendig sein, aber ich werde feststellen, dass ich sie aktiviert habe:
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule filter_module modules/mod_filter.so
LoadModule deflate_module modules/mod_deflate.so
Schritt 5 - Konfig
httpd-ssl.conf
In dem
extra/
Ordner imconf/
Ordner sollte eine Datei mit dem Namen angezeigt werdenhttpd-ssl.conf
.5a. Ändern Sie das
DocumentRoot
- Ändern Sie dasDocumentRoot
von der Standardeinstellung in das Verzeichnis, in dem sich Ihre Dateien befinden.5b. Ändern Sie die
ServerName
- Ändern Sie dieServerName
von der Standardeinstellung (so etwas wiewww.example.com:443
) inlocalhost:443
5c. Ändern Sie das
SSLCertificateFile
Ändern Sie das
SSLCertificateFile
von der Standardeinstellung (${SRVROOT}/conf/server.crt
) in${SRVROOT}/conf/EntrustCert.pem
5c. Ändern Sie das
SSLCertificateKeyFile
Ändern Sie das
SSLCertificateKeyFile
von der Standardeinstellung (${SRVROOT}/conf/server.key
) in${SRVROOT}/conf/private.pem
Alles zusammen im
<VirtualHost _default_:443>
Tag.Starten Sie Apache neu
Nachdem Sie diese Änderungen vorgenommen haben, sollten Sie in der Lage sein, Apache neu zu starten und ohne Sicherheitswarnung und ein kleines Vorhängeschloss zu https: // localhost zu navigieren !
Ich hoffe das hilft jemandem! 😊
Quellen:
1.) Antwort von Auri Rahimzadeh zum Erstellen eines selbstsignierten Zertifikats
2.) Entrust Datacard - Wie konvertiere ich eine PFX-Datei, die mit einem Apache-Server verwendet werden soll?
quelle
Eine andere einfache Methode ist die Verwendung von Python Server in Ubuntu.
Generieren Sie server.xml mit dem folgenden Befehl im Terminal:
openssl req -new -x509 -keyout server.pem -out server.pem -days 365 -nodes
Hinweis: Angenommen, Sie haben openssl installiert.
Speicher unter Code in einer Datei mit dem Namen
simple-https-server.py
in jedem Verzeichnis , das Sie wollen den Server auszuführen.Führen Sie den Server vom Terminal aus:
python simple-https-server.py
Besuchen Sie die Seite unter:
https://localhost:4443
Zusätzliche Hinweise: :
Sie können den Port in der
simple-https-server.py
Datei in Zeile ändernhttpd = BaseHTTPServer.HTTPServer(('localhost', 4443), SimpleHTTPServer.SimpleHTTPRequestHandler)
Sie können in derselben Zeile oben zu Ihrer IP wechseln
localhost
:httpd = BaseHTTPServer.HTTPServer(('10.7.1.3', 4443), SimpleHTTPServer.SimpleHTTPRequestHandler)
und greifen Sie auf die Seite eines beliebigen Geräts zu, mit dem Ihr Netzwerk verbunden ist. Dies ist sehr praktisch in Fällen wie "Sie müssen die HTML5-GeoLocation-API in einem Mobiltelefon testen und Chrome schränkt die API nur in sicheren Verbindungen ein".
Inhalt: https://gist.github.com/dergachev/7028596
http://www.piware.de/2011/01/creating-an-https-server-in-python/
quelle
Für diejenigen, die macOS verwenden, ist dies eine großartige Anleitung https://getgrav.org/blog/macos-sierra-apache-multiple-php-versions , um Ihre lokale Webentwicklungsumgebung einzurichten. In seinem dritten Teil https://getgrav.org/blog/macos-sierra-apache-ssl erklärt Andy Miller, wie man Apache mit einem selbstsignierten Zertifikat einrichtet:
Dies ist der Schlüsselbefehl:
Aber es gibt ein paar Schritte, die Sie befolgen müssen, also probieren Sie das aus und viel Glück! ;)
quelle
Ich möchte der sehr guten Antwort von @CodeWarrior etwas hinzufügen, das unter Chrome perfekt funktioniert, für Firefox jedoch einen zusätzlichen Schritt benötigt.
Da Firefox keine CA-Zertifikate ausgibt, die Windows standardmäßig ausführt, müssen Sie fortfahren
about:config
, nach unten scrollensecurity.enterprise_roots.enabled
und in true ändern.Jetzt sollte Ihr Zertifikat auch in Firefox als gültig angesehen werden.
Dies dient natürlich nur zu Entwicklungszwecken, da SSL-Vertrauen ein kritisches Sicherheitsbedenken darstellt. Ändern Sie diese Einstellungen nur, wenn Sie die Auswirkungen kennen.
quelle