Próbując postępować zgodnie z różnymi instrukcjami dotyczącymi tworzenia certyfikatu z podpisem własnym do użytku z hostem lokalnym. Większość instrukcji wydaje się być przeznaczona dla usług IIS, ale próbuję użyć Nodejs / Express. Żaden z nich nie działa poprawnie, ponieważ po zainstalowaniu certyfikatu nie jest zaufany. oto, co próbowałem, ale zawiodło:
- Jak mogę utworzyć certyfikat z podpisem własnym dla hosta lokalnego?
- https://www.digitalocean.com/community/articles/how-to-create-a-ssl-certificate-on-nginx-for-ubuntu-12-04/
- http://blogs.developerforce.com/developer-relations/2011/05/generating-valid-self-signed-certificates.html
- http://www.robbagby.com/iis/self-signed-certificates-on-iis-7-the-easy-way-and-the-most-effective-way/
Czy ktoś może zaoferować przepływ pracy, który może to zrobić? Mogę zainstalować certyfikat, ale nie mogę uzyskać zaufania ani w Chrome (v32), ani w IE (v10).
EDYCJA: zasugerowano w komentarzach, że problem nie dotyczy zaufanego katalogu głównego. Zainstalowałem certyfikat przez IE, ale nadal nie jest on zaufany.
Odpowiedzi:
Powyższe odpowiedzi były częściowe. Spędziłem tyle czasu, żeby to działało, to szaleństwo. Uwaga dla mojego przyszłego ja, oto co musisz zrobić:
Pracuję na Windows 10, z Chrome 65. Firefox zachowuje się ładnie - wystarczy potwierdzić localhost jako wyjątek bezpieczeństwa i będzie działać. Chrome nie:
Krok 1. W swoim zapleczu utwórz folder o nazwie
security
. będziemy w nim pracować.Krok 2. Utwórz plik konfiguracyjny żądania o nazwie
req.cnf
z następującą zawartością (autorstwo: @Anshul )req.cnf:
Objaśnienie tych pól znajduje się tutaj .
Krok 3. Przejdź do folderu zabezpieczeń w terminalu i wpisz następujące polecenie:
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout cert.key -out cert.pem -config req.cnf -sha256
Krok 4. następnie poza
security
folderem, w aplikacji ekspresowej zrób coś takiego: (autorstwo: @Diego Mello)server.js:
Krok 5. Uruchom serwer
node server.js
i przejdź do https: // localhost: 3000 .W tym momencie mamy konfigurację serwera. Ale przeglądarka powinna wyświetlić komunikat ostrzegawczy.
Musimy zarejestrować nasz samopodpisany certyfikat jako zaufany urząd certyfikacji CA w magazynie certyfikatów Chrome / Windows. (Chrome również zapisuje to w oknach)
Krok 6. Otwórz Dev Tools w chrome, przejdź do panelu Security, a następnie kliknij View Certificate.
Krok 7. Przejdź do panelu Szczegóły, kliknij Kopiuj plik, a gdy pojawi się Kreator eksportu certyfikatów, kliknij Dalej, jak poniżej:
Krok 8. Pozostaw kodowanie DER, kliknij dalej, wybierz
Browse
, umieść go w łatwo dostępnym folderze, takim jak Pulpit, i nazwij certyfikatlocalhost.cer, then click Save and then Finish.
. Certyfikat powinien być widoczny na komputerze.Krok 9. Otwórz
chrome://settings/
, wstawiając go w polu adresu URL. Kliknij poniżej,Advanced / Advanced Options
a następnie przewiń w dół, aby znaleźćManage Certificates
.Krok 10. Przejdź do panelu Zaufane główne urzędy certyfikacji i kliknij importuj.
Zaimportujemy
localhost.cer
certyfikat, który właśnie zakończyliśmy eksportować w kroku 8.Krok 11. kliknij przeglądaj, znajdź
localhost.cer
, pozostaw wartości domyślne kliknij kilka razy dalej - dopóki nie pojawi się to ostrzeżenie, kliknij tak.Krok 12. Zamknij wszystko i uruchom ponownie Chrome. Następnie jadąc do
https://localhost:3000
Ciebie powinieneś zobaczyć:źródło
https://localhost:3000
i Chrome blokuje się podczas ładowania. Każdy może powiedzieć, co może być przyczyną?crl+shift+i
lub,F12
aby otworzyć konsolę.DNS.1 = server.local
Następnie na komputerze łączącym zaktualizuj plik HOSTS, aby wskazywał adres IP serwera na nazwę hosta, na przykład:192.168.0.50 server.local
To będzie zezwól certyfikatowi i adresowi na dopasowanie i zweryfikuj certyfikat.Najkrótsza droga. Przetestowano na MacOS, ale może działać podobnie w innych systemach operacyjnych.
Wygeneruj pem
Twój serwer ekspresowy
https://localhost:3000
w Google Chrome, a zobaczysz, że nie jest to bezpieczne. Jeszcze!źródło
Drag image to your desktop and double click it
-> nie mogę niczego przeciągnąć na pulpit, nie można tego przeciągnąć .. O czymimage
dokładnie mówisz?openssl req -newkey rsa:2048 -x509 -nodes -keyout keytmp.pem -new -out cert.pem -subj /CN=localhost -reqexts SAN -extensions SAN -config <(cat /System/Library/OpenSSL/openssl.cnf <(printf '[SAN]\nsubjectAltName=DNS:localhost')) -sha256 -days 3650
zamiast pierwszej sugerowanej linii. A także ten zada mniej pytań ...Możesz spróbować openSSL do generowania certyfikatów. Spojrzeć na to .
Będziesz potrzebował pliku .key i .crt, aby dodać HTTPS do serwera ekspresowego JS węzła. Po wygenerowaniu tego kodu użyj tego kodu, aby dodać HTTPS do serwera.
Działa to dobrze na moim komputerze lokalnym, a także na serwerze, na którym to wdrożyłem. Ten, który mam na serwerze, został kupiony od goDaddy, ale localhost miał certyfikat z podpisem własnym.
Jednak każda przeglądarka wyświetlała błąd informujący, że połączenie nie jest zaufane, czy chcesz kontynuować. Po kliknięciu Kontynuuj wszystko działało dobrze.
Jeśli ktoś kiedykolwiek obejrzał ten błąd z certyfikatem z podpisem własnym, proszę oświecić.
źródło
openssl genrsa -out key.pem 2048
dla lepszego klucza.Jak wygenerować certyfikat SSL dla hosta lokalnego: link
w tym miejscu należy wprowadzić hasło , które należy wpisać ponownie w kolejnych krokach
gdy zostaniesz zapytany o "Common Name", wpisz: localhost
źródło
cp server.crt /usr/local/share/ca-certificates/.
i uruchom.sudo update-ca-certificates
Następnie żądania https localhost działają pod NodeJS 8+. Id również wzrosną1024 to 2048
Oto, co działa dla mnie
w oknach
1) Dodaj to do pliku% WINDIR% \ System32 \ drivers \ etc \ hosts: 127.0.0.1 localdev.YOURSITE.net (powoduje, że przeglądarka ma problemy z 'localhost' (w przypadku skryptów między )
Systemy Windows Vista i Windows 7 Vista i Windows 7 korzystają z funkcji kontroli konta użytkownika (UAC), więc Notatnik musi być uruchomiony jako administrator.
Kliknij Start -> Wszystkie programy -> Akcesoria
Kliknij prawym przyciskiem Notatnik i wybierz Uruchom jako administrator
Kliknij Kontynuuj w oknie UAC „Windows potrzebuje Twojej zgody”.
Po otwarciu Notatnika Kliknij Plik -> Otwórz
W polu nazwy pliku wpisz C: \ Windows \ System32 \ Drivers \ etc \ hosts
Kliknij Otwórz
Dodaj to do pliku% WINDIR% \ System32 \ drivers \ etc \ hosts: 127.0.0.1 localdev.YOURSITE.net
Zapisać
Zamknij i uruchom ponownie przeglądarki
W systemie Mac lub Linux:
su
zgodą127.0.0.1 localdev.YOURSITE.net
Podczas programowania używasz localdev.YOURSITE.net zamiast localhost, więc jeśli używasz konfiguracji uruchom / debug w swoim IDE, pamiętaj, aby go zaktualizować.
Użyj ".YOURSITE.net" jako Cookiedomain (z kropką na początku) podczas tworzenia pliku cookie, to powinno działać ze wszystkimi subdomenami.
2) utwórz certyfikat przy użyciu tego pliku localdev.url
WSKAZÓWKA: Jeśli masz problemy z generowaniem certyfikatów w systemie Windows, użyj zamiast tego maszyny VirtualBox lub Vmware.
3) zaimportuj certyfikat zgodnie z opisem na http://www.charlesproxy.com/documentation/using-charles/ssl-certificates/
źródło
Mkcert z @FiloSottile sprawia, że ten proces jest nieskończenie prostszy:
mkcert -install
aby utworzyć lokalny ośrodek certyfikacjimkcert localhost 127.0.0.1 ::1
aby utworzyć zaufany certyfikat dla hosta lokalnego w bieżącym kataloguexport NODE_EXTRA_CA_CERTS="$(mkcert -CAROOT)/rootCA.pem"
Podstawowa konfiguracja węzła:
źródło
Jeśli korzystasz z systemu OSX / Chrome, możesz dodać samopodpisany certyfikat SSL do pęku kluczy systemu, jak wyjaśniono tutaj: http://www.robpeck.com/2010/10/google-chrome-mac-os-x-and certyfikaty ssl z podpisem własnym
To proces ręczny, ale w końcu działał. Po prostu upewnij się, że nazwa zwykła (CN) jest ustawiona na „localhost” (bez portu) i po dodaniu certyfikatu upewnij się, że wszystkie opcje zaufania w certyfikacie są ustawione na „Zawsze ufaj”. Upewnij się również, że dodajesz go do pęku kluczy „System”, a nie do pęku kluczy „logowania”.
źródło
Jeśli używasz węzła, dlaczego nie wygenerować ich za pomocą węzła? Ten moduł wydaje się być w pełni funkcjonalny:
Pamiętaj, że nie generowałbym w locie. Generuj za pomocą jakiegoś skryptu kompilacji, aby mieć spójny certyfikat i klucz. W przeciwnym razie za każdym razem będziesz musiał autoryzować nowo wygenerowany certyfikat z podpisem własnym.
źródło
Niektóre z opublikowanych odpowiedzi zawierają elementy, które były dla mnie bardzo przydatne w rozwiązaniu tego problemu. Jednak interesowała mnie również minimalna liczba kroków i najlepiej unikanie OpenSSL (w systemie Windows 10).
Tak więc jednym z krytycznych fragmentów odpowiedzi (kredyt: @ TroyWorks ) jest to, że musisz edytować plik HOSTS, aby utworzyć fikcyjny serwer i zmapować go na 127.0.0.1. Zakłada się, że zamierzasz zajmować się rozwojem lokalnym.
W moim przypadku używałem certyfikatu SS do zabezpieczenia gniazda sieciowego w NodeJS, do którego podłączałem się programowo (w przeciwieństwie do przeglądarki). Dlatego dla mnie krytyczne było, aby certyfikat został zaakceptowany bez ostrzeżeń i błędów, a krytycznym elementem było uzyskanie certyfikatu utworzonego z odpowiednim CN (i oczywiście zaakceptowanie certyfikatu w Zaufanych Władzach, jak opisano w innym miejscu w odpowiedziach) . Użycie usług IIS do utworzenia certyfikatu z podpisem własnym nie spowoduje utworzenia prawidłowego CN, więc odkryłem następujące proste polecenie przy użyciu programu PowerShell:
Należy to uruchomić w konsoli administracyjnej PS, ale po prostu działa i umieszcza certyfikat w sekcji „Osobiste” magazynu certyfikatów LocalMachine. Możesz sprawdzić, czy został utworzony, wykonując:
Aby mu zaufać, po prostu skopiuj to i wklej do „Zaufanych głównych urzędów certyfikacji” za pomocą Menedżera certyfikatów (upewnij się, że patrzysz na certyfikaty komputera lokalnego, a nie na Bieżącego użytkownika!).
Jeśli powiążesz się z tym certyfikatem w usługach IIS, powinieneś być w stanie trafić na https://gandalf.dummy.dev/ i uzyskać bezpieczne połączenie bez żadnych ostrzeżeń.
Ostatni fragment, wykorzystujący to w NodeJS, jest opisany powyżej i w innych odpowiedziach SO, więc dodam tylko, że w systemie Windows łatwiej jest pracować z plikiem pfx, który łączy certyfikat i klucz prywatny. Możesz łatwo wyeksportować plik pfx z Menedżera certyfikatów, ale ma to wpływ na sposób użycia go w NodeJS. Podczas tworzenia wystąpienia serwera przy użyciu modułu „https” opcje, których użyjesz (zamiast „key” i „cert”) to „pfx” i „passphrase”, na przykład:
źródło
W systemie Windows zaufałem certyfikatowi programistycznemu iis za pomocą MMC (start> uruchom> mmc), a następnie dodaję przystawkę certyfikatu, wybierając „komputer lokalny” i akceptując wartości domyślne. Po dodaniu tego przyciągania certyfikatu rozwiń drzewo certyfikatów komputera lokalnego, aby spojrzeć na Osobiste, wybierz certyfikat hosta lokalnego, kliknij prawym przyciskiem myszy> wszystkie zadania> eksportuj. zaakceptuj wszystkie ustawienia domyślne w kreatorze eksportu.
Po zapisaniu tego pliku rozwiń zaufane certyfikaty i zacznij importować certyfikat, który właśnie wyeksportowałeś.
https://localhost
jest teraz zaufany w Chrome i nie ma żadnych ostrzeżeń dotyczących bezpieczeństwa.Skorzystałem z tego przewodnika w rozwiązaniu nr 2 z bloga MSDN, op również udostępnił link w swoim pytaniu, aby również użyć MMC, ale to zadziałało dla mnie. rezolucja nr 2
źródło
Iść do:
chrome://flags/
Włącz: Zezwalaj na nieprawidłowe certyfikaty dla zasobów ładowanych z hosta lokalnego.
Nie masz zielonego zabezpieczenia, ale zawsze możesz korzystać z https: // localhost w chrome.
źródło
Jest w tym więcej aspektów.
Możesz osiągnąć TLS (niektórzy wciąż mówią, że SSL) za pomocą certyfikatu, samopodpisanego lub nie.
Aby mieć zielony pasek dla certyfikatu z podpisem własnym, musisz także zostać urzędem certyfikacji (CA). Tego aspektu brakuje w większości zasobów, które znalazłem podczas mojej podróży do osiągnięcia zielonego paska w mojej konfiguracji lokalnego rozwoju. Uzyskanie statusu CA jest tak proste, jak utworzenie certyfikatu.
Ten zasób obejmuje tworzenie zarówno certyfikatu CA, jak i certyfikatu serwera, i spowodował, że moja konfiguracja wyświetlała zielony pasek na hoście lokalnym Chrome, Firefox i Edge: https://ram.k0a1a.net/self-signed_https_cert_after_chrome_58
Uwaga: w przeglądarce Chrome musisz dodać certyfikat CA do zaufanych organów.
źródło
Jeśli chcesz pójść o krok dalej niż szczegółowe kroki @ alon, a także utworzyć własny podpisany certyfikat:
package.json
Korzystanie z localhost.cnf zgodnie z opisem:
źródło