Aracılığıyla paylaş


SSL ile ilgili sorunları giderme (Sunucu Sertifikası)

Şunlar için geçerlidir: Internet Information Services

Genel Bakış

Bu makale yalnızca Internet Information Services (IIS) ile ilgili Güvenli Yuva Katmanı (SSL) sorunlarını gidermenize yardımcı olur. İstemci sertifikalarını değil, sunucu kimlik doğrulaması için kullanılan sunucu sertifikalarını kapsar.

İstemci sertifikaları bölümü Gerekli olarak ayarlandıysa ve sorunlarla karşılaşırsanız, bu makale başvurmanız gereken makale 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ı sırasında SSL El Sıkışması ve Sunucu Kimlik Doğrulaması işlemiyle ilgili bilginiz olduğu varsayılır.

Bu sorun gidericide kullanılan araçlar

Çeşitli senaryolarda sorun gidermek için kullanılan araçlar şunlardır:

  • Ağ İzleyici 3.4
  • Wireshark

Senaryolar

HTTPS üzerinden bir web sitesine göz atarken aşağıdaki hata iletisini görürsünüz:

Bu sitenin bağlantısı güvenli değil 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. Değilse, 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.

1. Senaryo

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, temelde 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 "906c9825e56a13f1017ea40eca770df4c24cb735"

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, 906c9825e56a13f1017ea40eca770df4c24cb735 sertifikanın parmak izidir. Parmak izini almak için şu adımları izleyin:

  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 altındaki metni seçin.
  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

certutil Komut her zaman başarılı olmayabilir. Bu başarısız olursa, sertifika yetkilisinden (CA) özel anahtarı içeren bir sertifika almanız gerekir.

2. Senaryo

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. Web sitesine HTTPS üzerinden erişemezsiniz.

Çözüm

Özel anahtarı içeren bir sertifikanız varsa ancak web sitesine erişemiyorsanız sistem olay günlüklerinde aşağıdaki SChannel uyarısını da 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: 
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ını alma konusunda bir sorun olduğunu gösterir. Uyarıyı çözmek için şu adımları izleyin:

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

  2. İzinler yerindeyse ve sorun hala düzeltilmemişse, sertifikayla ilgili bir sorun olabilir. Bozulmuş olabilir. Aşağıdaki SChannel olay günlüğünde hata kodunu 0x8009001a 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. 
    
  3. Web sitesinin bir test sertifikasıyla çalışıp çalışmadığını denetleyin.

  4. Var olan sertifikanın yedeğini alın ve otomatik olarak imzalanan bir sertifikayla değiştirin.

  5. 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. Sertifika zincirinin doğrulaması sırasında, kök CA sertifikası güvenilir kök değilse hatayı CERT_E_UNTRUSTEDROOT (0x800b0109) görebilirsiniz.

  6. Bu hatayı düzeltmek için, CA'nın sertifikasını sunucudaki Bilgisayarım hesabı altında Güvenilen Kök CA deposuna ekleyin. Sertifika zincirinin doğrulaması sırasında hatasını -2146762480(0x800b0110)da alabilirsiniz.

  7. Hatayı düzeltmek için şu adımları izleyerek sertifikanın kullanım türünü denetleyin:

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

3. Senaryo

İ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 olur? Web sitesinin HTTPS bağlamalarını denetleyin ve dinlediği bağlantı noktasını ve IP'yi 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 Bağlantı Noktası bileşimini değiştirmeyi deneyin.

4\. Senaryo

Şu anda, web sitesinde düzgün bir çalışma sertifikasının yüklü olduğundan ve bu web sitesi için SSL bağlantı noktasını kullanmanın başka bir işlemi olmadığından emin olabilirsiniz. Ancak, HTTPS üzerinden web sitesine erişirken "Sayfa görüntülenemiyor" hatasını görmeye devam edebilirsiniz. İstemci bağlanıp SSL anlaşması başlattığında, HTTP.sys ssl yapılandırmasında istemcinin bağlı olduğu "IP:Bağlantı Noktası" ç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. Şu kodu yürütün:

    netsh http show ssl
    

    Çalışma ve çalışma dışı senaryo örnekleri aşağıda verilmiştir:

    Çalışma senaryosu

    Yapılandırma Ayar
    IP:bağlantı noktası 0.0.0.0:443
    Sertifika Karması c09b416d6b 8d615db22 64079d15638e96823d
    Uygulama Kimliği {4dc3e181-e14b-4a21-b022-59fc669b0914}
    Sertifika Deposu Adı Benim
    İstemci Sertifikası İptalini Doğrulama Etkin
    İptal Tazelik Süresi 0
    URL Alma Zaman Aşımı 0
    ...... ......

    Çalışmayan senaryo

    Yapılandırma Ayar
    IP:bağlantı noktası 0.0.0.0:443
    Sertifika Karması
    Uygulama Kimliği {00000000-0000-0000-0000-000000000000}
    CertStoreName Benim
    İstemci Sertifikası İptalini Doğrulama 0
    İptal Tazelik Süresi 0
    URL Alma Zaman Aşımı 0
    ...... ......

    Çalışma senaryosunda görülen Karma değeri, SSL sertifikanızın parmak izidir. Ç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 netsh http show 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 vardır.

  2. Aşağıdaki komutu çalıştırarak bu girdiyi kaldırın:

    netsh http delete sslcert ipport=<IP Address>:<Port>
    

    Örneğin:

    netsh http delete sslcert ipport=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 komutu çalıştırın:

    netsh http show iplisten
    

    Komut bir IP adresleri listesi döndürürse, aşağıdaki komutu kullanarak listedeki her IP adresini kaldırın:

    netsh http delete iplisten ipaddress=<IP Address>
    

    Not

    komutunu kullanarak IIS'yi net stop http /y bundan sonra 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.

İşte çalışmayan senaryonun ağ izleme anlık görüntüsü:

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

İşte çalışma senaryosunun ağ izleme anlık görüntüsü:

Başarılı bir izlemenin anlık görüntüsünü gösteren Görüntü 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 şifrenin seçildiğini görmeniz gerekir. Bu ayrıntıları görüntülemek için açıklamadan "Sunucu Merhaba" seçeneğini belirleyin.

Çalışma dışı senaryoda, istemci yalnızca TLS 1.1 ve TLS 1.2 kullanacak şekilde yapılandırıldı. Ancak IIS web sunucusu TLS 1.0'a kadar destekleyecek şekilde yapılandırıldığından el sıkışma başarısız oldu.

Hangi protokollerin etkinleştirildiğini veya devre dışı bırakildiğini 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.

Daha Fazla Bilgi