Ansluta till en säker tjänst med omvänd proxy
I den här artikeln beskrivs 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 slutpunkt till slutpunkt. 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 för att konfigurera omvänd proxy i Service Fabric.
Säker anslutningsetablering mellan omvänd proxy och tjänster
Omvänd proxyautentisering till tjänster:
Den omvända proxyn identifierar sig för tjänster med hjälp av certifikatet. För Azure-kluster anges certifikatet med egenskapen reverseProxyCertificate i resurstypen Microsoft.ServiceFabric/clusters i Resource Manager-mallen. För fristående kluster anges certifikatet med antingen egenskapen ReverseProxyCertificate eller egenskapen ReverseProxyCertificateCommonNames i avsnittet Säkerhet i ClusterConfig.json. Mer information finns i Aktivera omvänd proxy i fristående kluster.
Tjänster kan implementera logiken för att verifiera certifikatet som visas av den omvända proxyn. Tjänsterna kan ange den godkända klientcertifikatinformationen 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 verifiering av servercertifikat för de certifikat som presenteras av tjänster: None, 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.
Valideringsalternativ för tjänstcertifikat
Ingen: Omvänd proxy hoppar över verifieringen av det proxierade tjänstcertifikatet och upprättar den säkra anslutningen. Det här är standardbeteendet. Ange ApplicationCertificateValidationPolicy med värdet 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 gemensamma namn och den omedelbara utfärdarens tumavtryck: 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 vanliga tjänstnamn och utfärdarens tumavtryck lägger du till avsnittet ApplicationGateway/Http/ServiceCommonNameAndIssuer under fabricSettings, enligt nedan. Du kan lägga till flera vanliga namn på certifikat och par med tumavtryck för utfärdaren i parametermatrisen.
Om slutpunktens omvända proxy ansluter till visar ett certifikat som är gemensamt namn och utfärdarens tumavtryck matchar något av de värden som anges här, upprättas en TLS-kanal. Om det inte går att matcha certifikatinformationen misslyckas den omvända proxyn 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 proxierade tjänstcertifikatet baserat på tumavtrycket. Du kan välja att gå den här vägen när tjänsterna har konfigurerats med självsignerade 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 den omvända proxyn TLS-anslutningen. Annars avslutas anslutningen och klientens begäran misslyckas med en 502 (felaktig gateway). HTTP-statusraden innehåller också frasen "Ogiltigt SSL-certifikat".
Logik för slutpunktsval när tjänster exponerar säkra och osäkra 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änst-URI:n. Om parametern ListenerName inte har angetts kan omvänd proxy välja valfri slutpunkt från slutpunktslistan. Beroende på de slutpunkter som 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 "läget endast säker". Du vill alltså inte att den säkra omvända proxyn ska vidarebefordra begäranden till oskyddade slutpunkter. Ange konfigurationsposten SecureOnlyMode med värdet true i avsnittet ApplicationGateway/Http om du vill ställa in omvänd proxy till säkert läge.
{
"fabricSettings": [
...
{
"name": "ApplicationGateway/Http",
"parameters": [
...
{
"name": "SecureOnlyMode",
"value": true
}
]
}
],
...
}
Kommentar
Om en klient har angett ett ListenerName som motsvarar en HTTP-slutpunkt (oskyddad) i SecureOnlyMode misslyckas den omvända proxyn med http-statuskoden 404 (hittades inte).
Konfigurera klientcertifikatautentisering via omvänd proxy
TLS-avslutning sker vid den omvända proxyn och alla klientcertifikatdata går förlorade. För de tjänster som ska utföra klientcertifikatautentisering anger du inställningen ForwardClientCertificate i avsnittet ApplicationGateway/Http .
När ForwardClientCertificate är inställt på false begär inte omvänd proxy klientcertifikatet under TLS-handskakningen med klienten. Det här är standardbeteendet.
När ForwardClientCertificate är inställt på true begär omvänd proxy klientens certifikat under TLS-handskakningen med klienten. Därefter vidarebefordras klientcertifikatdata i ett anpassat HTTP-huvud med namnet X-Client-Certificate. Huvudvä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 visar ett certifikat vidarebefordrar omvänd proxy ett tomt huvud och låter tjänsten hantera ärendet.
Kommentar
Omvänd proxy fungerar endast som en vidarebefordringstjänst. Den utför ingen validering av klientens certifikat.
Nästa steg
- Konfigurera omvänd proxy i ett kluster.
- Se Konfigurera omvänd proxy för att ansluta till säkra tjänster
- Se ett exempel på HTTP-kommunikation mellan tjänster i ett exempelprojekt på GitHub.
- Fjärrproceduranrop med Reliable Services-fjärrkommunikation
- Webb-API som använder OWIN i Reliable Services
- Hantera klustercertifikat