Připojení k zabezpečené službě pomocí reverzního proxy serveru
V tomto článku se dozvíte, jak vytvořit zabezpečené připojení mezi reverzním proxy serverem a službami a tím i koncovým zabezpečeným kanálem. Další informace o reverzním proxy serveru najdete v tématu reverzní proxy v Azure Service Fabric
Důležité
Připojení k zabezpečeným službám se podporuje jenom v případě, že je reverzní proxy nakonfigurované pro naslouchání na HTTPS. V tomto článku se předpokládá, že se jedná o tento případ. postup konfigurace reverzního proxy serveru v Service Fabric najdete v tématu nastavení reverzního proxy serveru v Azure Service Fabric .
Zabezpečené vytváření připojení mezi reverzním proxy serverem a službami
Reverzní proxy ověřování pro služby:
Reverzní proxy server identifikuje sám sebe se službami pomocí jejího certifikátu. V případě clusterů Azure je certifikát zadaný pomocí vlastnosti reverseProxyCertificate _ v části _ typ prostředku Microsoft. ServiceFabric/clustery * v šabloně správce prostředků. U samostatných clusterů je certifikát zadaný pomocí **vlastnosti ReverseProxyCertificate_ nebo ReverseProxyCertificateCommonNames v* části zabezpečení _** ClusterConfig.js. Další informace najdete v tématu Povolení reverzního proxy na samostatných clusterech.
Služby můžou implementovat logiku, která ověří certifikát prezentovaný reverzním proxy serverem. Služby můžou určit podrobnosti přijímaného klientského certifikátu jako konfigurační nastavení v konfiguračním balíčku. To je možné číst za běhu a použít k ověření certifikátu prezentovaného reverzním proxy serverem. Chcete-li přidat nastavení konfigurace, přečtěte si téma Správa parametrů aplikace .
Reverzní proxy server ověřuje identitu služby prostřednictvím certifikátu, který prezentuje služba:
Reverzní proxy server podporuje následující zásady, které provádějí ověřování certifikátů serveru pro certifikáty prezentované službami: None, ServiceCommonNameAndIssuer a ServiceCertificateThumbprints. Chcete-li vybrat zásadu pro použití reverzního proxy serveru, zadejte ApplicationCertificateValidationPolicy do části ApplicationGateway/http v části fabricSettings.
V další části jsou uvedeny podrobnosti o konfiguraci pro každou z těchto možností.
Možnosti ověřování certifikátu služby
Žádné: reverzní proxy přeskočí ověření proxy serveru s proxy serverem a vytvoří zabezpečené připojení. Toto je výchozí chování. V části ApplicationGateway/http zadejte ApplicationCertificateValidationPolicy s hodnotou none .
{ "fabricSettings": [ ... { "name": "ApplicationGateway/Http", "parameters": [ { "name": "ApplicationCertificateValidationPolicy", "value": "None" } ] } ], ... }ServiceCommonNameAndIssuer: reverzní proxy ověří certifikát prezentovaný službou na základě běžného názvu certifikátu a kryptografického otisku bezprostředního vystavitele: zadejte ApplicationCertificateValidationPolicy s hodnotou ServiceCommonNameAndIssuer v části ApplicationGateway/http .
{ "fabricSettings": [ ... { "name": "ApplicationGateway/Http", "parameters": [ { "name": "ApplicationCertificateValidationPolicy", "value": "ServiceCommonNameAndIssuer" } ] } ], ... }Pokud chcete zadat seznam běžných názvů služeb a kryptografických otisků vystavitelů, přidejte v oblasti fabricSettings oddíl ApplicationGateway/http/ServiceCommonNameAndIssuer , jak je znázorněno níže. Do pole Parameters lze přidat více než jednou dvojici společného názvu certifikátu a otisků kryptografických otisků vystavitele.
Pokud se připojení ke koncovému bodu proxy serveru zaznamená, vytvoří se kanál protokolu TLS s certifikátem, který obsahuje běžný název a kryptografický otisk vystavitele. Po neúspěšném přiřazení podrobností certifikátu selže reverzní proxy požadavek klienta se stavovým kódem 502 (špatným bránou). Stavový řádek protokolu HTTP bude obsahovat také frázi "Neplatný certifikát SSL".
{ "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: reverzní proxy ověří certifikát proxy služby na základě jeho kryptografického otisku. Tuto trasu můžete zvolit, pokud jsou služby nakonfigurované s certifikáty podepsanými svým vlastníkem: v části ApplicationGateway/http zadejte ApplicationCertificateValidationPolicy s hodnotou ServiceCertificateThumbprints .
{ "fabricSettings": [ ... { "name": "ApplicationGateway/Http", "parameters": [ { "name": "ApplicationCertificateValidationPolicy", "value": "ServiceCertificateThumbprints" } ] } ], ... }Zadejte také kryptografické otisky pomocí položky ServiceCertificateThumbprints v části ApplicationGateway/http . V poli hodnota lze zadat více kryptografických otisků jako čárkami oddělený seznam, jak je vidět níže:
{ "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" } ] } ], ... }Pokud je kryptografický otisk certifikátu serveru uvedený v této položce konfigurace, reverzní proxy připojení TLS úspěšně. V opačném případě se připojení ukončí a požadavek klienta selže s 502 (chybnou bránou). Stavový řádek protokolu HTTP bude obsahovat také frázi "Neplatný certifikát SSL".
Logika výběru koncového bodu, když služby zveřejňují zabezpečení a také nezabezpečené koncové body
Service Fabric podporuje konfiguraci více koncových bodů pro službu. Další informace najdete v tématu určení prostředků v manifestu služby.
Reverzní proxy vybere jeden z koncových bodů, aby předal požadavek na základě parametru dotazu naslouchacího procesu v identifikátoru URI služby. Pokud není zadán parametr naslouchacího prvku, může reverzní proxy vybrat libovolný koncový bod ze seznamu koncových bodů. V závislosti na koncových bodech nakonfigurovaných pro službu může být vybraný koncový bod HTTP nebo HTTPS. Mohou nastat scénáře nebo požadavky, kde chcete, aby reverzní proxy pracoval v režimu pouze pro zabezpečení. To znamená, že nechcete, aby zabezpečený reverzní proxy přesměroval požadavky na nezabezpečené koncové body. Chcete-li nastavit reverzní proxy do režimu pouze pro zabezpečení, zadejte položku konfigurace SecureOnlyMode s hodnotou true v části ApplicationGateway/http .
{
"fabricSettings": [
...
{
"name": "ApplicationGateway/Http",
"parameters": [
...
{
"name": "SecureOnlyMode",
"value": true
}
]
}
],
...
}
Poznámka
Při provozu v SecureOnlyMode, pokud klient zadal parametr naslouchacího procesu odpovídající koncovému bodu http (nezabezpečeného), reverzní proxy server nevrátí požadavek se stavovým kódem HTTP 404 (Nenalezeno).
Nastavení ověřování klientského certifikátu pomocí reverzního proxy serveru
Ukončení protokolu TLS proběhne na reverzním proxy serveru a ztratí se všechna data certifikátu klienta. Aby služby prováděly ověřování klientským certifikátem, zadejte nastavení ForwardClientCertificate v části ApplicationGateway/http .
Pokud je ForwardClientCertificate nastavené na hodnotu false, reverzní proxy nepožaduje klientský certifikát během své metody handshake TLS s klientem. Toto je výchozí chování.
Pokud je ForwardClientCertificate nastaveno na hodnotu true, reverzní proxy požádá o certifikát klienta během své metody handshake TLS s klientem. Pak přepošle data certifikátu klienta ve vlastní hlavičce HTTP s názvem X-Client-Certificate. Hodnota hlavičky je formátovací řetězec PEM kódovaný v kódování Base64 certifikátu klienta. Služba může po kontrole dat certifikátu úspěšně nebo neúspěšně požádat o příslušný stavový kód. Pokud klient neprezentuje certifikát, reverzní proxy předává prázdnou hlavičku a umožňuje, aby služba zavedla případ.
Poznámka
Reverzní proxy funguje jenom jako předávací služba. Neprovede žádné ověření certifikátu klienta.
Další kroky
- Nastavení a konfigurace reverzního proxy serveru v clusteru.
- Další informace o konfiguraci reverzního proxy serveru pro připojení k zabezpečeným službám
- Podívejte se na příklad komunikace HTTP mezi službami ve vzorovém projektu na GitHub.
- Vzdálená volání procedur s Reliable Services Vzdálená komunikace
- Webové rozhraní API, které používá OWIN v Reliable Services
- Správa certifikátů clusteru