Właśnie próbowałem - musiałem przetestować kod programistyczny na moim lokalnym hoście Apache w systemie Windows . To było WIĘCEJ trudniejsze niż powinno być. Ale oto kroki, które zdołały zadziałać po wielu zabiegach na głowie ...
Przekonałem się, że moja instalacja Apache jest dostarczana, openssl.execo jest pomocne. Jeśli nie masz kopii, musisz ją pobrać. Moja kopia znajdowała się w Apache2\binfolderze, dlatego też odsyłam do niej poniżej.
Kroki:
Upewnij się, że masz uprawnienia do zapisu w folderze conf Apache
Otwórz wiersz polecenia w Apache2\conffolderze
Rodzaj ..\bin\openssl req -config openssl.cnf -new -out blarg.csr -keyout blarg.pem
Możesz pozostawić wszystkie pytania puste, z wyjątkiem:
Hasło PEM: hasło tymczasowe, takie jak „hasło”
Common Name: nazwa hosta twojego serwera
Po zakończeniu wpisz ..\bin\openssl rsa -in blarg.pem -out blarg.key
Otwórz conf\httpd.confplik Apache i upewnij się, że moduł SSL jest włączony - na początku tego wiersza nie powinno być haszu: LoadModule ssl_module modules/mod_ssl.so
Niektóre instalacje Apache umieszczają konfigurację SSL w osobnym pliku. Jeśli tak, upewnij się, że dołączono plik konf. SSL. W moim przypadku musiałem odkomentować tę linię: Include conf/extra/httpd-ssl.conf
W konfiguracji SSL httpd-ssl.confmusiałem zaktualizować następujące linie:
Zaktualizuj SSLSessionCache "shmcb:C:\Program Files (x86)\Zend\Apache2/logs/ssl_scache(512000)" do SSLSessionCache "shmcb:C:/Progra\~2/Zend/Apache2/logs/ssl_scache(512000)" (nawiasy na ścieżce dezorientują moduł, więc musimy uciec)
DocumentRoot - ustaw ten folder na swoje pliki internetowe
Dzięki. Musiałem także edytować dyrektywy ErrorLog, TransferLog i CustomLog do prawidłowych ścieżek, w przeciwnym razie Apache nie uruchomi się.
Tamlyn
1
Z jakiegoś powodu instrukcje już nie działają lub są niekompletne
Jakobian
6
Musiałem odkomentować również w moim httpd.conf, aby to działało: LoadModule socache_shmcb_module moduły / mod_socache_shmcb.so
erik
1
Zrobiłem jeszcze dwa kroki, aby to działało, dodaj moduł LoadModule socache_shmcb_module moduły / mod_socache_shmcb.so i w httpd-ssl.conf Poprawiam ścieżkę dziennika ssl w wierszu 250, CustomLog ".apache24 / logs / ssl_request.log" \
Wasim A ,
5
Aby wygenerować pliki .pem i .key, musiałem ustawić 2 zmienne środowiskowe w kroku 2: ustawić OPENSSL_CONF = C: \ ścieżka \ do \ apache \ Apache2.4.4 \ conf \ openssl.cnf ustaw RANDFILE = C: \ ścieżka \ do \ apache \ Apache2.4.4 \ conf \ .rnd
eosfera
57
Używam do tego ngrok ( https://ngrok.com/ ). ngrok jest narzędziem wiersza poleceń i tworzy tunel dla hosta lokalnego. Tworzy połączenie zarówno HTTP, jak i https. Po pobraniu należy uruchomić następujące polecenie:
ngrok http 80
(W wersji 2 składnia jest następująca: ngrok http 80. W wersji 2 można tunelować dowolny port).
@sudip, czy kod opensource ngrok działa w taki sposób, że możemy go hostować na naszym serwerze bez modyfikacji? Jeśli nie, jest to raczej showstopper, ponieważ przekierowywanie żądań użytkowników na host zewnętrzny, taki jak ngrok , nie jest w porządku .
Pacerier
2
@Pacerier Nie zamierzam używać go na serwerze. Używam go na localhost (Bcz mój dostawca sieci daje mi dynamiczny adres IP). Użyłem go po raz pierwszy do testowania paypal IPN i działało idealnie. Zastanawiam się, dlaczego ktoś użyje go na serwerze i do jakiego celu.
sudip
@sudip, Cel jest oczywisty, Aby kod działający na HTTP działał również z HTTPS bez dodatkowego kodowania.
Pacerier
1
Chociaż jest to przydatne, wydaje się niezwykle niepewne, aby umożliwić dostęp do maszyny deweloperskiej do otwartego Internetu. Korzystanie z czegoś takiego spowoduje zwolnienie u pracodawcy świadomego bezpieczeństwa.
Andy M,
@Mniam mniam mniam . To było całkowicie darmowe wcześniej w V 1. Ale porty http i https są nadal wolne w v 2 (nie wiem, czy jest jakieś ograniczenie portów, czy istnieje bezpłatny plan). Sprawdź bezpłatny plan tutaj: ngrok.com/product#pricing
sudip
24
tutaj jest najprostszy sposób, aby to zrobić
najpierw skopiuj te pliki server.crt i server.key (znajdź w załączniku) do katalogu apache / conf / ssl
następnie otwórz plik httpd.conf i dodaj następujący wiersz
Musiałem włączyć także moduł LoadModule ssl_module libexec / apache2 / mod_ssl.so w (/etc/apache2/httpd.conf)
Alexey
17
Zastanawiam się, jak bezpieczne / niebezpieczne jest pobieranie plików * .crt * .key z niezaufanego źródła zamiast generowania własnego.
Petr Peller
4
@PetrPeller konfigurujemy https dla rozwoju lokalnego, więc dlaczego zastanawiasz się nad bezpiecznym / niebezpiecznym
Anil Gupta
7
Świetne byłoby wyjaśnienie, jak wygenerować te pliki. Ponieważ pobieranie plików z nieznanego źródła jest złą praktyką, ale także dlatego, że tego rodzaju łącza w pewnym momencie się zepsują.
Aby zabezpieczyć bezpieczeństwo informacji przesyłanych do iz serwera internetowego, dobrym pomysłem jest włączenie szyfrowania komunikacji między klientami a serwerem. Jest to często nazywane SSL .
Więc skonfigurujmy HTTPS z samopodpisanym certyfikatem na Apache2. Mam zamiar wymienić kroki, które powinieneś wykonać:
Zainstaluj serwer WWW Apache2 na swoim komputerze. W przypadku maszyny linuxowej otwórz terminal i typ
sudo apt-get install apache2
Po pomyślnej instalacji sprawdź status usługi apache2, wykonując polecenie
Sprawdź, czy otrzymujesz domyślną stronę apache2 w ten sposób.
Do szyfrowania połączenia internetowego potrzebujemy certyfikatu z urzędu certyfikacji (CA) lub możemy użyć certyfikatów z podpisem własnym. Utwórzmy samopodpisany certyfikat za pomocą następującego polecenia.
Proszę odpowiednio wypełnić informacje, jak pokazano poniżej.
mykey.key i mycert.pem powinny zostać utworzone w bieżącym katalogu roboczym.
Byłoby miło, gdybyśmy przenieśli certyfikaty i klucze we wspólne miejsce i serwer apache2 będzie je łatwo znajdował. Wykonajmy więc następujące polecenia
sudo cp mycert.pem / etc / ssl / certs
sudo cp mykey.key / etc / ssl / private
Włączmy tryb SSL na twoim serwerze
sudo a2enmod ssl
Powinien wyglądać tak
Skonfigurujmy apache2, aby używał samopodpisanego certyfikatu i klucza, który wygenerowaliśmy powyżej.
sudo vi /etc/apache2/sites-available/default-ssl.conf
Znajdź te dwa wiersze i zamień je na swoje certyfikaty i ścieżki dostępu.
Inicjał
Finał
Włącz witrynę
cd / etc / apache2 / sites-available /
sudo a2ensite default-ssl.conf
Uruchom ponownie usługę apache2
usługa sudo apache2 restart
Sprawdź serwer WWW Apache2 na HTTPS. Otwórz przeglądarkę ponownie i wpisz
Powinien wyświetlać coś takiego z ostrzeżeniem, że strona, którą zamierzasz wyświetlić, nie jest bezpieczna, ponieważ skonfigurowaliśmy serwer z certyfikatem z podpisem własnym.
Gratulacje, skonfigurowałeś swój apache2 z punktem końcowym HTTPS, teraz kliknij zaawansowane -> dodaj wyjątek -> potwierdź wyjątek bezpieczeństwa , ponownie zobaczysz stronę domyślną.
Wolę nie edytować żadnego pliku konfiguracyjnego, jeśli mogę, więc wyszedłem bez zmian default-ssl.conf. Miałem zamiar zmienić nazwę mycertna ssl-cert-snakeoilale ten plik już istnieje, więc po prostu stosować to! Mogłem więc bezpiecznie pominąć dwa kroki na Debianie.
Rolf
@Rolf Zgadzam się z tobą, ale w produkcji zawsze jest tak, że używasz nowego certyfikatu i klucza. Aby pokazać, jak można je stworzyć, dodałem 2 dodatkowe kroki dla Debiana. Dzięki :)
Dinesh Kumar
9
Windows + Apache 2.4, na przykład:
odkomentuj ssl_module w twoim httpd.confpliku.
LoadModule ssl_module modules/mod_ssl.so
posłuchaj portu 443, podobnie jak 80 portów w twoim httpd.confpliku.
Listen 80
Listen 443
odkomentuj Dołącz wirtualne hosty do swojego httpd.confpliku.
# Virtual hosts
Include conf/extra/httpd-vhosts.conf
dodaj VirtualHost do swojego 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>
tylko numer portu 443i SSL......linie różnią się od normalnej konfiguracji http.
zapisz plik konfiguracyjny i uruchom ponownie usługę Apache. następnie możesz odwiedzić https: // localhost /
Przeglądarka internetowa ostrzeże Cię po raz pierwszy, że jest niebezpieczna, po prostu wybierz opcję kontynuuj.
Działa to dla mnie na XP Home, Apache 2.4. Skopiowałem 2 pliki certyfikatów z poprzedniego postu (autor: Anil Gupta). Niekomentowany mod_ssl i dołączony httpd-vhosts.conf do httpd.conf, dodał dyrektywę VirtualHost Anila Gupty (z pewnymi ścieżkami dostosowanymi) w httpd-vhosts.conf.
jogi99
7
To jest naprawdę dość łatwe, zakładając, że masz pod ręką instalację openssl. (Na jakiej platformie jesteś?)
Zakładając, że jesteś na Linuksie / Solaris / Mac OS / X, Van Apache SSL / TLS mini-HOWTO ma doskonały przewodnik, którego nie będę tutaj reprodukować.
Jednak streszczenie jest takie, że musisz utworzyć samopodpisany certyfikat. Ponieważ uruchamiasz apache dla hosta lokalnego prawdopodobnie w celach programistycznych (tj. Nie jest to publiczny serwer WWW), będziesz wiedział, że możesz zaufać samopodpisanemu certyfikatowi i możesz zignorować ostrzeżenia, które wyświetli ci przeglądarka.
Cześć, pracuję w systemie operacyjnym Windows. A jeśli chodzi o samopodpisany certyfikat, czy muszę go pobrać, czy w jakikolwiek inny sposób?
KennC.
3
Nie. Sam zrobisz samopodpisany certyfikat. Czy masz konfigurację apache httpd + ssl? Aby to zrobić, będziesz potrzebować ssl. Ta strona: rubayathasan.com/tutorial/apache-ssl-on-windows ma dobre informacje na temat uzyskiwania ssl w systemie Windows. Będziesz wykonywał pewne operacje w wierszu poleceń, ale i tak jest to dla ciebie dobre. :-)
I trzeba uruchomić systemctl reload apache2po sudo a2ensite default-ssl.conf.
do
2
Aktualizacja 2019
Publikuję tę odpowiedź, ponieważ sam zmagałem się z tym, a Chrome zaktualizował swoje zabezpieczenia, wymagając alternatywnej nazwy podmiotu, której nie ma wiele postów, ponieważ nie było to wymagane, gdy zostały opublikowane jako odpowiedź. Zakładam, że WAMP jest już zainstalowany.
Chociaż ta część jest opcjonalna, ale ułatwia późniejsze wykonywanie poleceń. Jeśli pominiesz ten krok, musisz podać pełną ścieżkę do openssl.exe, w którym wykonasz polecenie. Jeśli wolisz to ustawić, zaktualizuj ścieżkę openssl.exe w Zmiennych środowiskowych.
Zmienne środowiskowe -> Zmienne systemowe -> Ścieżka -> Edytuj -> Nowe -> c: \ Program Files \ OpenSSL-Win64 \ bin
KROK 3
Utwórz folder o nazwie „klucz” w c:/wamp64/bin/apache/apache2.4.27(your version number)/conf/katalogu.
Utwórz plik konfiguracyjny dla swojego CA MyCompanyCA.cnf z zawartością (możesz go zmienić do swoich potrzeb):
[ 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
Utwórz plik konfiguracyjny rozszerzeń MyCompanyLocalhost.ext dla certyfikatu serwera WWW:
Tak, to działa. Użyłem kroków 1–3 z StephanieQ do wygenerowania certyfikatu, a następnie „openssl x509 -req -in server.csr -signkey server.key -out server.crt” do wygenerowania pliku * .crt z cygwinem.
Możesz go hostować samodzielnie, dzięki czemu możesz korzystać z własnej domeny i być zabezpieczonym na przyszłość, nawet jeśli usługa przestanie działać.
Nie mogłem uwierzyć, kiedy znalazłem tę usługę. Oferuje wszystko i jest najłatwiejszy w użyciu. Gdyby istniało takie łatwe i bezbolesne narzędzie dla każdego problemu ...
Uruchamianie Apache na Windows 10 tutaj. Nie mogłem przekonać Chrome, by zaufał certyfikatowi postawionemu w pierwszej odpowiedzi przez Simona. Skończyło się na użyciu programu PowerShell do wygenerowania certyfikatu z podpisem własnym.
Krok 1 - Wygeneruj certyfikat z podpisem własnym
W PowerShell New-SelfSignedCertificate -DnsName "localhost" -CertStoreLocation "cert:\LocalMachine\My"1
Krok 2 - Skonfiguruj i wyeksportuj certyfikat
Wpisz Certificatew pasek wyszukiwania systemu Windows, kliknij Manage Computer Certificatessugerowany element panelu sterowania.
W programie zarządzania certyfikatami, który się pojawi (certlm), powinieneś zobaczyć localhostklucz poniżej Personal >> Certificates.
Skopiowałem ten certyfikat do Trusted Root Certification Authorities. Będę szczery, ponieważ nie jestem pewien, czy to konieczne.
Wybierz nowo skopiowany certyfikat, kliknij go dwukrotnie (certyfikat localhost). W trybie certyfikatu kliknij Detailskartę, a następnie Copy to File...przycisk.
Spowoduje to wyświetlenie i Kreatora eksportu. Wybrałem eksport klucza prywatnego, kliknij przycisk Dalej. Zdecydowałem się również Export all extended properties(ponownie, nie jestem pewien, czy było to konieczne). Wybrałem proste hasło ( pass) i domyślne szyfrowanie. Wybierz folder do wyeksportowania i nazwij plik. W razie potrzeby zawsze możesz przenieść plik i zmienić jego nazwę. Dla uproszczenia skopiujmy go do folderu conf w instalacji Apache (w moim przypadku:) i nazwijmy C:\apache\confplik myCert(plik wynikowy będzie .pfxplikiem)
Krok 3 - Konwertuj .pfxplik do użytku z Apache
Odtąd po prostu podążałem za tutorialem tutaj , ale dodam tutaj instrukcje (poprawione dla naszych ustawień) na wypadek, gdyby strona się zawiesiła.
Otwórz wiersz polecenia w /apache/conf/folderze
uruchomić następujące polecenia: Uwaga: Zakłada masz openssl.exew binfolderze w katalogu głównym Apache (powinno to być standardowe default /)
Pojawi się monit o podanie hasła, wprowadź dane wprowadzone w kroku 2 podczas eksportowania .pfxpliku. W moim przypadku tak jest pass. Wprowadziłem to samo hasło do frazy PEM i ponownie, aby to zweryfikować. Spowoduje to utworzenie nowego pliku o nazwie privateKey.pemw folderze conf.
Ponownie pojawi się monit o podanie hasła ( Enter pass phrase for privateKey.pem:), użyj ustawionego hasła privateKey.pem. (W moim przypadku pass).
Powinieneś zobaczyć wiadomość writing RSA keyz nowym plikiem wywołanym private.pemw twoim conf/folderze. To będzie twój SSLCertificateKeyFile.
Teraz, aby wygenerować odpowiedni certyfikat serwera. Biegać:
Pojawi się monit o podanie hasła, wprowadź dane wprowadzone w kroku 2 podczas eksportowania .pfxpliku. Wpisz go, a będziesz mieć plik o nazwie EntrustCert.pemw conffolderze. To jest twój plik SSLCertificateFile
Krok 4 - Skonfiguruj httpd.conf
Użyj nowych plików utworzonych jako klucz i certyfikat serwera. Pamiętaj, aby zmienić katalog główny dokumentu na lokalizację plików!
Upewnij się, że nie LoadModule ssl_module modules/mod_ssl.soma komentarza (nie #z przodu)
Brak komentarza LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
Brak komentarza LoadModule http2_module modules/mod_http2.so
Uncomment Include conf/extra/httpd-ssl.conf(UWAGA: Upewnij się, że tam jest plik!)
Mam również curl i otwarte biblioteki ssl zawarte:
# load curl and open ssl libraries
LoadFile "C:\php\libeay32.dll"
LoadFile "C:\php\ssleay32.dll"
LoadFile "C:\php\libssh2.dll"
Te moduły nie powinny być potrzebne, ale zauważę, że mam je włączone: LoadModule rewrite_module modules/mod_rewrite.so LoadModule filter_module modules/mod_filter.so LoadModule deflate_module modules/mod_deflate.so
Krok 5 - Konfiguracja httpd-ssl.conf
W extra/folderze w conf/folderze powinieneś zobaczyć plik o nazwie httpd-ssl.conf.
5a. ZmieńDocumentRoot - Zmień DocumentRootz domyślnego na katalog, w którym znajdują się twoje pliki.
# 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"
Uruchom ponownie Apache
Po dokonaniu tych zmian powinieneś być w stanie zrestartować Apache i przejść do https: // localhost bez ostrzeżenia bezpieczeństwa i małej kłódki!
i uzyskaj dostęp do strony na dowolnym urządzeniu podłączonym do sieci. Jest to bardzo przydatne w przypadkach takich jak „musisz przetestować API GeoLocation HTML5 na telefonie komórkowym, a Chrome ogranicza API tylko w bezpiecznych połączeniach”.
Chciałbym dodać coś do bardzo dobrej odpowiedzi @CodeWarrior, która działa idealnie w Chrome, ale dla Firefox wymaga dodatkowego kroku.
Ponieważ Firefox nie przekazuje certyfikatów CA, które domyślnie robi system Windows, musisz przejść dalej about:config, przewinąć w dół security.enterprise_roots.enabled i zmienić na true.
Teraz twój certyfikat powinien być uważany za ważny również w przeglądarce Firefox.
Oczywiście służy to wyłącznie celom programistycznym, ponieważ zaufanie SSL jest kluczowym problemem bezpieczeństwa i zmieniaj te ustawienia tylko, jeśli znasz implikacje.
ssh -R youruniquesubdomain:80:localhost:3000 serveo.net
Podaj swoją subdomenę i numer portu, a będziesz gotowy dohttps://youruniquesubdomain.serveo.net
Odpowiedzi:
Właśnie próbowałem - musiałem przetestować kod programistyczny na moim lokalnym hoście Apache w systemie Windows . To było WIĘCEJ trudniejsze niż powinno być. Ale oto kroki, które zdołały zadziałać po wielu zabiegach na głowie ...
Przekonałem się, że moja instalacja Apache jest dostarczana,
openssl.exe
co jest pomocne. Jeśli nie masz kopii, musisz ją pobrać. Moja kopia znajdowała się wApache2\bin
folderze, dlatego też odsyłam do niej poniżej.Kroki:
Apache2\conf
folderze..\bin\openssl req -config openssl.cnf -new -out blarg.csr -keyout blarg.pem
Możesz pozostawić wszystkie pytania puste, z wyjątkiem:
Po zakończeniu wpisz
..\bin\openssl rsa -in blarg.pem -out blarg.key
Wygeneruj swój samopodpisany certyfikat, wpisując:
..\bin\openssl x509 -in blarg.csr -out blarg.cert -req -signkey blarg.key -days 365
Otwórz
conf\httpd.conf
plik Apache i upewnij się, że moduł SSL jest włączony - na początku tego wiersza nie powinno być haszu:LoadModule ssl_module modules/mod_ssl.so
Niektóre instalacje Apache umieszczają konfigurację SSL w osobnym pliku. Jeśli tak, upewnij się, że dołączono plik konf. SSL. W moim przypadku musiałem odkomentować tę linię:
Include conf/extra/httpd-ssl.conf
W konfiguracji SSL
httpd-ssl.conf
musiałem zaktualizować następujące linie:SSLSessionCache "shmcb:C:\Program Files (x86)\Zend\Apache2/logs/ssl_scache(512000)"
do
SSLSessionCache "shmcb:C:/Progra\~2/Zend/Apache2/logs/ssl_scache(512000)"
(nawiasy na ścieżce dezorientują moduł, więc musimy uciec)
DocumentRoot
- ustaw ten folder na swoje pliki internetoweServerName
- nazwa hosta serweraSSLCertificateFile "conf/blarg.cert"
SSLCertificateKeyFile "conf/blarg.key"
Uruchom ponownie Apache.
https://localhost/
w przeglądarce.Mam nadzieję, że dotarłeś tak daleko. Zaktualizuj ten post za pomocą innych pomocnych informacji.
(Zrzuty ekranu dzięki uprzejmości Neila Obremskiego i jego pomocnego artykułu - choć teraz są nieaktualne.)
źródło
Używam do tego ngrok ( https://ngrok.com/ ). ngrok jest narzędziem wiersza poleceń i tworzy tunel dla hosta lokalnego. Tworzy połączenie zarówno HTTP, jak i https. Po pobraniu należy uruchomić następujące polecenie:
(W wersji 2 składnia jest następująca: ngrok http 80. W wersji 2 można tunelować dowolny port).
Po kilku sekundach otrzymasz dwa adresy URL:
Teraz oba adresy URL wskazują na localhost.
źródło
tutaj jest najprostszy sposób, aby to zrobić
najpierw skopiuj te pliki server.crt i server.key (znajdź w załączniku) do katalogu apache / conf / ssl
następnie otwórz plik httpd.conf i dodaj następujący wiersz
źródło
Aby zabezpieczyć bezpieczeństwo informacji przesyłanych do iz serwera internetowego, dobrym pomysłem jest włączenie szyfrowania komunikacji między klientami a serwerem. Jest to często nazywane SSL .
Więc skonfigurujmy HTTPS z samopodpisanym certyfikatem na Apache2. Mam zamiar wymienić kroki, które powinieneś wykonać:
Powinien wyjść
Sprawdź, czy otrzymujesz domyślną stronę apache2 w ten sposób.
Proszę odpowiednio wypełnić informacje, jak pokazano poniżej.
mykey.key i mycert.pem powinny zostać utworzone w bieżącym katalogu roboczym.
Powinien wyglądać tak
Znajdź te dwa wiersze i zamień je na swoje certyfikaty i ścieżki dostępu.
Inicjał
Finał
Powinien wyświetlać coś takiego z ostrzeżeniem, że strona, którą zamierzasz wyświetlić, nie jest bezpieczna, ponieważ skonfigurowaliśmy serwer z certyfikatem z podpisem własnym.
źródło
default-ssl.conf
. Miałem zamiar zmienić nazwęmycert
nassl-cert-snakeoil
ale ten plik już istnieje, więc po prostu stosować to! Mogłem więc bezpiecznie pominąć dwa kroki na Debianie.Windows + Apache 2.4, na przykład:
odkomentuj ssl_module w twoim
httpd.conf
pliku.posłuchaj portu 443, podobnie jak 80 portów w twoim
httpd.conf
pliku.odkomentuj Dołącz wirtualne hosty do swojego
httpd.conf
pliku.dodaj VirtualHost do swojego
conf/extra/httpd-vhosts.conf
tylko numer portu
443
iSSL......
linie różnią się od normalnej konfiguracji http.zapisz plik konfiguracyjny i uruchom ponownie usługę Apache. następnie możesz odwiedzić https: // localhost /
Przeglądarka internetowa ostrzeże Cię po raz pierwszy, że jest niebezpieczna, po prostu wybierz opcję kontynuuj.
źródło
To jest naprawdę dość łatwe, zakładając, że masz pod ręką instalację openssl. (Na jakiej platformie jesteś?)
Zakładając, że jesteś na Linuksie / Solaris / Mac OS / X, Van Apache SSL / TLS mini-HOWTO ma doskonały przewodnik, którego nie będę tutaj reprodukować.
Jednak streszczenie jest takie, że musisz utworzyć samopodpisany certyfikat. Ponieważ uruchamiasz apache dla hosta lokalnego prawdopodobnie w celach programistycznych (tj. Nie jest to publiczny serwer WWW), będziesz wiedział, że możesz zaufać samopodpisanemu certyfikatowi i możesz zignorować ostrzeżenia, które wyświetli ci przeglądarka.
źródło
To powinno działać Ubuntu, Mint podobny do Apache2
To fajny przewodnik, więc podążaj za tym
https://www.digitalocean.com/community/tutorials/how-to-create-a-ssl-certificate-on-apache-for-ubuntu-14-04
i pozostawiając swój ssl.conf w ten lub podobny sposób
Możesz to dostać.
Mam nadzieję, że ta pomoc dla Linuksa
źródło
To jest bardzo proste,
po prostu uruchom następujące polecenia
To już koniec.
Jeśli chcesz wymusić SSL (zawsze używać https), edytuj plik:
i dodaj tę jedną linię
następnie uruchom ponownie
źródło
systemctl reload apache2
posudo a2ensite default-ssl.conf
.Aktualizacja 2019
Publikuję tę odpowiedź, ponieważ sam zmagałem się z tym, a Chrome zaktualizował swoje zabezpieczenia, wymagając alternatywnej nazwy podmiotu, której nie ma wiele postów, ponieważ nie było to wymagane, gdy zostały opublikowane jako odpowiedź. Zakładam, że WAMP jest już zainstalowany.
KROK 1
Pobierz OpenSSL Light i zainstaluj
KROK 2 (opcjonalnie)
Chociaż ta część jest opcjonalna, ale ułatwia późniejsze wykonywanie poleceń. Jeśli pominiesz ten krok, musisz podać pełną ścieżkę do openssl.exe, w którym wykonasz polecenie. Jeśli wolisz to ustawić, zaktualizuj ścieżkę openssl.exe w Zmiennych środowiskowych.
KROK 3
Utwórz folder o nazwie „klucz” w
c:/wamp64/bin/apache/apache2.4.27(your version number)/conf/
katalogu.Utwórz plik konfiguracyjny dla swojego CA MyCompanyCA.cnf z zawartością (możesz go zmienić do swoich potrzeb):
Utwórz plik konfiguracyjny rozszerzeń MyCompanyLocalhost.ext dla certyfikatu serwera WWW:
KROK 4
Wykonaj następujące polecenia w podanej kolejności, aby wygenerować klucz i certyfikaty:
W rezultacie będziesz mieć pliki MyCompanyCA.cer , MyCompanyLocalhost.cer i MyCompanyLocalhost.pvk .
KROK 5
Zainstaluj MyCompanyCA.cer pod
Aby zainstalować MyCompanyLocalhost.cer, wystarczy dwukrotnie kliknąć.
KROK 6
Otwórz
c:/wamp64/bin/apache/apache2.4.27(your version number)/conf/httpd.conf
i anuluj komentarz (usuń #) następujące 3 linie:KROK 7
Otwórz
c:/wamp64/bin/apache/apache2.4.37/conf/extra/httpd-ssl.conf
i zmień wszystkie parametry na te pokazane poniżej:Uwaga: To trudna część. Jeśli popełnisz mały błąd podczas edycji tego pliku, SSL nie będzie działać. Zrób jego kopię przed edycją.
KROK 8
Uruchom ponownie Wampa i Chrome. Localhost jest teraz bezpieczny: https: // localhost
źródło
To HowTo dla CentOS było łatwe do naśladowania i zajęło tylko około 5 minut: https://wiki.centos.org/HowTos/Https
Nie będę tutaj szczegółowo opisywać każdego kroku, ale główne kroki to:
1.) Zainstaluj moduł openssl dla apache, jeśli jeszcze nie został zainstalowany
2.) Wygeneruj samopodpisany certyfikat
- W tym momencie powinieneś móc pomyślnie odwiedzić https: // localhost
3.) W razie potrzeby skonfiguruj hosta wirtualnego
źródło
Działa to w systemie Windows 10 z Apache24:
1 - Dodaj to na dole
C:/Apache24/conf/httpd.conf
2 - Dodaj pliki
server.crt
iserver.key
doC:/Apache24/conf/ssl
folderu. Zobacz inne odpowiedzi na tej stronie, aby znaleźć te 2 pliki.Otóż to!
źródło
tl; dr
Dostęp do lokalnego środowiska można uzyskać z https://youruniquesubdomain.serveo.net
Serveo jest najlepszy
Nie mogłem uwierzyć, kiedy znalazłem tę usługę. Oferuje wszystko i jest najłatwiejszy w użyciu. Gdyby istniało takie łatwe i bezbolesne narzędzie dla każdego problemu ...
źródło
Uruchamianie Apache na Windows 10 tutaj. Nie mogłem przekonać Chrome, by zaufał certyfikatowi postawionemu w pierwszej odpowiedzi przez Simona. Skończyło się na użyciu programu PowerShell do wygenerowania certyfikatu z podpisem własnym.
Krok 1 - Wygeneruj certyfikat z podpisem własnym
W PowerShell
New-SelfSignedCertificate -DnsName "localhost" -CertStoreLocation "cert:\LocalMachine\My"
1Krok 2 - Skonfiguruj i wyeksportuj certyfikat
Wpisz
Certificate
w pasek wyszukiwania systemu Windows, kliknijManage Computer Certificates
sugerowany element panelu sterowania.W programie zarządzania certyfikatami, który się pojawi (certlm), powinieneś zobaczyć
localhost
klucz poniżejPersonal >> Certificates
.Skopiowałem ten certyfikat do
Trusted Root Certification Authorities
. Będę szczery, ponieważ nie jestem pewien, czy to konieczne.Wybierz nowo skopiowany certyfikat, kliknij go dwukrotnie (certyfikat localhost). W trybie certyfikatu kliknij
Details
kartę, a następnieCopy to File...
przycisk.Spowoduje to wyświetlenie i Kreatora eksportu. Wybrałem eksport klucza prywatnego, kliknij przycisk Dalej. Zdecydowałem się również
Export all extended properties
(ponownie, nie jestem pewien, czy było to konieczne). Wybrałem proste hasło (pass
) i domyślne szyfrowanie. Wybierz folder do wyeksportowania i nazwij plik. W razie potrzeby zawsze możesz przenieść plik i zmienić jego nazwę. Dla uproszczenia skopiujmy go do folderu conf w instalacji Apache (w moim przypadku:) i nazwijmyC:\apache\conf
plikmyCert
(plik wynikowy będzie.pfx
plikiem)Krok 3 - Konwertuj
.pfx
plik do użytku z ApacheOdtąd po prostu podążałem za tutorialem tutaj , ale dodam tutaj instrukcje (poprawione dla naszych ustawień) na wypadek, gdyby strona się zawiesiła.
Otwórz wiersz polecenia w
/apache/conf/
folderzeuruchomić następujące polecenia: Uwaga: Zakłada masz
openssl.exe
wbin
folderze w katalogu głównym Apache (powinno to być standardowe default /)Pojawi się monit o podanie hasła, wprowadź dane wprowadzone w kroku 2 podczas eksportowania
.pfx
pliku. W moim przypadku tak jestpass
. Wprowadziłem to samo hasło do frazy PEM i ponownie, aby to zweryfikować. Spowoduje to utworzenie nowego pliku o nazwieprivateKey.pem
w folderze conf.Następnie uruchomić
Ponownie pojawi się monit o podanie hasła (
Enter pass phrase for privateKey.pem:
), użyj ustawionego hasłaprivateKey.pem
. (W moim przypadkupass
).Powinieneś zobaczyć wiadomość
writing RSA key
z nowym plikiem wywołanymprivate.pem
w twoimconf/
folderze. To będzie twój SSLCertificateKeyFile.Teraz, aby wygenerować odpowiedni certyfikat serwera. Biegać:
Pojawi się monit o podanie hasła, wprowadź dane wprowadzone w kroku 2 podczas eksportowania
.pfx
pliku. Wpisz go, a będziesz mieć plik o nazwieEntrustCert.pem
wconf
folderze. To jest twój plik SSLCertificateFileKrok 4 - Skonfiguruj
httpd.conf
Użyj nowych plików utworzonych jako klucz i certyfikat serwera. Pamiętaj, aby zmienić katalog główny dokumentu na lokalizację plików!
Również w
httpd.conf
:LoadModule ssl_module modules/mod_ssl.so
ma komentarza (nie#
z przodu)LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
LoadModule http2_module modules/mod_http2.so
Include conf/extra/httpd-ssl.conf
(UWAGA: Upewnij się, że tam jest plik!)Mam również curl i otwarte biblioteki ssl zawarte:
Te moduły nie powinny być potrzebne, ale zauważę, że mam je włączone:
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule filter_module modules/mod_filter.so
LoadModule deflate_module modules/mod_deflate.so
Krok 5 - Konfiguracja
httpd-ssl.conf
W
extra/
folderze wconf/
folderze powinieneś zobaczyć plik o nazwiehttpd-ssl.conf
.5a. Zmień
DocumentRoot
- ZmieńDocumentRoot
z domyślnego na katalog, w którym znajdują się twoje pliki.5b. Zmień
ServerName
- ZmieńServerName
z domyślnego (coś podobnegowww.example.com:443
) nalocalhost:443
5c. Zmień
SSLCertificateFile
Zmień
SSLCertificateFile
z domyślnego (${SRVROOT}/conf/server.crt
) na${SRVROOT}/conf/EntrustCert.pem
5c. Zmień
SSLCertificateKeyFile
Zmień
SSLCertificateKeyFile
z domyślnego (${SRVROOT}/conf/server.key
) na${SRVROOT}/conf/private.pem
Wszystko razem w
<VirtualHost _default_:443>
tagu.Uruchom ponownie Apache
Po dokonaniu tych zmian powinieneś być w stanie zrestartować Apache i przejść do https: // localhost bez ostrzeżenia bezpieczeństwa i małej kłódki!
Mam nadzieję, że to komuś pomoże! 😊
Źródła:
1.) Odpowiedź Auri Rahimzadeha na temat utworzenia samopodpisanego certyfikatu
2.) Entrust Datacard - Jak przekonwertować plik .pfx na serwer Apache?
źródło
Inną prostą metodą jest użycie Python Server w Ubuntu.
Wygeneruj server.xml za pomocą następującej komendy w terminalu:
openssl req -new -x509 -keyout server.pem -out server.pem -days 365 -nodes
Uwaga: Zakładając, że masz zainstalowany openssl .
Zapisz poniższy kod w pliku o nazwie
simple-https-server.py
w dowolnym katalogu, w którym chcesz uruchomić serwer.Uruchom serwer z terminala:
python simple-https-server.py
Odwiedź stronę pod adresem:
https://localhost:4443
Dodatkowe uwagi :
Możesz zmienić port w
simple-https-server.py
pliku w liniihttpd = BaseHTTPServer.HTTPServer(('localhost', 4443), SimpleHTTPServer.SimpleHTTPRequestHandler)
Możesz zmienić
localhost
swój adres IP w tej samej linii powyżej:httpd = BaseHTTPServer.HTTPServer(('10.7.1.3', 4443), SimpleHTTPServer.SimpleHTTPRequestHandler)
i uzyskaj dostęp do strony na dowolnym urządzeniu podłączonym do sieci. Jest to bardzo przydatne w przypadkach takich jak „musisz przetestować API GeoLocation HTML5 na telefonie komórkowym, a Chrome ogranicza API tylko w bezpiecznych połączeniach”.
Gist: https://gist.github.com/dergachev/7028596
http://www.piware.de/2011/01/creating-an-https-server-in-python/
źródło
Dla tych, którzy używają MacOS, jest to świetny przewodnik https://getgrav.org/blog/macos-sierra-apache-multiple-php-versions, aby skonfigurować lokalne środowisko deweloperskie. W trzeciej części https://getgrav.org/blog/macos-sierra-apache-ssl Andy Miller wyjaśnia, jak skonfigurować apache z certyfikatem z podpisem własnym:
To jest kluczowe polecenie:
Ale musisz wykonać kilka kroków, więc sprawdź to i powodzenia! ;)
źródło
Chciałbym dodać coś do bardzo dobrej odpowiedzi @CodeWarrior, która działa idealnie w Chrome, ale dla Firefox wymaga dodatkowego kroku.
Ponieważ Firefox nie przekazuje certyfikatów CA, które domyślnie robi system Windows, musisz przejść dalej
about:config
, przewinąć w dółsecurity.enterprise_roots.enabled
i zmienić na true.Teraz twój certyfikat powinien być uważany za ważny również w przeglądarce Firefox.
Oczywiście służy to wyłącznie celom programistycznym, ponieważ zaufanie SSL jest kluczowym problemem bezpieczeństwa i zmieniaj te ustawienia tylko, jeśli znasz implikacje.
źródło