Ters proxy ile güvenli bir hizmete bağlanma
Bu makalede, ters proxy ve hizmetler arasında güvenli bağlantı kurmayı ve böylece uçtan uca güvenli kanalı etkinleştirmeyi açıklar. Ters proxy hakkında daha fazla bilgi edinmek için bkz. Azure 'Da ters proxy Service Fabric
Önemli
Güvenli hizmetlere bağlanma yalnızca ters proxy, HTTPS üzerinde dinlemek üzere yapılandırıldığında desteklenir. Bu makalede bu durum olduğu varsayılır. Service Fabric ' de ters proxy 'yi yapılandırmak için Azure Service Fabric 'da ters proxy ayarlama bölümüne bakın.
Ters proxy ve hizmetler arasında güvenli bağlantı kurulumu
Hizmetlere ters proxy kimlik doğrulaması:
Ters proxy, sertifikasını kullanarak kendisini hizmetlere tanıtır. Azure kümeleri için, sertifika, Kaynak Yöneticisi şablonunun _ Microsoft. servicefabric/kümeler * kaynak türü bölümünde smarproxycertificate _ özelliği ile belirtilir. Tek başına kümeler için, sertifika, ClusterConfig.json 'un _ güvenlik bölümünde bulunan **Smarproxycertificate_ veya smarproxycertificatecommonnames özelliğiyle*** belirtilir. Daha fazla bilgi için bkz. tek başına kümelerde ters proxy 'Yi etkinleştirme.
Hizmetler, ters proxy tarafından sunulan sertifikayı doğrulamak için mantığı uygulayabilir. Hizmetler, kabul edilen istemci sertifikası ayrıntılarını yapılandırma paketindeki yapılandırma ayarları olarak belirtebilir. Bu, çalışma zamanında okunabilir ve ters proxy 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 ters proxy olarak doğrulayan:
Ters proxy, 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, Fabricsettingsaltındaki Applicationgateway/http bölümünde applicationcertificatevalidationpolicy ' ı belirtin.
Sonraki bölümde, bu seçeneklerin her biri için yapılandırma ayrıntıları gösterilmektedir.
Hizmet sertifikası doğrulama seçenekleri
Hiçbiri: ters proxy, proxy kullanan hizmet sertifikasının doğrulanmasını atlar ve güvenli bağlantı 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 proxy, 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ğerine sahip applicationcertificatevalidationpolicy değerini belirtin.
{ "fabricSettings": [ ... { "name": "ApplicationGateway/Http", "parameters": [ { "name": "ApplicationCertificateValidationPolicy", "value": "ServiceCommonNameAndIssuer" } ] } ], ... }Hizmet ortak adı ve veren parmak izleri 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 çiftleri eklenebilir.
Uç nokta ters proxy 'si, ortak ad ve veren parmak izi tarafından burada belirtilen değerlerden biriyle eşleşen bir sertifika sunduğunda, bir TLS kanalı oluşturulur. Sertifika ayrıntılarının eşleşmemesi başarısız olduktan sonra, ters proxy istemcinin isteği 502 (Hatalı ağ geçidi) durum kodu ile başarısız olur. HTTP durum satırı, "geçersiz SSL sertifikası" ifadesini de içerecektir.
{ "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 proxy, kendi parmak izine bağlı olarak proxy hizmet sertifikasını doğrular. Hizmetler otomatik olarak imzalanan sertifikalarla yapılandırıldığında bu yolu kullanmaya devam edebilirsiniz: Applicationgateway/http bölümünde ServiceCertificateThumbprints değeri Ile Applicationcertificatevalidationpolicy öğesini belirtin.
{ "fabricSettings": [ ... { "name": "ApplicationGateway/Http", "parameters": [ { "name": "ApplicationCertificateValidationPolicy", "value": "ServiceCertificateThumbprints" } ] } ], ... }Ayrıca, ServiceCertificateThumbprints girişi ile birlikte parmak Izlerini Applicationgateway/http bölümünde de belirtin. Birden çok parmak izi, değer alanında aşağıda gösterildiği gibi, virgülle ayrılmış bir liste olarak 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 proxy TLS bağlantısından başarılı olur. Aksi takdirde, bağlantıyı sonlandırır ve istemcinin isteği 502 (Hatalı ağ geçidi) ile başarısız olur. HTTP durum satırı, "geçersiz SSL sertifikası" ifadesini de içerecektir.
Hizmetler güvenli hale geldiğinde ve güvenli olmayan uç noktalar sunan uç nokta seçim mantığı
Service Fabric, bir hizmet için birden çok uç noktanın yapılandırılmasını destekler. Daha fazla bilgi için bkz. hizmet bildiriminde kaynakları belirtme.
Ters proxy, isteği HIZMET URI'Sindeki listenername sorgu parametresine göre iletmek için uç noktalardan birini seçer. Listenername parametresi belirtilmemişse, ters proxy uç noktalar listesinden herhangi bir uç nokta 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ışmasını istediğiniz senaryolar veya gereksinimler olabilir; diğer bir deyişle, güvenli ters proxy 'nin istekleri güvenli olmayan uç noktalara iletmesini istemezsiniz. Ters proxy 'yi güvenli moda ayarlamak için, Applicationgateway/http bölümünde true değerine sahip secureonlymode yapılandırma girdisini belirtin.
{
"fabricSettings": [
...
{
"name": "ApplicationGateway/Http",
"parameters": [
...
{
"name": "SecureOnlyMode",
"value": true
}
]
}
],
...
}
Not
Secureonlymode'da çalışırken, istemci http (güvenli olmayan) uç noktasına karşılık gelen bir listenername belirttiyseniz, ters proxy, isteği 404 (bulunamadı) http durum kodu ile başarısız olur.
Ters ara sunucu aracılığıyla istemci sertifikası kimlik doğrulamasını ayarlama
TLS sonlandırma, ters proxy 'de gerçekleşir ve tüm istemci sertifikası verileri kaybedilir. 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 proxy, istemci ile TLS el sıkışması sırasında istemci sertifikasını istemeyecektir. Bu, varsayılan davranıştır.
Forwardclientcertificate değeri true olarak ayarlandığında ters proxy, istemci ile TLS el sıkışması sırasında istemcinin sertifikasını ister. Daha sonra istemci sertifikası verilerini X-Client-Certificate adlı özel bir http üst bilgisinde iletecektir. Üst bilgi değeri, istemci sertifikasının Base64 kodlamalı pek biçim dizesidir. Hizmet, sertifika verilerini inceledikten sonra uygun durum koduna sahip isteği başarılı bir şekilde devreder. İstemci bir sertifika sunmıyorsa, ters proxy boş bir üst bilgiyi iletir ve hizmetin durumu işlemesini sağlar.
Not
Ters proxy yalnızca bir iletme hizmeti olarak çalışır. İstemci sertifikasının herhangi bir doğrulamasını gerçekleştirmeyecektir.
Sonraki adımlar
- Bir kümede ters proxy ayarlayın ve yapılandırın.
- Güvenli hizmetlere bağlanmak için ters proxy 'Yi yapılandırma konusuna bakın
- GitHub bir örnek projedeHIZMETLER arasındaki http iletişimine örnek olarak bakın.
- Reliable Services uzaktan iletişim ile uzak yordam çağrıları
- Reliable Services 'de OWıN kullanan Web API 'SI
- Küme sertifikalarını yönetme