Mam to subdomain.example.com
, czego używam do celów programistycznych. Moja aplikacja internetowa zawiera internetowy interfejs API itp., Który muszę wywołać z systemów zewnętrznych, dlatego nie używam hosta lokalnego.
Teraz muszę przetestować SSL i potrzebuję certyfikatu dla mojej subdomain.example.com
deweloperskiej nazwy domeny.
Próbowałem utworzyć certyfikat z podpisem własnym, jak opisano w http://technet.microsoft.com/en-us/library/cc753127(v=ws.10).aspx , ale ten certyfikat działa tylko dla hosta lokalnego. Czy ten certyfikat może być używany do moich celów, czy też będę musiał utworzyć samodzielnie podpisaną domenę dla mojej subdomeny programistycznej? Jeśli muszę utworzyć certyfikat z podpisem własnym dla mojej subdomeny programistycznej, jakiego narzędzia lub usługi online (bezpłatnej) mogę w tym celu użyć?
źródło
makecert.exe
aby znaleźć się na mojej ścieżce. Wydawało mi się, że w przypadku certyfikatów będę bezpieczniejszy i korzystniejszy-a SHA512 -len 8192
- wygenerowanie trwało wieczność. I tak jak podejrzewałem, nie miało to żadnego wpływu na poziom szyfrowania używany przez IIS. Domyślnie IIS używa 128-bitów, aby to zmienić , musisz zrobić rzeczy związane z zasadami grupy . Kolejna uwaga dla innych czytelników: nie zmieniaj później magicznych liczb-eku
, są one wymagane.sha1
. Zastąp-a sha512
i rozważ dodanie-len 2048
do drugiegomakecert
wezwania i wszystko powinno być dobrze.Korzystanie z programu PowerShell
W systemach Windows 8.1 i Windows Server 2012 R2 (Windows PowerShell 4.0) i nowszych można utworzyć certyfikat z podpisem własnym za pomocą nowego polecenia
New-SelfSignedCertificate
cmdlet:Przykłady:
Korzystanie z Menedżera usług IIS
www.domain.com
lubsubdomain.domain.com
źródło
New-SelfSignedCertificate -FriendlyName *.mydomain.local -DnsName *.mydomain.local, localhost -CertStoreLocation Cert:\LocalMachine\My
Spowoduje to utworzenie certyfikatu w magazynie osobistym. Następnie najpierw wyeksportowałem certyfikat do pliku, a następnie ponownie zaimportowałem go do obu usług IIS za pośrednictwem Menedżera usług IIS (aby użyć go do powiązania https), a następnie do zaufanych głównych urzędów certyfikacji za pośrednictwem MMC (aby uniknąć ostrzeżeń przeglądarki).-NotAfter
Opcją jest również przydatny do określenia daty ważności (bez niego, domyślnie jest tylko 1 rok). Przykład, którego użyłemNew-SelfSignedCertificate -DnsName *.mydomain.com -FriendlyName *.mydomain.com -NotAfter (Get-Date).AddYears(15) -CertStoreLocation cert:\LocalMachine\My
Aby utworzyć nowy certyfikat dla określonej domeny:
Otwórz Powershell ISE jako administrator, uruchom polecenie:
Aby zaufać nowemu certyfikatowi:
Aby powiązać certyfikat ze swoją witryną:
źródło
Musiałem przedzierać się przez samopodpisane certyfikaty w systemie Windows, łącząc fragmenty z udzielonych odpowiedzi i dalszych zasobów. Oto moje własne (i mam nadzieję, że kompletne) przejście. Mam nadzieję, że oszczędzi ci to mojej własnej bolesnej krzywej uczenia się. Zawiera również informacje dotyczące powiązanych tematów, które pojawią się prędzej czy później, gdy utworzysz własne certyfikaty.
Utwórz certyfikat z podpisem własnym w systemie Windows 10 i starszych
Nie używaj makecert.exe. Został wycofany przez firmę Microsoft.
Nowoczesny sposób wykorzystuje polecenie Powershell.
Windows 10:
Otwórz Powershell z uprawnieniami administratora:
Windows 8, Windows Server 2012 R2:
W programie PowerShell w tych systemach parametry -FriendlyName i -NotAfter nie istnieją. Po prostu usuń je z powyższego wiersza poleceń.
Otwórz Powershell z uprawnieniami administratora:
Alternatywą jest użycie metody dla starszej wersji systemu Windows poniżej, która umożliwia wykorzystanie wszystkich funkcji Win 10 do tworzenia certyfikatów ...
Starsze wersje systemu Windows:
Moją rekomendacją dla starszych wersji systemu Windows jest utworzenie certyfikatu na komputerze z systemem Windows 10, wyeksportowanie go do pliku .PFX przy użyciu instancji mmc (zobacz „Zaufaj certyfikatowi” poniżej) i zaimportowanie go do magazynu certyfikatów na komputerze docelowym z stary system operacyjny Windows. Aby zaimportować certyfikat, NIE klikaj go prawym przyciskiem myszy. Chociaż w menu kontekstowym znajduje się pozycja „Importuj certyfikat”, wszystkie moje próby użycia go na Win Server 2008 nie powiodły się. Zamiast tego otwórz inną instancję mmc na komputerze docelowym, przejdź do „Certyfikaty (komputer lokalny) / Osobiste / Certyfikaty” , kliknij prawym przyciskiem myszy w środkowym okienku i wybierz Wszystkie zadania → Importuj.
Uzyskany certyfikat
Oba powyższe polecenia tworzą certyfikat dla domen
localhost
i*.dev.local
.Wersja dla Win10 dodatkowo ma 15-letni okres eksploatacji i czytelną wyświetlaną nazwę „Dev Cert * .dev.local, dev.local, localhost”.
Aktualizacja: Jeśli podasz wiele wpisów nazwy hosta w parametrze
-DnsName
(jak pokazano powyżej), pierwszy z tych wpisów stanie się tematem domeny (nazwa zwykła AKA). Pełna lista wszystkich wpisów nazw hostów będzie przechowywana w polu Alternatywna nazwa podmiotu (SAN) certyfikatu. (Dzięki @BenSewards za wskazanie tego).Po utworzeniu certyfikat będzie natychmiast dostępny we wszystkich powiązaniach HTTPS usług IIS (instrukcje poniżej).
Zaufaj certyfikatowi
Nowy certyfikat nie jest częścią żadnego łańcucha zaufania i dlatego żadna przeglądarka nie uważa go za wiarygodny. Aby to zmienić, skopiujemy certyfikat do magazynu certyfikatów zaufanych głównych urzędów certyfikacji na Twoim komputerze:
Otwórz mmc.exe, Plik → Dodaj / Usuń przystawkę → wybierz „Certyfikaty” w lewej kolumnie → Dodaj → wybierz „Konto komputera” → Dalej → „Komputer lokalny…” → Zakończ → OK
W lewej kolumnie wybierz „Certyfikaty (komputer lokalny) / Osobiste / Certyfikaty”.
Znajdź nowo utworzony certyfikat (w Win 10 może pomóc kolumna „Przyjazna nazwa”).
Wybierz ten certyfikat i naciśnij Ctrl-C, aby skopiować go do schowka.
W lewej kolumnie wybierz „Certyfikaty (komputer lokalny) / Zaufane główne urzędy certyfikacji / Certyfikaty”.
Naciśnij Ctrl-V, aby wkleić certyfikat do tego sklepu.
Certyfikat powinien pojawić się na liście zaufanych głównych urzędów i jest teraz uważany za godny zaufania.
Użyj w usługach IIS
Teraz możesz przejść do Menedżera IIS, wybrać powiązania lokalnej witryny internetowej → Dodaj → https → wprowadź nazwę hosta formularza
myname.dev.local
(Twój certyfikat jest ważny tylko dla*.dev.local
) i wybierz nowy certyfikat → OK.Dodaj do hostów
Dodaj także nazwę swojego hosta do C: \ Windows \ System32 \ drivers \ etc \ hosts:
Szczęśliwy
Teraz Chrome i IE powinny traktować certyfikat jako godny zaufania i ładować Twoją witrynę podczas otwierania
https://myname.dev.local
.Firefox utrzymuje własny magazyn certyfikatów. Aby dodać tutaj swój certyfikat, musisz otworzyć swoją witrynę w FF i dodać ją do wyjątków, gdy FF ostrzega Cię o certyfikacie.
W przypadku przeglądarki Edge może być potrzebne więcej działań (patrz poniżej).
Przetestuj certyfikat
Aby przetestować swoje certyfikaty, najlepszym wyborem jest Firefox. (Uwierz mi, sam jestem fanem Chrome, ale w tym przypadku FF jest lepszy).
Oto powody:
To ostrzeżenie jest poprawne! Jak wspomniano powyżej, Firefox nie korzysta z magazynu certyfikatów systemu Windows i będzie ufał temu certyfikatowi tylko wtedy, gdy dodasz do niego wyjątek. Przycisk służący do tego znajduje się tuż pod ostrzeżeniami.
To ostrzeżenie pokazuje, że zrobiłeś coś złego. Domena (z symbolem wieloznacznym) Twojego certyfikatu nie jest zgodna z domeną Twojej witryny. Problem należy rozwiązać, zmieniając (pod) domenę witryny lub wydając nowy, zgodny certyfikat. W rzeczywistości możesz dodać wyjątek w FF, nawet jeśli certyfikat nie pasuje, ale nigdy nie dostaniesz zielonego symbolu kłódki w Chrome z taką kombinacją.
Firefox może wyświetlać w tym miejscu wiele innych ładnych i zrozumiałych ostrzeżeń dotyczących certyfikatów, takich jak wygasłe certyfikaty, certyfikaty z nieaktualnymi algorytmami podpisywania itp. Nie znalazłem żadnej innej przeglądarki, która dałaby mi taki poziom informacji zwrotnych, aby rozwiązać wszelkie problemy.
Który wzorzec (pod) domeny powinienem wybrać do opracowania?
W powyższym poleceniu New-SelfSignedCertificate użyliśmy domeny wieloznacznej
*.dev.local
.Możesz pomyśleć: dlaczego nie użyć
*.local
?Prosty powód: jest nielegalna jako domena wieloznaczna.
Certyfikaty z symbolami wieloznacznymi muszą zawierać co najmniej nazwę domeny drugiego poziomu.
Tak więc domeny formularza
*.local
są dobre do tworzenia witryn HTTP. Ale nie tak bardzo w przypadku HTTPS, ponieważ byłbyś zmuszony wydać nowy pasujący certyfikat dla każdego nowego projektu, który zaczynasz.Ważne uwagi dodatkowe:
motör_head.dev.local
do wzorca wieloznacznego*.dev.local
. Będą zgodne, gdy przełączysz się namotoer-head.dev.local
.*.dev.local
mecze,myname.dev.local
ale NIEother.myname.dev.local
!*.*.dev.local
) NIE są możliwe w certyfikatach. Więcother.myname.dev.local
może być pokryte tylko przez symbol wieloznaczny formularza*.myname.dev.local
. W rezultacie najlepiej nie używać części domeny czwartego poziomu. Umieść wszystkie swoje odmiany w części trzeciego poziomu. W ten sposób otrzymasz jeden certyfikat dla wszystkich swoich witryn deweloperskich.Problem z Edge
Tak naprawdę nie chodzi o certyfikaty z podpisem własnym, ale nadal jest to związane z całym procesem:
po wykonaniu powyższych kroków Edge może nie wyświetlać żadnych treści po otwarciu
myname.dev.local
.Powodem jest charakterystyczna cecha zarządzania siecią Windows 10 dla nowoczesnych aplikacji, zwana „izolacją sieci”.
Aby rozwiązać ten problem, otwórz wiersz polecenia z uprawnieniami administratora i wprowadź raz następujące polecenie:
Więcej informacji o krawędzi i izolacji sieci można znaleźć tutaj: https://blogs.msdn.microsoft.com/msgulfcommunity/2015/07/01/how-to-debug-localhost-on-microsoft-edge/
źródło
appname.dev has a security policy called HTTP Strict Transport Security (HSTS), which means that Firefox can only connect to it securely. You can’t add an exception to visit this site.
co, jak stwierdza, nie pozwala na dodanie wyjątku klienta, wbrew twojej instrukcji. Czy jest to zła konfiguracja w samych usługach IIS w odniesieniu do ustawień SSL, Wymagaj SSL i opcji certyfikatów klienta?*.mydomain.com
może być ważnym certyfikatem dla,me.mydomain.com
ale nie dlame.at.mydomain.com
.Napotkałem ten sam problem, gdy chciałem włączyć SSL do projektu hostowanego na IIS 8. Ostatecznie narzędziem, którego użyłem, było OpenSSL , po wielu dniach walki z poleceniami makecert. Certyfikat jest generowany w Debianie, ale mogłem go bezproblemowo zaimportować do IIS 7 i 8.
Pobierz OpenSSL kompatybilny z twoim systemem operacyjnym i tym plikiem konfiguracyjnym. Ustaw plik konfiguracyjny jako domyślną konfigurację OpenSSL.
Najpierw wygenerujemy klucz prywatny i certyfikat Urzędu Certyfikacji (CA). Ten certyfikat służy do podpisania wniosku o certyfikat (CSR).
Musisz wypełnić wszystkie pola, które są wymagane w tym procesie.
openssl req -new -x509 -days 3650 -extensions v3_ca -keyout root-cakey.pem -out root-cacert.pem -newkey rsa:4096
Możesz utworzyć plik konfiguracyjny z domyślnymi ustawieniami w następujący sposób: Teraz wygenerujemy żądanie certyfikatu, czyli plik wysyłany do urzędów certyfikacji.
Nazwa zwykła musi być ustawiona w domenie witryny, na przykład: public.organization.com .
openssl req -new -nodes -out server-csr.pem -keyout server-key.pem -newkey rsa:4096
Teraz żądanie certyfikatu jest podpisane wygenerowanym certyfikatem CA.
openssl x509 -req -days 365 -CA root-cacert.pem -CAkey root-cakey.pem -CAcreateserial -in server-csr.pem -out server-cert.pem
Wygenerowany certyfikat należy wyeksportować do pliku .pfx, który można zaimportować do usług IIS.
openssl pkcs12 -export -out server-cert.pfx -inkey server-key.pem -in server-cert.pem -certfile root-cacert.pem -name "Self Signed Server Certificate"
W tym kroku zaimportujemy certyfikat CA.
Na serwerze należy zaimportować certyfikat CA do zaufanych głównych urzędów certyfikacji, ponieważ usługi IIS mogą ufać importowanemu certyfikatowi. Pamiętaj, że certyfikat, który ma zostać zaimportowany do IIS, został podpisany certyfikatem CA.
Na tym etapie usługi IIS ufają autentyczności naszego certyfikatu.
W naszym ostatnim kroku zaimportujemy certyfikat do IIS i dodamy witrynę wiążącą.
Teraz przejdź do swojej witryny w Menedżerze usług IIS i wybierz opcję Powiązania ... i Dodaj nowe powiązanie.
Wybierz https jako typ powiązania i powinieneś być w stanie zobaczyć zaimportowany certyfikat.
źródło
Inną opcją jest utworzenie certyfikatu z podpisem własnym, który umożliwia określenie nazwy domeny dla każdej witryny internetowej. Oznacza to, że możesz go używać w wielu nazwach domen.
W Menedżerze usług IIS
Teraz w Twojej witrynie w IIS ...
źródło
Innym prostym sposobem na wygenerowanie certyfikatu z podpisem własnym jest użycie Jexus Manager,
https://www.jexusmanager.com/en/latest/tutorials/self-signed.html
źródło