SSL ile ilgili sorunları giderme (Sunucu Sertifikası)
Şunlar için geçerlidir: Internet Information Services 6.0, Internet Information Services 7.0 ve sonraki sürümleri
Genel Bakış
Bu makale, yalnızca Internet Information Services (IIS) ile ilgili Güvenli Yuva Katmanı (SSL) sorunlarını gidermenize yardımcı olur. Sunucu kimlik doğrulaması için kullanılan sunucu sertifikalarını kapsar ve istemci sertifikalarını kapsamaz.
İstemci sertifikaları bölümü "Gerekli" olarak ayarlandıysa ve sorunlarla karşılaşırsanız, başvurmanız gereken makale bu değildir. Bu makale yalnızca SSL Sunucusu sertifikaları sorununu gidermeye yöneliktir.
Her sertifikanın bir ortak anahtar (şifreleme için kullanılır) ve bir özel anahtar (şifre çözme için kullanılır) içerdiğini bilmek önemlidir. Özel anahtar yalnızca sunucu tarafından bilinir.
HTTPS için varsayılan bağlantı noktası 443'dür. SSL el sıkışması ve SSL el sıkışması sırasında Sunucu Kimlik Doğrulaması işlemi konusunda bilgili olduğunuz varsayılır.
Bu sorun gidericide kullanılan araçlar
Çeşitli senaryolarda sorun gidermek için kullanılan araçlar şunlardır:
- SSLDiag
- Ağ İzleyicisi 3.4 veya Wireshark
Senaryo
HTTPS üzerinden bir web sitesine göz atarken aşağıdaki hata iletisini görürsünüz:
Denetlenecek ilk önkoşul, web sitesinin HTTP üzerinden erişilebilir olup olmadığıdır. Aksi takdirde, büyük olasılıkla bu makalede ele alınmayan ayrı bir sorun vardır. Bu sorun gidericiyi kullanmadan önce web sitesinin HTTP üzerinde çalışır durumda olması gerekir.
Şimdi web sitesine HTTP üzerinden erişilebildiğini ve HTTPS'ye göz atmayı denediğinizde önceki hata iletisinin gösterildiğini varsayalım. SSL el sıkışması başarısız olduğundan hata iletisi gösterilir. Sonraki birkaç senaryoda ayrıntılı olarak anlatılacak birçok neden olabilir.
Senaryo 1
Sunucu sertifikasının buna karşılık gelen özel anahtara sahip olup olmadığını denetleyin. Sertifika iletişim kutusunun aşağıdaki ekran görüntüsüne bakın:
Çözüm
Özel anahtar eksikse, temel olarak bir olan özel anahtarı içeren bir sertifika almanız gerekir. PFX dosyası. Özel anahtarı sertifikayla ilişkilendirmek için çalıştırmayı deneyebileceğiniz bir komut aşağıdadır:
C:\>certutil - repairstore my "[U+200E] 1a 1f 94 8b 21 a2 99 36 77 a8 8e b2 3f 42 8c 7e 47 e3 d1 33"
İlişkilendirme başarılı olursa aşağıdaki pencereyi görürsünüz:
Bu örnekte, 1a 1f 94 8b 21 a2 99 36 77 a8 8e b2 3f 42 8c 7e 47 e3 d1 33
sertifikanın parmak izidir. Parmak izini almak için:
- Sertifikayı açın.
- Ayrıntılar sekmesini seçin.
- Parmak izi bölümünü bulmak için aşağı kaydırın.
- Parmak izi bölümünü seçin ve aşağıdaki metne tıklayın.
- Seçmek ve kopyalamak için Ctrl+A ve ardından Ctrl+C yapın.
Not
Komut certutil
her zaman başarılı olmayabilir. Bu başarısız olursa, sertifika yetkilisinden (CA) özel anahtarı içeren bir sertifika almanız gerekir.
Senaryo 2
Bu senaryoda, web sitesinde yüklü özel anahtarı içeren bir sunucu sertifikanız olduğunu düşünün. Ancak, 1. senaryoda gösterilen hatayı görmeye devam edebilirsiniz. Yine de HTTPS üzerinden web sitesine erişemezsiniz.
Çözüm
SUNUCUDA SSL Tanılama aracını indirin ve yükleyin.
Özel anahtarı içeren bir sertifikanız varsa ve web sitesine hala erişemiyorsanız, bu aracı çalıştırmayı deneyin veya sistem olay günlüklerinde SChannel ile ilgili uyarılar veya hatalar olup olmadığını denetleyin.
SSLDiag aracını çalıştırırken aşağıdaki hata iletisini görebilirsiniz:
Bu sertifikaya karşılık gelen özel bir anahtarınız var ancak CryptAcquireCertificatePrivateKey başarısız oldu.
Ayrıca, sistem olay günlüklerinde aşağıdaki SChannel uyarısı görüntülenir:
Event Type: Error Event Source: Schannel Event Category: None Event ID: 36870 Date: 2/11/2012 Time: 12:44:55 AM User: N/A Computer: Description: A fatal error occurred when attempting to access the SSL server credential private key. The error code returned from the cryptographic module is 0x80090016.
Bu olay veya hata, sertifikanın özel anahtarı alınırken bir sorun olduğunu gösterir. Bu nedenle, uyarıyı çözmek için aşağıdaki adımları deneyin:
İlk olarak MachineKeys klasöründeki izinleri doğrulayın. Tüm özel anahtarlar MachineKeys klasöründe depolanır, bu nedenle gerekli izinlere sahip olduğunuzdan emin olun.
İzinler yerindeyse ve sorun hala düzeltilmemişse, sertifikayla ilgili bir sorun olabilir. Bozulmuş olabilir. Aşağıdaki SChannel olay günlüğünde 0x8009001a hata kodunu görebilirsiniz:
Event Type: Error Event Source: Schannel Event Category: None Event ID: 36870 Date: 2/11/2012 Time: 12:44:55 AM User: N/A Computer: A fatal error occurred when attempting to access the SSL server credential private key. The error code returned from the cryptographic module is 0x8009001a.
Web sitesinin bir test sertifikasıyla çalışıp çalışmadığını denetleyin.
Mevcut sertifikanın yedeğini alın ve otomatik olarak imzalanan bir sertifikayla değiştirin.
HTTPS kullanarak web sitesine erişmeyi deneyin. Çalışıyorsa, daha önce kullanılan sertifika bozulmuştur ve yeni bir çalışma sertifikasıyla değiştirilmelidir. Bazen sorun sertifikayla değil, verenle ilgili olabilir. SSLDiag'da aşağıdaki hatayı görebilirsiniz:
CertVerifyCertificateChainPolicy
kök CA sertifikası güvenilir kök değilse ileCERT_E_UNTRUSTEDROOT (0x800b0109)
başarısız olur.Bu hatayı düzeltmek için CA'nın sertifikasını sunucudaki Bilgisayarım hesabı altındaki "Güvenilen Kök CA" deposuna ekleyin. Aşağıdaki hatayı da alabilirsiniz:
CertVerifyCertificateChainPolicy - 2146762480(0x800b0110) hatası döndürdü.
Hatayı çözmek için aşağıdaki adımları uygulayarak sertifikanın kullanım türünü denetleyin:
- Sertifikayı açın.
- Ayrıntılar sekmesini seçin.
- Özellikleri Düzenle... öğesini seçin.
- Genel sekmesinde, Bu sertifika için tüm amaçları etkinleştir seçeneğinin belirlendiğinden ve en önemlisi, Sunucu Kimlik Doğrulaması'nın listede bulunduğundan emin olun.
Senaryo 3
İlk iki senaryo sertifikanın bütünlüğünü denetlemeye yardımcı olur. Sertifikayla ilgili bir sorun olmadığını onayladıktan sonra büyük boyutlu bir sorun çözülür. Ancak web sitesine HTTPS üzerinden hala erişilemiyorsa ne olacak? Web sitesinin HTTPS bağlamalarını denetleyin ve hangi bağlantı noktasını ve IP'yi dinlediğini belirleyin.
Çözüm
Web sitesi tarafından kullanılan SSL bağlantı noktasında başka hiçbir işlemin dinlemediğinden emin olmak için aşağıdaki komutu çalıştırın.
netstat -ano" or "netstat -anob
Bu bağlantı noktasını dinleyen başka bir işlem varsa bu işlemin neden bu bağlantı noktasını kullandığını denetleyin.
Web sitesinin erişilebilir olup olmadığını denetlemek için IP-Port bileşimini değiştirmeyi deneyin.
Senaryo 4
Şu anda web sitesinde düzgün bir çalışma sertifikası yüklü olduğundan ve bu web sitesi için SSL bağlantı noktasının kullanıldığı başka bir işlem olmadığından emin olabilirsiniz. Ancak, WEB sitesine HTTPS üzerinden erişirken "Sayfa görüntülenemiyor" hatasını görmeye devam edebilirsiniz. İstemci bir SSL anlaşmasına bağlanıp başlattığında ,HTTP.sys ssl yapılandırmasında istemcinin bağlı olduğu "IP:Port" çiftini arar. SSL anlaşması başarılı olmadan önce HTTP.sys SSL yapılandırması bir sertifika karması ve sertifika deposunun adını içermelidir. Sorun ile HTTP.SYS SSL Listener
ilgili olabilir.
HTTP.sys ile kaydedilen Sertifika karması NULL olabilir veya geçersiz GUID içeriyor olabilir.
Çözüm
Aşağıdaki komutu yürütür:
IIS 6: "httpcfg.exe query ssl" IIS 7/7.5: "netsh http show ssl"
Not
HttpCfg , Windows Destek araçlarının bir parçasıdır ve yükleme diskinde bulunur.
Aşağıda, çalışan ve çalışmayan bir senaryo örneği verilmiştir:
Çalışma senaryosu
Yapılandırma Ayar IP 0.0.0.0:443 Karma Guıd {00000000-0000-0000-0000-000000000000} CertStoreName BENİM Certcheckmode 0 RevocationFreshnessTime 0 UrlRetrievalTimeout 0 SslCtlIdentifier 0 SslCtlStoreName 0 Bayrak 0 Çalışma dışı senaryo
Yapılandırma Ayar IP 0.0.0.0:443 Karma c09b416d6b 8d615db22 64079d15638e96823d Guıd {4dc3e181-e14b-4a21-b022-59fc669b0914} CertStoreName BENİM Certcheckmode 0 RevocationFreshnessTime 0 UrlRetrievalTimeout 0 SslCtlIdentifier 0 SslCtlStoreName 0 Bayrak 0 Çalışma senaryosunda görülen Karma değeri, SSL sertifikanızın Parmak İzidir. Çalışma dışı bir senaryoda GUID'nin sıfır olduğuna dikkat edin. Karma değerinin bir değeri olduğunu veya boş olduğunu görebilirsiniz. Sertifikayı web sitesinden kaldırıp çalıştırsanız
httpcfg query ssl
bile, web sitesi GUID'yi 0'ların tümü olarak listelemeye devam eder. GUID değerini "{0000...............000}" olarak görüyorsanız bir sorun var demektir.Aşağıdaki komutu çalıştırarak bu girdiyi kaldırın:
httpcfg delete ssl -i "IP:Port Number"
Örneğin:
httpcfg delete ssl -i 0.0.0.0:443
Herhangi bir IP adresinin listelenip listelenmediğini belirlemek için bir komut istemi açın ve aşağıdaki komutları çalıştırın:
IIS 6: httpcfg query iplisten
IIS 7/7.5: netsh http show iplisten
IP Dinleme listesi boşsa, komut aşağıdaki dizeyi döndürür:
HttpQueryServiceConfiguration completed with 1168.
Komut bir IP adresleri listesi döndürürse, aşağıdaki komutu kullanarak listedeki her IP adresini kaldırın:
httpcfg delete iplisten -i x.x.x.x
Not
Komutunu kullanarak bundan sonra IIS'yi
net stop http /y
yeniden başlatın.
Senaryo 5
Tüm bunlara rağmen, HTTPS'de web sitesine hala göz atamıyorsanız istemciden veya sunucudan bir ağ izlemesi yakalayın. İZLEMEyi "SSL veya TLS" ile filtreleyerek SSL trafiğine bakın.
Aşağıda, çalışmayan bir senaryonun ağ izleme anlık görüntüsü gösterilir:
Aşağıda, çalışan bir senaryonun ağ izleme anlık görüntüsü gösterilir:
Bu, bir ağ izlemesine nasıl baktığınızı gösteren yöntemdir. Çerçeve ayrıntılarını genişletmeniz ve sunucu tarafından hangi protokolün ve şifrelemenin seçildiğini görmeniz gerekir. Bu ayrıntıları görüntülemek için açıklamadan "Sunucu Merhaba" öğesini seçin.
Çalışmayan senaryoda, istemci yalnızca TLS 1.1 ve TLS 1.2 kullanacak şekilde yapılandırıldı. Ancak web sunucusu, TLS 1.0'a kadar destek verebilen IIS 6'ydı ve bu nedenle el sıkışması başarısız oldu.
Hangi protokollerin etkin veya devre dışı olduğunu belirlemek için kayıt defteri anahtarlarını denetleyin. Yol şu şekildedir:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols
"Etkin" DWORD "1" olarak ayarlanmalıdır. 0 olarak ayarlanırsa protokol devre dışı bırakılır.
Örneğin, SSL 2.0 varsayılan olarak devre dışıdır.
Senaryo 6
Her şey doğrulandıysa ve web sitesine HTTPS üzerinden erişirken sorun yaşamaya devam ediyorsanız, büyük olasılıkla ssl el sıkışmasının başarısız olmasına neden olan bir güncelleştirmedir.
Microsoft, Windows'ta SSL uygulaması için bir güncelleştirme yayımladı:
MS12-006: Vulnerability in SSL/TLS could allow information disclosure: January 10, 2012
Bu güncelleştirmenin, Internet Explorer kullanan veya HTTPS istekleri gerçekleştirmek için Internet Explorer kullanan bir uygulama kullanan müşterileri etkileme olasılığı vardır.
SSL 3.0 / TLS 1.0'da bilgilerin açığa çıkması güvenlik açığını gidermek için aslında iki değişiklik yapıldı. MS12-006 güncelleştirmesi , istemciler bu davranışı istediğinde ortak ssl zincirli blok şifrelemesi kullanırken ek bir kayıt gönderenschannel.dlliçinde yeni bir davranış uygular. Diğer değişiklik, Internet Explorer'ın yeni davranışı istemesi için Internet Explorer için Aralık Toplu Güncelleştirmesi'nin (MS11-099) bir parçası olan Wininet.dll'de yapıldı.
Bir sorun varsa, bir sunucuya bağlanma hatası veya tamamlanmamış bir istek olarak kendini gösterebilir. Internet Explorer 9 ve üzeri bir "Internet Explorer web sayfasını görüntüleyemiyor" hatasını görüntüleyebilir. Internet Explorer'ın önceki sürümleri boş bir sayfa görüntüleyebilir.
Fiddler , HTTPS isteklerini yakalayıp sunucuya ilettiğinde ek kaydı kullanmaz. Bu nedenle, HTTPS trafiğini yakalamak için Fiddler kullanılırsa istekler başarılı olur.
Kayıt defteri anahtarları
MS12-006'da belirtildiği gibi: SSL/TLS'deki güvenlik açığı bilgilerin açığa çıkmasına izin verebilir: 10 Ocak 2012, sendExtraRecord kayıt defteri değeri vardır ve bu değer şunları yapabilir:
- Yeni SSL davranışını genel olarak devre dışı bırakın,
- Genel olarak etkinleştirin veya
- (Varsayılan olarak) yeni davranışı seçen SChannel istemcileri için etkinleştirin.
Internet Explorer ve Internet Explorer bileşenlerini kullanan istemciler için, FEATURE_SCH_SEND_AUX_RECORD_KB_2618444 FeatureControl bölümünde iexplore.exeveya başka bir adlandırılmış uygulamanın yeni davranışı seçip seçmediğini belirleyen bir kayıt defteri anahtarı vardır. Varsayılan olarak, bu Internet Explorer için etkinleştirilir ve diğer uygulamalar için devre dışı bırakılır.
Daha fazla bilgi
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin