Aracılığıyla paylaş


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:

Internet Explorer web sayfasını görüntüleyemiyor iletisini gösteren tarayıcı sayfasının ekran görüntüsü.

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:

Sertifika iletişim kutusunun iki ekran görüntüsü. Birinin özel anahtarı yoktur. Diğeri, özel anahtarın sertifikaya karşılık geldiğini belirten bir ileti gösterir.

Çö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"

certutil söz dizimini gösteren komut konsolunun ekran görüntüsü.

İlişkilendirme başarılı olursa aşağıdaki pencereyi görürsünüz:

Komutun başarıyla tamamlandığını belirten bir ileti gösteren komut konsolunun ekran görüntüsü.

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:

  1. Sertifikayı açın.
  2. Ayrıntılar sekmesini seçin.
  3. Parmak izi bölümünü bulmak için aşağı kaydırın.
  4. Parmak izi bölümünü seçin ve aşağıdaki metne tıklayın.
  5. Seçmek ve kopyalamak için Ctrl+A ve ardından Ctrl+C yapın.

Ayrıntılar sekmesini gösteren Sertifika iletişim kutusunun ekran görüntüsü. Parmak izi değeri vurgulanır.

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

  1. SUNUCUDA SSL Tanılama aracını indirin ve yükleyin.

  2. Ö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.

    SSL Tanılama penceresinin ekran görüntüsü. Hata iletisi vurgulanır.

    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:

  3. İ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.

  4. İ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. 
    
  5. Web sitesinin bir test sertifikasıyla çalışıp çalışmadığını denetleyin.

  6. Mevcut sertifikanın yedeğini alın ve otomatik olarak imzalanan bir sertifikayla değiştirin.

  7. 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:

    SSL Tanılama penceresinin ekran görüntüsü, hata iletisi vurgulanmış.

    CertVerifyCertificateChainPolicy kök CA sertifikası güvenilir kök değilse ile CERT_E_UNTRUSTEDROOT (0x800b0109)başarısız olur.

  8. 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ü.

  9. Hatayı çözmek için aşağıdaki adımları uygulayarak sertifikanın kullanım türünü denetleyin:

    1. Sertifikayı açın.
    2. Ayrıntılar sekmesini seçin.
    3. Özellikleri Düzenle... öğesini seçin.
    4. 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.

    Bu sertifika için tüm amaçları etkinleştir seçeneğinin belirlendiği Sertifika Özellikleri iletişim kutusunun bir bölümünü gösteren ekran görüntüsü.

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

  1. 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
    
  2. Bu bağlantı noktasını dinleyen başka bir işlem varsa bu işlemin neden bu bağlantı noktasını kullandığını denetleyin.

  3. 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 Listenerilgili olabilir.

HTTP.sys ile kaydedilen Sertifika karması NULL olabilir veya geçersiz GUID içeriyor olabilir.

Çözüm

  1. 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 sslbile, 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.

  2. 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
    
  3. 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:

İzleme anlık görüntüsünü gösteren Görüntü Filtresi penceresinin ekran görüntüsü.

Aşağıda, çalışan bir senaryonun ağ izleme anlık görüntüsü gösterilir:

Başarılı bir izlemenin anlık görüntüsünü gösteren Görüntüleme Filtresi penceresinin ekran görüntüsü.

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