
Wir haben veraltete SOAP-Webdienste ( https://dev-ms01/Services/default.asmx
), die in asp.net 1.1 geschrieben sind und auf IIS7 (Win Server 2008 Standard) gehostet werden. Diese Webdienste werden von Clients genutzt, indem Client-Zertifikate bereitgestellt werden. Für die Einstellungen, die wir auf diesem IIS SSL Certificates
haben ,Accept
`Client(Request with SSL Client Certificate)--> IIS7 (on host dev-ms01)--> Asp.Net SOAP WebServices`
secure-dev-ms01
Jetzt versuche ich, Proxy-IIS (IIS10 auf Win Server 2016 64-Bit-Host ) mit Revere-Proxy für IIS7 einzurichten . Ich bin dem MSDN-Artikel gefolgthttps://blogs.msdn.microsoft.com/friis/2016/08/25/setup-iis-with-url-rewrite-as-a-reverse-proxy-for-real-world-apps/um das URL-Rewrite mit ReverseProxy wie unten beschrieben zu konfigurieren
`Client(Request with SSL Client Certificate)--> Proxy IIS10 Server with ReverseProxy (on host secure-dev-ms01)--> IIS7 (on host dev-ms01) --> Asp.Net SOAP WebServices`
Auf dem IIS10
(Host secure-dev-ms01
) für die SSL Certificates
Einstellungen, die ich gewählt habe Accept
, und ich habe die folgende ReverseProxy-Konfiguration ausprobiert. Wenn ich versuche, die URL der Proxy-Webdienste zu durchsuchen, wird nach
https://secure-dev-ms01/Services/default.asmx
dem Client-Zertifikat gefragt, aber nachdem ich das Client-Zertifikat bereitgestellt habe, wird der folgende Fehler angezeigt
403 - Forbidden: Access is denied.
You do not have permission to view this directory or page using the credentials that you supplied.
Ich habe RevereProxy
auch versucht, unten zu verwendenund habe versucht, die URL des Proxy-Webdienstes zu durchsuchen
https://secure-dev-ms01/Services/default.asmx
und das Client-Zertifikat bereitzustellen, aber ich sehe immer noch den folgenden Fehler. Ich habe auch versucht, die Option Enable SSL Offloading
für beide der oben genannten RevereseProxy-Konfigurationen zu deaktivieren, aber das hat auch nicht funktioniert
403 - Forbidden: Access is denied.
You do not have permission to view this directory or page using the credentials that you supplied.
Ich habe diesen MSDN-Artikel gefundenhttps://blogs.msdn.microsoft.com/asiatech/2014/01/27/configuring-arr-with-client-certificate/Dies schlägt vor, SSL Certificates
die Einstellungen Ignore
auf dem Backend-Server zu ändern (was wir jedoch nicht für unsere Organisation übernehmen können) und zu versuchen, das Zertifikat aus den Headern zu verwenden. X-ARR-ClientCert
Wir versuchen jedoch, Codeänderungen an den älteren asp.net 1.1-Diensten zu vermeiden.
Ich konnte keine relevanten Artikel finden, die dazu führen könnten, dass IIS ARR ReverseProxy mit Client-Zertifikatauthentifizierung für das IIS-Backend funktioniert, und zwar nur durch Konfigurationsoptimierungen am IIS10 mit ReverseProxy statt durch Code-/Konfigurationsänderungen am IIS7-Backend. Kann mir bitte jemand dabei helfen, dass das funktioniert?
Antwort1
Ich gehe davon aus, dass Ihr IIS7 (on host dev-ms01)
Computer sich in einem sicheren Netzwerk befindet und keinen direkten Zugriff vom Internet hat.
In diesem Fall müssen Sie SSL-Offloading und Client-Zertifikatauthentifizierung aktivieren aufProxy IIS10 Server with ReverseProxy (on host secure-dev-ms01)
nurund deaktivieren Sie SSL-Offloading und Zertifikatauthentifizierung in IIS7.
In diesem Schema ist IIS10 für den SSL-Handshake und die Zertifikatsüberprüfung verantwortlich. Es platziert das Zertifikat (POM) im X-ARR-ClientCert
Header und leitet Anfragen mit diesem Header über einfaches HTTP an IIS7 weiter. Wahrscheinlich müssen Sie in der URL-Umschreibregel das Umgehen der Header X-Forwarded-For
, X-Forwarded-Proto
, X-Forwarded-Schema
und X-Forwarded-Host
auf IIS10 einrichten, wenn Ihre ASP-Dienste sie verwenden.
Also für Ihren IIS10-Server:
- ARR aktivieren
- Fügen Sie eine Regel zum Umschreiben der URL zur Proxy-Weiterleitung an IIS7 hinzu
- Einrichten einer Umgehung der obigen Header in der Umschreibregel
- Fügen Sie ein Serverzertifikat hinzu
- SSL in den SSL-Einstellungen der Standard-Website erforderlich machen
- Setzen Sie die Einstellung für Client-Zertifikate auf Akzeptieren
- Aktivieren Sie die anonyme Authentifizierung für Ihre Site
- Einrichten von https-Bindungen mit dem Serverzertifikat
Für den IIS7-Server:
- HTTPS-Bindungen deaktivieren
- erfordern kein SSL
- erfordern keine Client-Zertifikate
Hoffentlich funktioniert das nächste Schema
Browser ---[HTTPS]---> IIS10 --[HTTP + headers]--> IIS7
wo headers
sind X-ARR-ClientCert, X-Forwarded-For, X-Forwarded-Proto, X-Forwarded-Schema und X-Forwarded-Host.