2016-04-13 34 views
0

Bir Microsoft Azure Bulut Servis hizmeti tanımında böyle tanımlanan bir web role sahiptir:SSL başarısız

<ServiceDefinition name="Magic" schemaVersion="" xmlns="[WHATEVER]"> 
    <WebRole name="MagicRole"> 
     <Sites> 
     <Site name="Web" > 
      <Bindings> 
      <Binding name="HttpIn" endpointName="HttpIn" /> 
      <Binding name="HttpsIn" endpointName="HttpsIn" /> 
      </Bindings> 
     </Site> 
     </Sites> 
     <Endpoints> 
     <InputEndpoint name="HttpIn" protocol="http" port="80" /> 
     <InputEndpoint name="HttpsIn" protocol="https" 
      port="443" certificate="ServiceCert"/> 
     </Endpoints> 
     <Certificates> 
     <Certificate name="ServiceCert" 
      storeLocation="LocalMachine" storeName="My" /> 
     </Certificates> 
    </WebRole> 
</ServiceDefinition> 

hizmet çalışmaktadır aylar için iyi. Son zamanlarda, kullanıcılar hizmete SSL bağlantısı kurarken bazı belirsiz sorunları bildirmeye başladı.

iOS üzerinde Safari o sunucu kimliğini doğrulayamamamız, cURL olduğunu söylüyorlar bildirilmektedir söylemek bildirilmektedir

gibi this ve this söylemek bildirilmektedir Yerel yayıncı sertifikası ve üçüncü taraf SSL doğrulama araçlarını alamıyorsanız Sertifika yanlış kurulmuş.

Sorun sürekli olarak çoğaltılmıyor. Bazen istekler başarılı olur ve bazen başarısız olurlar. Üçüncü taraf araçlar bazen hizmetin düzgün bir şekilde yapılandırıldığını bildirir ve bazen yanlış yapılandırılmış olduğunu bildirir.

Kullanıcılar, bu sorunları bildirmeye başlamadan önce iki hafta boyunca hizmette hiçbir değişiklik yapılmadı.

Bu soruna neden olan nedir?

cevap

1

Hizmet tanımınız bozuk. Azure documentation, yakın zamanda doğru yapılandırmayı göstermek için güncellendi. Sertifikaları öğesi, tüm ara sertifikaları hizmet sertifikası güven zincirinden listelemelidir. Ara sertifikalar herhangi bir son noktaya bağlı olmayacaktır, sadece listelenmelidir. ara sertifika yerel deposuna yüklenir

<Certificates> 
    <Certificate name="IntermediateCAForServiceCert" 
     storeLocation="LocalMachine" storeName="CA" /> 
    <!-- List all intermediate certificates from the chain 
    when the chain contains more than one intermediate--> 
    <Certificate name="ServiceCert" 
     storeLocation="LocalMachine" storeName="My" /> 
</Certificates> 

böyle yapılandırmayla ve IIS orada bulup istemciler hizmet sertifikası zincirini doğrulamak böylece (hizmet belgesi ile birlikte) müşterilerine hizmet edebilir: İşte nasıl.

Yapılandırmanızla, Windows/IIS'de bir yere yazılmamış davranışlar nedeniyle "işe yarayabilir" şeklinde bir olasılıkla görebilirsiniz. Bu answer, provaları gösterir. Özetle, hizmet sertifikasının rol örneğine yüklenirken kısaca, CA ara birimindeki eksik ara sertifikaları alma ve bunları yerel olarak bir yere (sertifika deposunda değil) saklama girişimi. Getiri başarılı olursa, IIS sertifikayı alır ve istemcilere sunabilir. Getirme başarısız olursa (ağ sorunları, CA altyapısı geçici olarak kullanılamıyorsa, ne olursa olsun), IIS yalnızca hizmet sertifikasını sunar.

Web rolünüzün önünde bir yük dengeleyici olduğunu unutmayın. Farklı istekler farklı örneklere ulaşabilir. Hizmetiniz ölçeklendiğinde ve yeni örnekler başlatılırsa, araları teslim alamayabilir ve onlara gelen talepler, kullanıcıları mutsuz yapan ara vermeden yanıtlar verecektir. Bazı durumlar yeniden yerleştirilebilir veya yeniden görüntülenebilir ve aynı soruna neden olacak araları yeniden getiremez.

Hizmet tanımınızın alt çizgisi, güvenilir olmayan hizmet davranışlarına neden olur. Bunu düzeltmek için Sertifikaları öğesinin altındaki ara ürünleri listeleyin.

+0

Yanıtınıza güncellenen Azure belgelerine bağlantı ekleyebilir misiniz? –

+0

@GauravMantri Bitti. – sharptooth