2016-07-25 35 views
1

Dies wurde zuvor gefragt, aber ich bin völlig stecken geblieben und nichts hat bisher für mich gearbeitet, die in anderen Fragen aufgeführt wurde. Obwohl sich dies auf Identity Server bezieht, habe ich bei der Einstellung von SSL etwas verpasst."Das Remote-Zertifikat ist ungültig nach dem Validierungsverfahren"

I Setup wie folgt (dies ist mit IIS Express nicht vollständig IIS):

bekomme ich den Fehler im Titel auf der Linie:

app.UseIdentityServerBearerTokenAuthentication(options); 

Dies ist ba sically fordert einige offene Konfigurationsoptionen vom Server unter auth.testhost.com:44373/core/.well-known/openid-configuration an.

Meine Optionen sind:

Authority = "https://auth.testhost.com:44373/core", 
RequiredScopes = new List<string>() { "api" } 

In einigen Beispielen mir eine Client-ID und geheim zu sehen, aber sie sind in den Optionen für mich nicht zur Verfügung: ist das ein Problem?

Wenn Sie irgendwelche Identitätsserveroptionen sehen möchten, sagen Sie bitte, und ich werde posten. lief ich den folgenden Befehl ein CERT zu erstellen:

makecert.exe -r -pe -n "CN=auth.testhost.com" -b 01/01/2000 -e 01/01/2036 -eku 1.3.6.1.5.5.7.3.1 -ss my -sr localMachine -sky exchange -sp "Microsoft RSA SChannel Cryptographic Provider" -sy 12 -len 2048 

Dies erzeugt das Zertifikat, das ich dann auf Vertrauenswürdige Stammzertifizierungsstellen exportiert.

Soweit ich das beurteilen kann, sollten die SSL-Port-Bindungen von Visual Studio gehandhabt werden, da ich IIS Express verwende. Im Folgenden sind die Bindungen hat:

<site name="Authenticator_V2" id="2"> 
       <application path="/" applicationPool="Clr4IntegratedAppPool"> 
        <virtualDirectory path="/" physicalPath="c:\users\user\documents\visual studio 2015\Projects\Authenticator_V2\Authenticator_V2" /> 
       </application> 
       <bindings> 
        <binding protocol="http" bindingInformation="*:49755:localhost" /> 
        <binding protocol="https" bindingInformation="*:44373:localhost" /> 
        <binding protocol="https" bindingInformation="*:44373:auth.testhost.com" /> 
       </bindings> 
      </site> 
<site name="APIClient2" id="7"> 
       <application path="/" applicationPool="Clr4IntegratedAppPool"> 
        <virtualDirectory path="/" physicalPath="C:\Users\user\documents\visual studio 2015\Projects\Authenticator_V2\APIClient2" /> 
       </application> 
       <bindings> 
        <binding protocol="http" bindingInformation="*:53812:localhost" /> 
        <binding protocol="https" bindingInformation="*:44356:localhost" /> 
       </bindings> 
      </site> 

Dies ist meine hosts-Datei:

127.0.0.1    localhost 
127.0.0.1    hybrid.testhost.com 
127.0.0.1    auth.testhost.com 

Als ich nach https://auth.testhost.com:44373/ gehe ich immer noch eine rote Linie durch mein Protokoll haben. Ich nehme an, das bedeutet, dass etwas noch nicht richtig konfiguriert wurde. Ich bin mit Chrome und auf das Zertifikat, klicken gibt:

"Your connection to this site is not private." 

Details:

SHA-1 Certificate 
The certificate for this site expires in 2017 or later, and the certificate chain contains a certificate signed using SHA-1. 

View certificate 

Certificate Error 
There are issues with the site's certificate chain (net::ERR_CERT_COMMON_NAME_INVALID). 

ich am ERR_CERT_COMMON_NAME_INVALID Fehler angesehen und es scheint, dass ein Chrom-Fehler. Wie auch immer, mein Fehler wird vom Web-Service-Server ausgelöst, der versucht, sich mit dem Authentifizierungs-Server zu verbinden, also glaube ich, dass ich diesen ignorieren kann ???

Ich lief netsh auch zu überprüfen, ein cert Bindung aufgebaut war:

netsh http show sslcert ipport=0.0.0.0:44373 

SSL Certificate bindings: 
------------------------- 

    IP:port      : 0.0.0.0:44373 
    Certificate Hash    : HAS ODD HASH - REMOVED 
    Application ID    : {HAS GUID - REMOVED} 
    Certificate Store Name  : MY 
    Verify Client Certificate Revocation : Enabled 
    Verify Revocation Using Cached Client Certificate Only : Disabled 
    Usage Check     : Enabled 
    Revocation Freshness Time : 0 
    URL Retrieval Timeout  : 0 
    Ctl Identifier    : (null) 
    Ctl Store Name    : (null) 
    DS Mapper Usage    : Disabled 
    Negotiate Client Certificate : Disabled 
    Reject Connections   : Disabled 

An dieser Stelle ein bemerkt, daß dieser Hash ist nicht die richtige für mein Zertifikat. Es ist für den IIS Express-localhost. Ich fand diesen Link: IdentityServer: The remote certificate is invalid according to the validation procedure und kopiert die Schritte, um das Localhost-Zertifikat in die vertrauenswürdigen Stammzertifizierungsstellen zu verschieben, aber leider habe ich immer noch den Fehler. Ich bin mir jetzt nicht sicher, was ich sonst tun soll.

Scope-Konfiguration:

new Scope 
{ 
    Name = "api", 
    DisplayName = "Can call API", 
    Enabled = true, 
    Type = ScopeType.Resource 
    //ScopeSecrets = new List<Secret> { } 
} 

Alle meine Kunden haben diesen Bereich.

Dank

+0

Ist das Zertifikat definitiv dem 'Vertrauenswürdigen Stamm-Zert-Berechtigung'-Speicher Ihres' Computer-Kontos' hinzugefügt? Sie müssen "MMC.exe" mit Administratorrechten ausführen und wählen Sie "Computer Account" – Seany84

+0

Hallo, ich glaube schon. Ich bin im Fenster und sowohl das Zertifikat, das ich für auth.testhost.com erstellt habe, als auch das von IIS Express verwendete localhost. – user2330270

+0

Können Sie Ihr aktuelles MMC-Fenster schließen und es wieder mit Administratorrechten öffnen, Computerkonto auswählen und prüfen, ob das Zertifikat noch vorhanden ist? – Seany84

Antwort

1

Dieses Problem wurde von allen aber IdentityModel.Jwt neuesten Versionen aktualisieren, festgelegt, die die Optionen gab das Zertifikat und Name des Emittenten auf den Inhaber lautende Optionen zu setzen. Beide mussten für den Fehler gesetzt werden, um wegzugehen