Ansluta till en säker tjänst med omvänd proxy

I den här artikeln förklaras hur du upprättar en säker anslutning mellan omvänd proxy och tjänster, vilket möjliggör en säker kanal från ett slut till en annan. Mer information om omvänd proxy finns i Omvänd proxy i Azure Service Fabric

Viktigt

Anslutning till säkra tjänster stöds endast när omvänd proxy har konfigurerats för att lyssna på HTTPS. Den här artikeln förutsätter att så är fallet. Se Konfigurera omvänd proxy i Azure Service Fabric konfigurera omvänd proxy i Service Fabric.

Säker anslutningsetablering mellan omvänd proxy och tjänster

Omvänd proxy-autentisering till tjänster:

Den omvända proxyn identifierar sig för tjänster med hjälp av dess certifikat. För Azure-kluster anges certifikatet med egenskapen reverseProxyCertificate _ i avsnittet _ Microsoft.ServiceFabric/clusters * Resurstyp i Resource Manager mallen. För fristående kluster anges certifikatet med antingen **egenskapen ReverseProxyCertificate* eller _ ReverseProxyCertificateCommonNames**** i avsnittet _ Security i ClusterConfig.jspå. Mer information finns i Aktivera omvänd proxy på fristående kluster.

Tjänster kan implementera logiken för att verifiera certifikatet som presenteras av den omvända proxyn. Tjänsterna kan ange den godkända informationen om klientcertifikatet som konfigurationsinställningar i konfigurationspaketet. Detta kan läsas vid körning och användas för att verifiera certifikatet som presenteras av den omvända proxyn. Se Hantera programparametrar för att lägga till konfigurationsinställningarna.

Omvänd proxy som verifierar tjänstens identitet via certifikatet som presenteras av tjänsten:

Omvänd proxy stöder följande principer för att utföra servercertifikatsverifiering av de certifikat som presenteras av tjänster: Ingen, ServiceCommonNameAndIssuer och ServiceCertificateThumbprints. Om du vill välja principen för omvänd proxy som ska användas anger du ApplicationCertificateValidationPolicy i avsnittet ApplicationGateway/Http under fabricSettings.

I nästa avsnitt visas konfigurationsinformation för vart och ett av dessa alternativ.

Verifieringsalternativ för tjänstcertifikat

  • Ingen: Omvänd proxy hoppar över verifieringen av proxytjänstcertifikatet och upprättar den säkra anslutningen. Det här är standardbeteendet. Ange ApplicationCertificateValidationPolicy med värdet None (Ingen) i avsnittet ApplicationGateway/Http.

    {
    "fabricSettings": [
               ...
               {
                 "name": "ApplicationGateway/Http",
                 "parameters": [
                   {
                     "name": "ApplicationCertificateValidationPolicy",
                     "value": "None"
                   }
                 ]
               }
             ],
             ...
    }
    
  • ServiceCommonNameAndIssuer: Omvänd proxy verifierar certifikatet som presenteras av tjänsten baserat på certifikatets eget namn och tumavtrycket för den omedelbara utfärdaren: Ange ApplicationCertificateValidationPolicy med värdet ServiceCommonNameAndIssuer i avsnittet ApplicationGateway/Http.

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

    Om du vill ange listan över tjänstens eget namn och utfärdarens tumavtryck lägger du till avsnittet ApplicationGateway/Http/ServiceCommonNameAndIssuer under fabricSettings enligt nedan. Du kan lägga till flera tumavtryckspar för certifikatnamn och utfärdare i parametermatrisen.

    Om den omvända slutpunktsproxyn ansluter till presenterar ett certifikat som har ett eget namn och utfärdarens tumavtryck matchar något av de värden som anges här, upprättas en TLS-kanal. Om certifikatinformationen inte matchas misslyckas omvänd proxy klientens begäran med statuskoden 502 (felaktig gateway). HTTP-statusraden innehåller också frasen "Ogiltigt SSL-certifikat".

    {
    "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: Omvänd proxy verifierar det proxybaserade tjänstcertifikatet baserat på tumavtrycket. Du kan välja att gå den här vägen när tjänsterna har konfigurerats med själv signerade certifikat: Ange ApplicationCertificateValidationPolicy med värdet ServiceCertificateThumbprints i avsnittet ApplicationGateway/Http.

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

    Ange även tumavtrycken med posten ServiceCertificateThumbprints i avsnittet ApplicationGateway/Http. Flera tumavtryck kan anges som en kommaavgränsad lista i värdefältet, enligt nedan:

    {
    "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"
                   }
                 ]
               }
             ],
             ...
    }
    

    Om tumavtrycket för servercertifikatet visas i den här konfigurationsposten lyckas omvänd proxy TLS-anslutningen. Annars avslutas anslutningen och klientens begäran misslyckas med 502 (felaktig gateway). HTTP-statusraden innehåller också frasen "Ogiltigt SSL-certifikat".

Logik för val av slutpunkt när tjänster exponerar säkra och oskyddade slutpunkter

Service Fabric stöder konfiguration av flera slutpunkter för en tjänst. Mer information finns i Ange resurser i ett tjänstmanifest.

Omvänd proxy väljer en av slutpunkterna för att vidarebefordra begäran baserat på frågeparametern ListenerName i tjänstens URI. Om parametern ListenerName inte anges kan den omvända proxyn välja valfri slutpunkt från listan över slutpunkter. Beroende på vilka slutpunkter som har konfigurerats för tjänsten kan den valda slutpunkten vara en HTTP- eller HTTPS-slutpunkt. Det kan finnas scenarier eller krav där du vill att den omvända proxyn ska fungera i ett "endast säkert läge". Det innebär att du inte vill att den säkra omvända proxyn ska vidarebefordra begäranden till oskyddade slutpunkter. Om du vill ställa in omvänd proxy på endast säkert läge anger du konfigurationsposten SecureOnlyMode med värdet true i avsnittet ApplicationGateway/Http.

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

Anteckning

Om en klient har angett ett ListenerName som motsvarar en HTTP(oskyddad) slutpunkt vid drift i SecureOnlyMode misslyckas omvänd proxy begäran med http-statuskoden 404 (hittades inte).

Konfigurera klientcertifikatautentisering via omvänd proxy

TLS-avslutning sker vid omvänd proxy och alla klientcertifikatdata går förlorade. För de tjänster som ska utföra autentisering med klientcertifikat anger du inställningen ForwardClientCertificate i avsnittet ApplicationGateway/Http.

  1. När ForwardClientCertificate är inställt på false begär omvänd proxy inte klientcertifikatet under TLS-handskakningen med klienten. Det här är standardbeteendet.

  2. När ForwardClientCertificate har angetts till true begär omvänd proxy klientens certifikat under TLS-handskakningen med klienten. Den vidarebefordrar sedan klientcertifikatdata i en anpassad HTTP-rubrik med namnet X-Client-Certificate. Rubrikvärdet är den base64-kodade PEM-formatsträngen för klientens certifikat. Tjänsten kan lyckas/misslyckas med begäran med lämplig statuskod när certifikatdata har inspekterats. Om klienten inte presenterar ett certifikat vidarebefordrar omvänd proxy ett tomt huvud och låter tjänsten hantera ärendet.

Anteckning

Omvänd proxy fungerar bara som en vidarebefordrande tjänst. Den utför ingen validering av klientens certifikat.

Nästa steg