Ters proxy ile güvenli bir hizmete bağlanma
Bu makalede ters ara sunucu ile hizmetler arasında güvenli bağlantı kurma ve böylece uçtan uca güvenli kanalı etkinleştirme açıklanmaktadır. Ters ara sunucu hakkında daha fazla bilgi edinmek için bkz . Azure Service Fabric'te ters proxy
Önemli
Güvenli hizmetlere bağlanma yalnızca ters ara sunucu HTTPS'de dinleyecek şekilde yapılandırıldığında desteklenir. Bu makalede, durumun bu olduğu varsayılır. Service Fabric'te ters proxy'yi yapılandırmak için Azure Service Fabric'te ters ara sunucu ayarlama bölümüne bakın.
Ters proxy ile hizmetler arasında güvenli bağlantı kurma
Hizmetlerde ters proxy kimlik doğrulaması:
Ters ara sunucu, sertifikasını kullanarak kendisini hizmetlere tanımlar. Azure kümeleri için sertifika, Resource Manager şablonunun Microsoft.ServiceFabric/clusters Kaynak türü bölümünde reverseProxyCertificate özelliğiyle belirtilir. Tek başına kümeler için sertifika, ClusterConfig.json Güvenlik bölümünde ReverseProxyCertificate veya ReverseProxyCertificateCommonNames özelliğiyle belirtilir. Daha fazla bilgi edinmek için bkz . Tek başına kümelerde ters ara sunucuyu etkinleştirme.
Hizmetler ters ara sunucu tarafından sunulan sertifikayı doğrulamak için mantığı uygulayabilir. Hizmetler, kabul edilen istemci sertifikası ayrıntılarını yapılandırma paketinde yapılandırma ayarları olarak belirtebilir. Bu, çalışma zamanında okunabilir ve ters ara sunucu tarafından sunulan sertifikayı doğrulamak için kullanılabilir. Yapılandırma ayarlarını eklemek için Uygulama parametrelerini yönetme bölümüne bakın.
Hizmet tarafından sunulan sertifika aracılığıyla hizmetin kimliğini doğrulayan ters ara sunucu:
Ters ara sunucu, hizmetler tarafından sunulan sertifikaların sunucu sertifikası doğrulamasını gerçekleştirmek için aşağıdaki ilkeleri destekler: None, ServiceCommonNameAndIssuer ve ServiceCertificateThumbprints. Kullanılacak ters proxy ilkesini seçmek için, fabricSettings altındaki ApplicationGateway/Http bölümünde ApplicationCertificateValidationPolicy değerini belirtin.
Sonraki bölümde bu seçeneklerin her biri için yapılandırma ayrıntıları gösterilir.
Hizmet sertifikası doğrulama seçenekleri
Yok: Ters ara sunucu, prxied hizmet sertifikasının doğrulamasını atlar ve güvenli bağlantıyı kurar. Bu varsayılan davranıştır. ApplicationGateway/Http bölümünde None değeriyle ApplicationCertificateValidationPolicy değerini belirtin.
{ "fabricSettings": [ ... { "name": "ApplicationGateway/Http", "parameters": [ { "name": "ApplicationCertificateValidationPolicy", "value": "None" } ] } ], ... }
ServiceCommonNameAndIssuer: Ters ara sunucu, sertifikanın ortak adına ve anında verenin parmak izine göre hizmet tarafından sunulan sertifikayı doğrular: ApplicationGateway/Http bölümünde ServiceCommonNameAndIssuer değeriyle ApplicationCertificateValidationPolicy değerini belirtin.
{ "fabricSettings": [ ... { "name": "ApplicationGateway/Http", "parameters": [ { "name": "ApplicationCertificateValidationPolicy", "value": "ServiceCommonNameAndIssuer" } ] } ], ... }
Hizmet ortak adı ve veren parmak izlerinin listesini belirtmek için, aşağıda gösterildiği gibi fabricSettings altına bir ApplicationGateway/Http/ServiceCommonNameAndIssuer bölümü ekleyin. Parametreler dizisine birden çok sertifika ortak adı ve veren parmak izi çifti eklenebilir.
Uç nokta ters ara sunucusu bağlanıyorsa ortak adı olan bir sertifika sunar ve veren parmak izi burada belirtilen değerlerden herhangi biri ile eşleşirse, bir TLS kanalı oluşturulur. Sertifika ayrıntılarıyla eşleşmemesi durumunda ters ara sunucu istemcinin isteğini 502 (Hatalı Ağ Geçidi) durum koduyla başarısız olur. HTTP durum satırı ayrıca "Geçersiz SSL Sertifikası" tümceciği içerir.
{ "fabricSettings": [ ... { "name": "ApplicationGateway/Http/ServiceCommonNameAndIssuer", "parameters": [ { "name": "WinFabric-Test-Certificate-CN1", "value": "b3 44 9b 01 8d 0f 68 39 a2 c5 d6 2b 5b 6c 6a c8 22 b4 22 11" }, { "name": "WinFabric-Test-Certificate-CN2", "value": "b3 44 9b 01 8d 0f 68 39 a2 c5 d6 2b 5b 6c 6a c8 22 11 33 44" } ] } ], ... }
ServiceCertificateThumbprints: Ters ara sunucu, yakın hizmet sertifikasını parmak izine göre doğrular. Hizmetler otomatik olarak imzalanan sertifikalarla yapılandırıldığında bu yolu kullanmayı seçebilirsiniz: ApplicationGateway/Http bölümünde ServiceCertificateThumbprints değeriyle ApplicationCertificateValidationPolicy değerini belirtin.
{ "fabricSettings": [ ... { "name": "ApplicationGateway/Http", "parameters": [ { "name": "ApplicationCertificateValidationPolicy", "value": "ServiceCertificateThumbprints" } ] } ], ... }
Ayrıca ApplicationGateway/Http bölümünde ServiceCertificateThumbprints girdisi ile parmak izlerini belirtin. Aşağıda gösterildiği gibi, değer alanında virgülle ayrılmış liste olarak birden çok parmak izi belirtilebilir:
{ "fabricSettings": [ ... { "name": "ApplicationGateway/Http", "parameters": [ ... { "name": "ServiceCertificateThumbprints", "value": "78 12 20 5a 39 d2 23 76 da a0 37 f0 5a ed e3 60 1a 7e 64 bf,78 12 20 5a 39 d2 23 76 da a0 37 f0 5a ed e3 60 1a 7e 64 b9" } ] } ], ... }
Sunucu sertifikasının parmak izi bu yapılandırma girişinde listeleniyorsa, ters ara sunucu TLS bağlantısının başarılı olur. Aksi takdirde, bağlantıyı sonlandırır ve istemcinin isteğini bir 502 (Hatalı Ağ Geçidi) ile başarısız olur. HTTP durum satırı ayrıca "Geçersiz SSL Sertifikası" tümceciği içerir.
Hizmetler hem güvenli hem de güvenli olmayan uç noktaları kullanıma sunarken uç nokta seçim mantığı
Service Fabric, bir hizmet için birden çok uç nokta yapılandırmayı destekler. Daha fazla bilgi için bkz . Hizmet bildiriminde kaynakları belirtme.
Ters ara sunucu, hizmet URI'sindeki ListenerName sorgu parametresine göre isteği iletmek için uç noktalardan birini seçer. ListenerName parametresi belirtilmezse, ters ara sunucu uç noktalar listesinden herhangi bir uç noktayı seçebilir. Hizmet için yapılandırılan uç noktalara bağlı olarak, seçilen uç nokta bir HTTP veya HTTPS uç noktası olabilir. Ters proxy'nin "yalnızca güvenli modda" çalıştırılmasını istediğiniz senaryolar veya gereksinimler olabilir; başka bir ifadeyle, güvenli ters proxy'nin istekleri güvenli olmayan uç noktalara iletmesini istemezsiniz. Ters ara sunucuyu yalnızca güvenli moda ayarlamak için, ApplicationGateway/Http bölümünde true değeriyle SecureOnlyMode yapılandırma girdisini belirtin.
{
"fabricSettings": [
...
{
"name": "ApplicationGateway/Http",
"parameters": [
...
{
"name": "SecureOnlyMode",
"value": true
}
]
}
],
...
}
Not
SecureOnlyMode'da çalışırken, bir istemci HTTP (güvenli olmayan) uç noktasına karşılık gelen bir ListenerName belirttiyse ters ara sunucu isteği 404 (Bulunamadı) HTTP durum koduyla başarısız olur.
Ters ara sunucu aracılığıyla istemci sertifikası kimlik doğrulamasını ayarlama
TLS sonlandırması ters proxy'de gerçekleşir ve tüm istemci sertifikası verileri kaybolur. Hizmetlerin istemci sertifikası kimlik doğrulaması gerçekleştirmesi için, ApplicationGateway/Http bölümünde ForwardClientCertificate ayarını belirtin.
ForwardClientCertificate false olarak ayarlandığında, ters ara sunucu, istemciyle TLS el sıkışması sırasında istemci sertifikasını istemeyecektir. Bu varsayılan davranıştır.
ForwardClientCertificate true olarak ayarlandığında, ters ara sunucu, tls istemcisiyle el sıkışması sırasında istemcinin sertifikasını istemektedir. Ardından istemci sertifikası verilerini X-Client-Certificate adlı özel bir HTTP üst bilgisinde iletir. Üst bilgi değeri, istemci sertifikasının base64 kodlanmış PEM biçim dizesidir. Hizmet, sertifika verilerini inceledikten sonra uygun durum koduyla isteği başarılı/başarısız yapabilir. İstemci bir sertifika sunmazsa ters ara sunucu boş bir üst bilgi iletir ve hizmetin olayı işlemesine izin verir.
Not
Ters ara sunucu yalnızca bir iletme hizmeti olarak davranır. İstemci sertifikasının herhangi bir doğrulamasını gerçekleştirmez.
Sonraki adımlar
- Kümede ters ara sunucu ayarlama ve yapılandırma.
- Güvenli hizmetlere bağlanmak için ters ara sunucuyu yapılandırma bölümüne bakın
- GitHub'daki örnek projedeki hizmetler arasındaki HTTP iletişimi örneğine bakın.
- Reliable Services uzaktan iletişim ile uzaktan yordam çağrıları
- Reliable Services'da OWIN kullanan Web API'si
- Küme sertifikalarını yönetme