Verbinding maken met een beveiligde service met de omgekeerde proxy

In dit artikel wordt uitgelegd hoe u een beveiligde verbinding tot stand kunt brengen 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 Service Fabric

Belangrijk

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

Veilige verbinding tot stand brengen tussen de omgekeerde proxy en services

Omgekeerde proxyverlening bij services:

De omgekeerde proxy identificeert zichzelf aan services met behulp van het certificaat. Voor Azure-clusters wordt het certificaat opgegeven met de eigenschap *reverseProxyCertificate _ in de sectie _ Microsoft.ServiceFabric/clusters * Resourcetype van de Resource Manager sjabloon. Voor zelfstandige clusters wordt het certificaat opgegeven met de eigenschap ReverseProxyCertificate _ of _ReverseProxyCertificateCommonNames _ in de sectie _ Beveiliging van ClusterConfig.jsop. Zie Omgekeerde proxy inschakelen op zelfstandige clusters voor meer informatie.

Services kunnen de logica implementeren om het certificaat te verifiëren dat wordt gepresenteerd door de omgekeerde proxy. 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 wordt gepresenteerd door de omgekeerde proxy. Raadpleeg Toepassingsparameters beheren om de configuratie-instellingen toe te voegen.

Omgekeerde proxy om de identiteit van de service te verifiëren via het certificaat dat door de service wordt gepresenteerd:

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

In de volgende sectie worden configuratiedetails voor elk van deze opties be lezen.

Validatieopties voor servicecertificaten

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

    {
    "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 verlener: geef 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 algemene servicenaam en vingerafdruk van de verlener wilt opgeven, voegt u een sectie ApplicationGateway/Http/ServiceCommonNameAndIssuer toe onder fabricSettings, zoals hieronder wordt weergegeven. Er kunnen meerdere algemene naam- en vingerafdrukparen voor certificaatverkennen worden toegevoegd in de matrix parameters.

    Als de omgekeerde proxy van het eindpunt verbinding maakt met een certificaat met een algemene naam en vingerafdruk van de verlener die overeenkomt 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 de statuscode 502 (Bad Gateway). De HTTP-statusregel bevat ook de zin '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 geproxiede servicecertificaat op basis van de vingerafdruk. U kunt ervoor kiezen om naar deze route te gaan wanneer de services zijn geconfigureerd met zelf ondertekende certificaten: geef ApplicationCertificateValidationPolicy op met de waarde ServiceCertificateThumbprints in de sectie ApplicationGateway/Http.

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

    Geef ook de vingerafdruk op met de vermelding ServiceCertificateThumbprints in de sectie ApplicationGateway/Http. Er kunnen meerdere vingerafdrukjes worden opgegeven als een lijst met door komma's gescheiden waarden 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 configuratie-vermelding, slaagt omgekeerde proxy de TLS-verbinding. Anders wordt de verbinding beëindigd en mislukt de aanvraag van de client met een 502 (Bad Gateway). De HTTP-statusregel bevat ook de zin 'Ongeldig SSL-certificaat'.

Eindpuntselectielogica wanneer services beveiligde en onbeveiligde eindpunten blootstellen

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 ListenerName parameter niet is opgegeven, omgekeerde proxy kan elk eindpunt kiezen uit de lijst met eindpunten. Afhankelijk van de eindpunten die zijn geconfigureerd voor de service, kan het geselecteerde eindpunt een HTTP- of HTTPS-eindpunt zijn. Er kunnen scenario's of vereisten zijn waarin u wilt dat de omgekeerde proxy wordt gebruikt in een 'alleen-beveiligde modus'. Dat wil zeggen dat u niet wilt dat de beveiligde omgekeerde proxy aanvragen doorsturen naar onbeveiligde eindpunten. Als u omgekeerde proxy wilt instellen op de modus Alleen-beveiliging, 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

Als een client in SecureOnlyMode een ListenerName heeft opgegeven die overeenkomt met een HTTP(onbeveiligd) eindpunt, mislukt de omgekeerde proxy de aanvraag met een HTTP-statuscode 404 (Niet gevonden).

Verificatie van clientcertificaten instellen via de omgekeerde proxy

TLS-beëindiging vindt plaats bij de omgekeerde proxy en alle gegevens van het clientcertificaat gaan verloren. Als u wilt dat de services verificatie van clientcertificaten uitvoeren, geeft u de instelling ForwardClientCertificate op in de sectie ApplicationGateway/Http.

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

  2. Wanneer ForwardClientCertificate is ingesteld op true, vraagt omgekeerde proxy het certificaat van de client aan tijdens de TLS-handshake met de client. Vervolgens worden de gegevens van het clientcertificaat doorgestuurd in een aangepaste HTTP-header met de naam X-Client-Certificate. De headerwaarde is de met Base64 gecodeerde PEM-indelingsreeks van het certificaat van de client. De service kan de aanvraag met de juiste statuscode slagen of mislukken nadat de certificaatgegevens zijn gecontroleerd. Als de client geen certificaat presenteert, wordt via omgekeerde proxy een lege header doorgestuurd en kan de service de case afhandelen.

Notitie

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

Volgende stappen