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 is. 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 Reverse Proxy instellen in Azure Service Fabric om de omgekeerde proxy in Service Fabric te configureren.
Beveiligde verbindingsinstelling tussen de omgekeerde proxy en services
Proxy verifiëren omkeren naar services:
De omgekeerde proxy identificeert zichzelf aan services met behulp van het bijbehorende certificaat. Voor Azure-clusters wordt het certificaat opgegeven met de eigenschap reverseProxyCertificate in de sectie Resourcetype Microsoft.ServiceFabric/clusters van de Resource Manager-sjabloon. Voor zelfstandige clusters wordt het certificaat opgegeven met de eigenschap ReverseProxyCertificate of reverseProxyCertificateCommonNames in de sectie Beveiliging van ClusterConfig.json. Zie Reverse Proxy inschakelen voor zelfstandige clusters voor meer informatie.
Services kunnen de logica implementeren om het certificaat te controleren 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 die de identiteit van de service verifieert via het certificaat dat door de service wordt gepresenteerd:
Reverse 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 reverse 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 validatie van servicecertificaten
Geen: met omgekeerde proxy wordt de verificatie van het geproxied servicecertificaat overgeslagen en wordt de beveiligde verbinding tot stand gebracht. Dit is het standaardgedrag. Geef applicationCertificateValidationPolicy op met de waarde None in de sectie ApplicationGateway/Http.
{ "fabricSettings": [ ... { "name": "ApplicationGateway/Http", "parameters": [ { "name": "ApplicationCertificateValidationPolicy", "value": "None" } ] } ], ... }
ServiceCommonNameAndIssuer: Reverse proxy controleert 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 de ApplicationCertificateValidationPolicy op met de waarde ServiceCommonNameAndIssuer in de sectie ApplicationGateway/Http .
{ "fabricSettings": [ ... { "name": "ApplicationGateway/Http", "parameters": [ { "name": "ApplicationCertificateValidationPolicy", "value": "ServiceCommonNameAndIssuer" } ] } ], ... }
Voeg een sectie ApplicationGateway/Http/ServiceCommonNameAndIssuer toe onder fabricSettings om de lijst met algemene naam- en verlenervingerafdrukken van de service op te geven. Er kunnen meerdere algemene naam- en verlenervingerafdrukparen worden toegevoegd in de parametersmatrix .
Als de omgekeerde proxy van het eindpunt verbinding maakt met een certificaat dat de algemene naam en de vingerafdruk van de uitgever overeenkomt met een van de hier opgegeven waarden, wordt een TLS-kanaal tot stand gebracht. Als de certificaatgegevens niet overeenkomen, mislukt de aanvraag van de client met de statuscode 502 (Ongeldige gateway). De HTTP-statusregel bevat ook de woordgroep '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 proxied servicecertificaat op basis van de vingerafdruk. U kunt deze route gebruiken wanneer de services zijn geconfigureerd met zelfondertekende 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 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 omgekeerde proxy met 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 woordgroep 'Ongeldig SSL-certificaat'.
Eindpuntselectielogica wanneer services beveiligde en onbeveiligde eindpunten beschikbaar maken
Service Fabric biedt ondersteuning voor 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 omgekeerde proxy elk eindpunt kiezen in 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 werkt in een 'modus alleen-veilig'; Dat wil gezegd 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 secureOnlyMode-configuratievermelding 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 van 404 (Niet gevonden).
Verificatie van clientcertificaten instellen via de omgekeerde proxy
TLS-beëindiging vindt plaats bij de omgekeerde proxy en alle clientcertificaatgegevens gaan verloren. Geef de instelling ForwardClientCertificate op in de sectie ApplicationGateway/Http om clientcertificaatverificatie uit te voeren.
Wanneer ForwardClientCertificate is ingesteld op false, vraagt reverse proxy het clientcertificaat niet aan tijdens de TLS-handshake met de client. Dit is het standaardgedrag.
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 met 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 gecontroleerd. Als de client geen certificaat presenteert, stuurt reverse proxy een lege header door en kan de service het geval verwerken.
Notitie
Omgekeerde proxy fungeert alleen als een doorstuurservice. Er wordt geen validatie van het certificaat van de client uitgevoerd.
Volgende stappen
- Omgekeerde proxy instellen en configureren op een cluster.
- Raadpleeg Reverse Proxy configureren om verbinding te maken met beveiligde services
- Bekijk een voorbeeld van HTTP-communicatie tussen services in een voorbeeldproject op GitHub.
- Externe procedure-aanroepen met externe communicatie van Reliable Services
- Web-API die gebruikmaakt van OWIN in Reliable Services
- Clustercertificaten beheren