Verbinding maken met een beveiligde service met de omgekeerde proxy

In dit artikel wordt uitgelegd hoe u een beveiligde verbinding tot stand brengt tussen de omgekeerde proxy en services, waardoor een end-to-end beveiligd kanaal mogelijk wordt. Zie Omgekeerde proxy in Azure Service Fabric voor meer informatie over omgekeerde proxy

Belangrijk

Verbinding maken met beveiligde services wordt alleen ondersteund wanneer omgekeerde proxy is geconfigureerd om te luisteren op HTTPS. In dit artikel wordt ervan uitgegaan dat dit het geval is. Raadpleeg Omgekeerde proxy instellen in Azure Service Fabric om de omgekeerde proxy in Service Fabric te configureren.

Beveiligde verbinding tussen de omgekeerde proxy en services

Omgekeerde proxyauthentificatie bij services:

De omgekeerde proxy identificeert zichzelf bij services met behulp van het bijbehorende certificaat. Voor Azure-clusters wordt het certificaat opgegeven met de eigenschap reverseProxyCertificate in de sectie Microsoft.ServiceFabric/clustersResourcetype van de sjabloon Resource Manager. Voor zelfstandige clusters wordt het certificaat opgegeven met de eigenschap ReverseProxyCertificate of ReverseProxyCertificateCommonNames in de sectie Beveiliging van ClusterConfig.json. Zie Omgekeerde proxy inschakelen op zelfstandige clusters voor meer informatie.

Services kunnen de logica implementeren om het certificaat te controleren dat door de omgekeerde proxy wordt gepresenteerd. De services kunnen de details van het geaccepteerde clientcertificaat opgeven als configuratie-instellingen in het configuratiepakket. Dit kan tijdens runtime worden gelezen en gebruikt om het certificaat te valideren dat door de omgekeerde proxy wordt gepresenteerd. Raadpleeg Toepassingsparameters beheren om de configuratie-instellingen toe te voegen.

Omgekeerde proxy waarbij de identiteit van de service wordt geverifieerd via het certificaat dat door de service wordt gepresenteerd:

Omgekeerde proxy ondersteunt het volgende beleid voor het uitvoeren van servercertificaatvalidatie van de certificaten die worden aangeboden door services: None, ServiceCommonNameAndIssuer en ServiceCertificateThumbprints. Als u het beleid voor omgekeerde proxy wilt selecteren dat moet worden gebruikt, geeft u de ApplicationCertificateValidationPolicy op in de sectie ApplicationGateway/Http onder fabricSettings.

In de volgende sectie ziet u configuratiedetails voor elk van deze opties.

