Sdílet prostřednictvím


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

Tento článek vysvětluje, jak vytvořit zabezpečené připojení mezi reverzním proxy serverem a službami, a tím umožnit koncovému koncovému zabezpečenému kanálu. 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 nakonfigurovaný tak, aby naslouchal https. Tento článek předpokládá, že se jedná o tento případ. Informace o nastavení reverzního proxy serveru v Azure Service Fabric najdete v tématu Konfigurace reverzního proxy serveru v Service Fabric.

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

Reverzní proxy ověřování ve službách:

Reverzní proxy server identifikuje služby pomocí svého certifikátu. V případě clusterů Azure je certifikát určený vlastností reverseProxyCertificate v části Typ prostředku Microsoft.ServiceFabric/clusters šablony Resource Manageru. Pro samostatné clustery je certifikát zadán buď pomocí ReverseProxyCertificate nebo ReverseProxyCertificateCommonNames vlastnost v části Zabezpečení ClusterConfig.json. Další informace najdete v tématu Povolení reverzního proxy serveru v samostatných clusterech.

Služby můžou implementovat logiku pro ověření certifikátu, který představuje reverzní proxy server. Služby můžou jako nastavení konfigurace v konfiguračním balíčku zadat podrobnosti o přijatém klientském certifikátu. To se dá číst za běhu a použít k ověření certifikátu, který prezentuje reverzní proxy server. 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, který služba prezentuje:

Reverzní proxy server podporuje následující zásady pro ověření certifikátu serveru pro certifikáty prezentované službami: None, ServiceCommonNameAndIssuer a ServiceCertificateThumbprints. Chcete-li vybrat zásadu pro reverzní proxy server, který se má použít, zadejte ApplicationCertificateValidationPolicy v části ApplicationGateway/Http v části fabricSettings.

V další části jsou uvedeny podrobnosti konfigurace pro každou z těchto možností.

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

  • Žádné: Reverzní proxy přeskočí ověření certifikátu služby proxied a vytvoří zabezpečené připojení. Toto je výchozí chování. Zadejte ApplicationCertificateValidationPolicy s hodnotou None v části ApplicationGateway/Http.

    {
    "fabricSettings": [
               ...
               {
                 "name": "ApplicationGateway/Http",
                 "parameters": [
                   {
                     "name": "ApplicationCertificateValidationPolicy",
                     "value": "None"
                   }
                 ]
               }
             ],
             ...
    }
    
  • ServiceCommonNameAndIssuer: Reverzní proxy ověřuje certifikát prezentovaný službou na základě společného názvu certifikátu a kryptografického otisku bezprostředního vystavitele: V části ApplicationGateway/Http zadejte applicationCertificateValidationPolicy s hodnotou ServiceCommonNameAndIssuer.

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

    Pokud chcete zadat seznam běžných názvů služeb a kryptografických otisků vystavitele, přidejte v čá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ých názvů certifikátů a kryptografického otisku vystavitele.

    Pokud se koncový bod připojuje k reverznímu proxy serveru, zobrazí se certifikát, který má běžný název a kryptografický otisk vystavitele, odpovídá některé z hodnot uvedených zde, vytvoří se kanál TLS. Po selhání shody s podrobnostmi o certifikátu reverzní proxy selže požadavek klienta se stavovým kódem 502 (Chybná brána). Stavový řádek 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 server ověří certifikát služby proxied na základě jeho kryptografického otisku. Tuto trasu můžete zvolit, pokud jsou služby nakonfigurovány s certifikáty podepsanými svým držitelem: Zadejte ApplicationCertificateValidationPolicy s hodnotou ServiceCertificateThumbprints v části ApplicationGateway/Http .

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

    V části ApplicationGateway/Http také zadejte kryptografické otisky s položkou ServiceCertificateThumbprints. V poli hodnoty 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 připojení ukončí a požadavek klienta selže s chybou 502 (Chybná brána). Stavový řádek HTTP bude obsahovat také frázi "Neplatný certifikát SSL".

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

Service Fabric podporuje konfiguraci více koncových bodů pro službu. Další informace naleznete v tématu Zadání prostředků v manifestu služby.

Reverzní proxy 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 může ze seznamu koncových bodů vybrat libovolný koncový bod. V závislosti na koncových bodech nakonfigurovaných pro službu může být vybraný koncový bod HTTP nebo HTTPS. Můžou existovat scénáře nebo požadavky, kdy chcete, aby reverzní proxy server fungoval v "zabezpečeném režimu"; To znamená, že nechcete, aby zabezpečený reverzní proxy server předával požadavky na nezabezpečené koncové body. Chcete-li nastavit reverzní proxy na režim jen 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:

Pokud pracujete v secureOnlyMode, pokud klient 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ých certifikátů prostřednictvím reverzního proxy serveru

Ukončení protokolu TLS probíhá na reverzním proxy serveru a dojde ke ztrátě všech dat klientského certifikátu. Pro služby, které mají provádět ověřování klientských certifikátů, zadejte nastavení ForwardClientCertificate v části ApplicationGateway/Http .

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

  2. Pokud je vlastnost ForwardClientCertificate nastavená na hodnotu true, reverzní proxy vyžádá certifikát klienta během handshake protokolu TLS s klientem. Potom 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 s kódováním base64 certifikátu klienta. Služba může po kontrole dat certifikátu úspěšně nebo selhat požadavek s odpovídajícím stavovým kódem. Pokud klient neobsahuje certifikát, reverzní proxy předá prázdnou hlavičku a umožní službě zpracovat případ.

Poznámka:

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

Další kroky