Připojení k zabezpečené službě pomocí reverzního proxy serveru

Tento článek vysvětluje, jak navázat zabezpečené připojení mezi reverzním proxy serverem a službami a umožnit tak kompletní zabezpečený kanál. Další informace o reverzním proxy serveru najdete v tématu Reverzní proxy server v Azure Service Fabric.

Důležité

Připojení k zabezpečeným službám se podporuje jenom v případech, kdy je reverzní proxy server nakonfigurovaný tak, aby naslouchal na HTTPS. Tento článek předpokládá, že tomu tak je. Informace o konfiguraci reverzního proxy serveru v Service Fabric najdete v tématu Nastavení reverzního proxy serveru v Azure Service Fabric .

Zabezpečené navázání připojení mezi reverzním proxy serverem a službami

Reverzní proxy ověřování do služeb:

Reverzní proxy server se identifikuje ve službách pomocí svého certifikátu. Pro clustery Azure se certifikát zadává pomocí vlastnosti reverseProxyCertificate v části Typ prostředkuMicrosoft.ServiceFabric/clusters šablony Resource Manager. U samostatných clusterů se certifikát zadává pomocí vlastnosti ReverseProxyCertificate nebo ReverseProxyCertificateCommonNames v části Zabezpečení souboru ClusterConfig.json. Další informace najdete v tématu Povolení reverzního proxy serveru na samostatných clusterech.

Služby můžou implementovat logiku pro ověření certifikátu předloženého reverzním proxy serverem. Služby můžou zadat podrobnosti o přijatém klientském certifikátu jako nastavení konfigurace v konfiguračním balíčku. Můžete ho číst za běhu a použít k ověření certifikátu předloženého reverzním proxy serverem. Informace o přidání nastavení konfigurace najdete v tématu Správa parametrů aplikace .

Reverzní proxy server ověřující identitu služby prostřednictvím certifikátu předloženého službou:

Reverzní proxy server podporuje následující zásady pro ověřování certifikátů serveru předložených službami: None, ServiceCommonNameAndIssuer a ServiceCertificateThumbprints. Pokud chcete vybrat zásadu pro reverzní proxy server, která se má použít, zadejte ApplicationCertificateValidationPolicy v části ApplicationGateway/Http v části fabricSettings.

Další část obsahuje podrobnosti o konfiguraci pro každou z těchto možností.

Možnosti ověření certifikátu služby

  • Žádné: Reverzní proxy server přeskočí ověření certifikátu služby proxy serveru a naváže 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ěřuje 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žby a kryptografických otisků vystavitele, přidejte do části FabricSettings oddíl ApplicationGateway/Http/ServiceCommonNameAndIssuer, jak je znázorněno níže. Do pole parametrů je možné přidat několik párů běžný název certifikátu a kryptografický otisk vystavitele.

    Pokud reverzní proxy server koncového bodu, ke kterému se připojuje, předloží certifikát, který má běžný název a kryptografický otisk vystavitele, odpovídá některé z zde zadaných hodnot, vytvoří se kanál TLS. Pokud se nepodaří spárovat podrobnosti o certifikátu, reverzní proxy server požadavek klienta selže se stavovým kódem 502 (Chybná brána). Stavový řádek HTTP bude také obsahovat 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 server ověří certifikát proxy služby na základě jeho kryptografického otisku. Tuto trasu můžete zvolit, když jsou služby nakonfigurované s certifikáty podepsanými svým držitelem: V části ApplicationGateway/Http zadejte ApplicationCertificateValidationPolicy s hodnotou ServiceCertificateThumbprints.

    {
    "fabricSettings": [
               ...
               {
                 "name": "ApplicationGateway/Http",
                 "parameters": [
                   {
                     "name": "ApplicationCertificateValidationPolicy",
                     "value": "ServiceCertificateThumbprints"
                   }
                 ]
               }
             ],
             ...
    }
    

    Zadejte také kryptografické otisky s položkou ServiceCertificateThumbprints v části ApplicationGateway/Http . V poli s hodnotou je možné zadat více kryptografických otisků jako seznam oddělený čárkami, jak je znázorněno 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 server úspěšně provede připojení TLS. Jinak se připojení ukončí a požadavek klienta selže s chybou 502 (Chybná brána). Stavový řádek HTTP bude také obsahovat frázi Neplatný certifikát SSL.

Logika výběru koncového bodu, když služby zveřejňují zabezpečené i nezabezpečené koncové body

Service Fabric podporuje konfiguraci několika koncových bodů pro službu. Další informace najdete v tématu Určení prostředků v manifestu služby.

Reverzní proxy server vybere jeden z koncových bodů pro předání požadavku na základě parametru dotazu ListenerName v identifikátoru URI služby. Pokud parametr ListenerName není zadaný, reverzní proxy server může 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ým koncovým bodem koncový bod HTTP nebo HTTPS. Mohou existovat scénáře nebo požadavky, ve kterých chcete, aby reverzní proxy server fungoval v režimu "pouze zabezpečení"; to znamená, že nechcete, aby zabezpečený reverzní proxy server předával požadavky nezabezpečeným koncovým bodům. Pokud chcete nastavit reverzní proxy server do režimu jen se zabezpečením, zadejte v části ApplicationGateway/Http položku konfigurace SecureOnlyMode s hodnotou true.

{
"fabricSettings": [
          ...
          {
            "name": "ApplicationGateway/Http",
            "parameters": [
                ...
              {
                "name": "SecureOnlyMode",
                "value": true
              }
            ]
          }
        ],
        ...
}

Poznámka

Pokud klient při provozu v SecureOnlyMode zadal název naslouchacího procesu odpovídající koncovému bodu HTTP (nezabezpečený), reverzní proxy server požadavek selže se stavovým kódem HTTP 404 (Nenalezeno).

Nastavení ověřování klientským certifikátem prostřednictvím reverzního proxy serveru

K ukončení protokolu TLS dochází na reverzním proxy serveru a dojde ke ztrátě všech dat klientského certifikátu. Aby služby prováděly ověřování klientským certifikátem, zadejte nastavení ForwardClientCertificate v části ApplicationGateway/Http .

  1. Pokud je vlastnost ForwardClientCertificate nastavená na hodnotu false, reverzní proxy server nebude během metody handshake protokolu TLS klienta požadovat certifikát klienta. Toto je výchozí chování.

  2. Pokud je ForwardClientCertificate nastavená na hodnotu true, reverzní proxy server požádá o certifikát klienta během metody handshake protokolu TLS s klientem. Pak předá data klientského certifikátu ve vlastní hlavičce HTTP s názvem X-Client-Certificate. Hodnota hlavičky je řetězec formátu PEM v kódování base64 certifikátu klienta. Po kontrole dat certifikátu může služba požadavek uspět nebo ho selhat s odpovídajícím stavovým kódem. Pokud klient nepředloží certifikát, reverzní proxy server předá prázdnou hlavičku a umožní službě zpracovat případ.

Poznámka

Reverzní proxy server funguje pouze jako služba předávání. Neprovádí žádné ověření certifikátu klienta.

Další kroky