Opties voor servicecertificaatvalidatie

  • Geen: omgekeerde proxy slaat de verificatie van het geproxied servicecertificaat over en brengt de beveiligde verbinding tot stand. Dit is de standaardinstelling. Geef in de sectie ApplicationGateway/Http de waarde ApplicationCertificateValidationPolicy op met de waarde Geen.

    {
    "fabricSettings": [
               ...
               {
                 "name": "ApplicationGateway/Http",
                 "parameters": [
                   {
                     "name": "ApplicationCertificateValidationPolicy",
                     "value": "None"
                   }
                 ]
               }
             ],
             ...
    }
    
  • ServiceCommonNameAndIssuer: Omgekeerde proxy verifieert het certificaat dat door de service wordt gepresenteerd op basis van de algemene naam van het certificaat en de vingerafdruk van de directe uitgever: geef de ApplicationCertificateValidationPolicy op met de waarde ServiceCommonNameAndIssuer in de sectie ApplicationGateway/Http .

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

    Als u de lijst met gemeenschappelijke naam en vingerafdruk van de uitgever van de service wilt opgeven, voegt u een sectie ApplicationGateway/Http/ServiceCommonNameAndIssuer toe onder fabricSettings, zoals hieronder wordt weergegeven. Meerdere vingerafdrukparen voor algemene namen en verleners van certificaten kunnen worden toegevoegd in de parametersmatrix .

    Als de omgekeerde proxy van het eindpunt waarmee verbinding wordt gemaakt, een certificaat weergeeft waarvan de algemene naam en vingerafdruk van de uitgever overeenkomen met een van de waarden die hier zijn opgegeven, wordt er een TLS-kanaal tot stand gebracht. Als de certificaatgegevens niet overeenkomen, mislukt de aanvraag van de client met een 502-statuscode (ongeldige gateway). De HTTP-statusregel bevat ook de tekst 'Ongeldig SSL-certificaat'.

    {
    "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: omgekeerde proxy controleert het geproxied servicecertificaat op basis van de vingerafdruk. U kunt deze route kiezen wanneer de services zijn geconfigureerd met zelfondertekende certificaten: Geef de ApplicationCertificateValidationPolicy op met de waarde ServiceCertificateThumbprints in de sectie ApplicationGateway/Http .

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

    Geef ook de vingerafdrukken op met een ServiceCertificateThumbprints-vermelding in de sectie ApplicationGateway/Http . Meerdere vingerafdrukken kunnen worden opgegeven als een door komma's gescheiden lijst in het waardeveld, zoals hieronder wordt weergegeven:

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

    Als de vingerafdruk van het servercertificaat wordt vermeld in deze configuratievermelding, slaagt de omgekeerde proxy in de TLS-verbinding. Anders wordt de verbinding beëindigd en mislukt de aanvraag van de client met een 502 (Ongeldige gateway). De HTTP-statusregel bevat ook de tekst 'Ongeldig SSL-certificaat'.

Eindpuntselectielogica wanneer services veilige en onbeveiligde eindpunten beschikbaar maken

Service Fabric ondersteunt het configureren van meerdere eindpunten voor een service. Zie Resources opgeven in een servicemanifest voor meer informatie.

Omgekeerde proxy selecteert een van de eindpunten om de aanvraag door te sturen op basis van de queryparameter ListenerName in de service-URI. Als de parameter ListenerName niet is opgegeven, kan de omgekeerde proxy elk eindpunt kiezen uit de lijst met eindpunten. Afhankelijk van de eindpunten die voor de service zijn geconfigureerd, kan het geselecteerde eindpunt een HTTP- of HTTPS-eindpunt zijn. Er kunnen scenario's of vereisten zijn waarin u wilt dat de omgekeerde proxy werkt in een 'alleen-beveiligde modus'; Dat wil dus dat u niet wilt dat de beveiligde omgekeerde proxy aanvragen doorstuurt naar onbeveiligde eindpunten. Als u omgekeerde proxy wilt instellen op de modus Alleen-beveiligen, geeft u de configuratie-vermelding SecureOnlyMode op met de waarde true in de sectie ApplicationGateway/Http .

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

Notitie

Wanneer u in SecureOnlyMode werkt en een client een ListenerName heeft opgegeven die overeenkomt met een HTTP-eindpunt (niet-beveiligd), mislukt de aanvraag met een HTTP-statuscode 404 (Niet gevonden).

Clientcertificaatverificatie instellen via de omgekeerde proxy

TLS-beëindiging vindt plaats op de omgekeerde proxy en alle clientcertificaatgegevens gaan verloren. Geef voor de services om verificatie van clientcertificaten uit te voeren de instelling ForwardClientCertificate op in de sectie ApplicationGateway/Http .

  1. Wanneer ForwardClientCertificate is ingesteld op false, vraagt reverse proxy het clientcertificaat niet aan tijdens de TLS-handshake met de client. Dit is de standaardinstelling.

  2. Wanneer ForwardClientCertificate is ingesteld op true, vraagt reverse proxy het certificaat van de client aan tijdens de TLS-handshake met de client. Vervolgens worden de clientcertificaatgegevens doorgestuurd in een aangepaste HTTP-header met de naam X-Client-Certificate. De headerwaarde is de base64 gecodeerde PEM-indelingstekenreeks van het certificaat van de client. De service kan de aanvraag met de juiste statuscode voltooien/mislukken nadat de certificaatgegevens zijn geïnspecteerd. Als de client geen certificaat presenteert, stuurt omgekeerde proxy een lege header door en laat de service de case afhandelen.

Notitie

Omgekeerde proxy fungeert alleen als een doorstuurservice. Er wordt geen validatie van het certificaat van de client uitgevoerd.

Volgende stappen