Verilen yanıtlardan parçaları ve diğer kaynakları birleştirerek Windows'ta kendinden imzalı sertifikalarda yolumu bulmalıydım. İşte benim (ve umarım tamamlanmış) adım adım. Umarım kendi acı veren öğrenme eğrilerimden biraz kurtarır. Ayrıca, kendi sertifikalarınızı oluşturduğunuzda er ya da geç ortaya çıkacak ilgili konular hakkında bilgiler de içerir.
Windows 10 ve daha düşük sürümlerde kendinden imzalı bir sertifika oluşturun
Makecert.exe'yi kullanmayın. Microsoft tarafından kullanımdan kaldırılmıştır.
Modern yöntem bir Powershell komutu kullanır.
Windows 10:
Powershell'i Yönetici ayrıcalıklarıyla açın:
New-SelfSignedCertificate -DnsName "*.dev.local", "dev.local", "localhost" -CertStoreLocation cert:\LocalMachine\My -FriendlyName "Dev Cert *.dev.local, dev.local, localhost" -NotAfter (Get-Date).AddYears(15)
Windows 8, Windows Server 2012 R2:
Bu sistemlerde Powershell'de -FriendlyName ve -NotAfter parametreleri mevcut değildir. Bunları yukarıdaki komut satırından kaldırmanız yeterlidir.
Powershell'i Yönetici ayrıcalıklarıyla açın:
New-SelfSignedCertificate -DnsName "*.dev.local", "dev.local", "localhost" -CertStoreLocation cert:\LocalMachine\My
Bir alternatif, sertifika oluşturmak için Win 10'un tüm özelliklerini kullanmanıza izin veren aşağıdaki eski Windows sürümü için yöntemi kullanmaktır ...
Daha eski Windows sürümleri:
Daha eski Windows sürümleri için önerim, sertifikayı bir Win 10 makinesinde oluşturmak, bir mmc örneği kullanarak bir .PFX dosyasına aktarmak (aşağıdaki "Sertifikaya güven" bölümüne bakın) ve hedef makinedeki sertifika deposuna, eski Windows işletim sistemi. Sertifikayı içe aktarmak için üzerine sağ TIKLAMAYIN. Bağlam menüsünde bir "Sertifikayı içe aktar" öğesi olmasına rağmen, tüm denemelerimde onu Win Server 2008'de kullanmak için başarısız oldu. Bunun yerine hedef makinede başka bir mmc örneği açın, "Sertifikalar (Yerel Bilgisayar) / Kişisel / Sertifikalar" a gidin. , orta bölmeyi sağ tıklayın ve Tüm görevler → İçe aktar'ı seçin.
Ortaya çıkan sertifika
Yukarıdaki komutların ikisi de etki alanları için bir sertifika oluşturmak localhost
ve *.dev.local
.
Win10 sürümü ayrıca 15 yıllık bir canlı süreye ve "Dev Cert * .dev.local, dev.local, localhost" okunabilir bir ekran adına sahiptir.
Güncelleme: Parametrede birden fazla ana bilgisayar adı girişi sağlarsanız -DnsName
(yukarıda gösterildiği gibi), bu girişlerden ilki alanın Konusu (AKA Ortak Adı) olur. Tüm ana bilgisayar adı girişlerinin tam listesi, sertifikanın Konu Alternatif Adı (SAN) alanında saklanacaktır. (Bunu belirttiğiniz için @BenSewards'a teşekkürler.)
Sertifika, oluşturulduktan sonra IIS'nin herhangi bir HTTPS bağlamasında hemen kullanılabilir olacaktır (talimatlar aşağıdadır).
Sertifikaya güvenin
Yeni sertifika, herhangi bir güven zincirinin parçası değildir ve bu nedenle hiçbir tarayıcı tarafından güvenilir kabul edilmez. Bunu değiştirmek için, sertifikayı makinenizdeki Güvenilen Kök CA'ların sertifika deposuna kopyalayacağız:
Mmc.exe'yi açın, Dosya → Ek Bileşen Ekle / Kaldır → sol sütunda "Sertifikalar" ı seçin → Ekle → "Bilgisayar Hesabı" → Sonraki → "Yerel Bilgisayar ..." → Bitir → Tamam
Sol sütunda "Sertifikalar (Yerel Bilgisayar) / Kişisel / Sertifikalar" ı seçin.
Yeni oluşturulan sertifikayı bulun (Win 10'da "Kolay ad" sütunu yardımcı olabilir).
Bu sertifikayı seçin ve panoya kopyalamak için Ctrl-C tuşlarına basın.
Sol sütunda "Sertifikalar (Yerel Bilgisayar) / Güvenilir Kök CA'lar / Sertifikalar" ı seçin.
Sertifikanızı bu mağazaya yapıştırmak için Ctrl-V tuşlarına basın.
Sertifika, Güvenilen Kök Yetkililer listesinde görünmelidir ve artık güvenilir olarak kabul edilmektedir.
IIS'de kullanın
Şimdi IIS Yöneticisine gidebilir, yerel bir web sitesinin bağlantılarını seçin → Ekle → https → formun bir ana bilgisayar adı girin myname.dev.local
(sertifikanız yalnızca için geçerlidir *.dev.local
) ve yeni sertifikayı seçin → Tamam.
Ev sahiplerine ekle
Ayrıca ana bilgisayar adınızı C: \ Windows \ System32 \ drivers \ etc \ hosts konumuna ekleyin:
127.0.0.1 myname.dev.local
Mutlu
Artık Chrome ve IE, sertifikayı güvenilir olarak değerlendirmeli ve açtığınızda web sitenizi yüklemelidir https://myname.dev.local
.
Firefox kendi sertifika deposuna sahiptir. Sertifikanızı buraya eklemek için, web sitenizi FF'de açmalı ve FF sizi sertifika konusunda uyardığında istisnalara eklemelisiniz.
Edge tarayıcısı için daha fazla işlem gerekebilir (aşağıya bakın).
Sertifikayı test edin
Sertifikalarınızı test etmek için Firefox en iyi seçiminizdir. (İnanın bana, ben de bir Chrome hayranıyım, ancak bu durumda FF daha iyidir.)
İşte nedenleri:
- Firefox, vardiya-yeniden yüklemede temizlenen kendi SSL önbelleğini kullanır. Bu nedenle, yerel web sitelerinizin sertifikalarındaki herhangi bir değişiklik, FF'nin uyarılarına hemen yansırken, diğer tarayıcıların Windows SSL önbelleğinin yeniden başlatılması veya manuel olarak temizlenmesi gerekebilir.
- Ayrıca FF, sertifikanızın geçerliliğini kontrol etmeniz için bazı değerli ipuçları verir: FF, sertifika uyarısını gösterdiğinde Gelişmiş'e tıklayın. FF size metin bloğunun merkez satırlarında bir veya daha fazla olası uyarı içeren kısa bir metin bloğu gösterecektir:
Kendinden imzalı olduğu için sertifika güvenilir değil.
Bu uyarı doğrudur! Yukarıda belirtildiği gibi, Firefox Windows sertifika deposunu kullanmaz ve yalnızca bir istisna eklerseniz bu sertifikaya güvenir. Bunu yapmak için düğme uyarıların hemen altındadır.
Sertifika isim için geçerli değil ...
Bu uyarı, yanlış bir şey yaptığınızı gösterir. Sertifikanızın (joker karakter) etki alanı, web sitenizin etki alanıyla eşleşmiyor. Sorun, web sitenizin (alt) etki alanını değiştirerek veya eşleşen yeni bir sertifika yayınlayarak çözülmelidir. Aslında, sertifika eşleşmese bile FF'de bir istisna ekleyebilirsiniz, ancak Chrome'da böyle bir kombinasyonla yeşil bir asma kilit sembolü asla elde edemezsiniz.
Firefox bu yerde süresi dolmuş sertifikalar, eski imzalama algoritmalarına sahip sertifikalar vb. Gibi pek çok güzel ve anlaşılır sertifika uyarısı görüntüleyebilir. Herhangi bir sorunu çözmek için bana bu düzeyde geri bildirim veren başka bir tarayıcı bulamadım.
Hangi (alt) alan kalıbını geliştirmeyi seçmeliyim?
Yukarıdaki New-SelfSignedCertificate komutunda joker etki alanını kullandık *.dev.local
.
Şöyle düşünebilirsiniz: Neden kullanmıyorsunuz *.local
?
Basit neden: Joker karakter etki alanı olarak yasa dışıdır.
Joker sertifikaları gerekir en azından ikinci seviye alan adı içermelidir.
Bu nedenle, formun etki alanları *.local
HTTP web siteleri geliştirmek için iyidir. Ancak HTTPS için çok fazla değil, çünkü başlattığınız her yeni proje için yeni bir eşleşen sertifika vermek zorunda kalacaksınız.
Önemli yan notlar:
- Geçerli ana bilgisayar alanları YALNIZCA harf a çukur z, rakamlar, kısa çizgiler ve noktalar içerebilir. Alt çizgilere izin verilmez! Bazı tarayıcılar bu ayrıntı konusunda gerçekten seçicidir ve alan
motör_head.dev.local
adınızı joker karakter kalıbınızla eşleştirmeyi inatla reddettiklerinde size zor anlar yaşatabilir *.dev.local
. Geçiş yaptığınızda uyacaklar motoer-head.dev.local
.
- Bir sertifikadaki joker karakter, bir etki alanında yalnızca BİR etiketle (= iki nokta arasındaki bölüm) eşleşir, daha fazla olamaz.
*.dev.local
eşleşir myname.dev.local
ama DEĞİL other.myname.dev.local
!
*.*.dev.local
Sertifikalarda çok seviyeli joker karakterler ( ) mümkün DEĞİLDİR. Yani other.myname.dev.local
yalnızca formun joker karakteriyle kapsanabilir *.myname.dev.local
. Sonuç olarak, en iyisi dördüncü seviye bir alan bölümü kullanmamaktır. Tüm varyasyonlarınızı üçüncü seviyeye koyun. Bu şekilde, tüm geliştirme siteleriniz için tek bir sertifika elde edeceksiniz.
Edge ile ilgili sorun
Bu aslında kendinden imzalı sertifikalarla ilgili değildir, ancak yine de tüm süreçle ilgilidir:
Yukarıdaki adımları izledikten sonra, Edge açtığınızda herhangi bir içerik göstermeyebilir myname.dev.local
.
Bunun nedeni, Modern Uygulamalar için Windows 10'un ağ yönetiminin "Ağ İzolasyonu" adı verilen karakteristik bir özelliğidir.
Bu sorunu çözmek için, Yönetici ayrıcalıklarına sahip bir komut istemi açın ve aşağıdaki komutu bir kez girin:
CheckNetIsolation LoopbackExempt -a -n=Microsoft.MicrosoftEdge_8wekyb3d8bbwe
Edge ve Network Isolation hakkında daha fazla bilgi burada bulunabilir:
https://blogs.msdn.microsoft.com/msgulfcommunity/2015/07/01/how-to-debug-localhost-on-microsoft-edge/
makecert.exe
. Sertifikalar için daha güvenli olacağımı ve kullanacağımı düşündüm-a SHA512 -len 8192
- oluşturmak sonsuza kadar sürdü. Ve olabileceğinden şüphelendiğim gibi, IIS'nin kullandığı şifreleme düzeyi üzerinde sıfır etkisi oldu. Varsayılan olarak IIS 128-bit kullanır, bunu değiştirmek için grup ilkesi işleri yapmanız gerekir . Diğer okuyucular için daha fazla not: sihirli sayıları sonradan değiştirmeyin,-eku
gereklidir.