2016-07-25 1 views
1

Cela a été demandé auparavant, mais je suis complètement coincé et rien pour l'instant n'a fonctionné pour moi qui a été répertorié dans d'autres questions. Bien que cela se rapporte à Identity Server, je pense que j'ai raté quelque chose dans la configuration SSL."Le certificat à distance est invalide selon la procédure de validation"

J'ai configuré comme suit (ce qui est avec IIS exprime pas complète IIS):

je reçois l'erreur dans le titre sur la ligne:

app.UseIdentityServerBearerTokenAuthentication(options); 

Ceci est ba Sally demandant certaines options de configuration ouvertes du serveur à auth.testhost.com:44373/core/.well-known/openid-configuration.

Mes options sont:

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

Dans quelques exemples que je vois un identifiant client et secret, mais ils ne sont pas disponibles dans les options pour moi: est-ce un problème?

Si vous souhaitez voir les options du serveur d'identité, dites-le et je les posterai. Je couru la commande suivante pour créer un cert:

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 

Ce certificat généré, que je puis exporté aux autorités de certification racine. D'après ce que je peux dire, les liaisons de port SSL doivent être gérées par Visual Studio lorsque j'utilise IIS Express. Voici les liaisons qu'il a:

<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> 

Ceci est mon fichier d'hôtes:

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

Quand je vais à https://auth.testhost.com:44373/ Il me reste une ligne rouge à travers mon protocole. Je suppose que cela signifie que quelque chose n'a pas encore été configuré correctement. J'utilise Chrome et en cliquant sur le certificat donne:

"Your connection to this site is not private." 

Détails:

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). 

J'ai regardé l'erreur de ERR_CERT_COMMON_NAME_INVALID et il semble que ce soit un bug de chrome. Cependant, mon erreur est lancée depuis le serveur de services Web essayant de se connecter au serveur d'authentification, donc je pense que je peux ignorer celui-ci ???

J'ai aussi couru netsh pour vérifier qu'il y avait un cert liaison mis en place:

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 

A ce point a remarqué ce hachage n'est pas le bon pour mon certificat. C'est pour l'hôte local IIS Express. J'ai trouvé ce lien: IdentityServer: The remote certificate is invalid according to the validation procedure et copié les étapes pour déplacer le certificat localhost dans les autorités de certification racine de confiance, mais malheureusement, j'ai toujours l'erreur. Je ne sais plus quoi faire d'autre.

Configuration Scope:

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

Tous mes clients ont cette portée.

Merci

+0

Le certificat est-il définitivement ajouté au magasin «Trusted Root Cert Authority» de votre «compte d'ordinateur»? Vous devez exécuter 'MMC.exe' avec des privilèges d'administrateur et sélectionnez' Computer Account' – Seany84

+0

Salut, je crois. Je suis dans la fenêtre et à la fois le certificat que j'ai fait pour auth.testhost.com et le localhost que IIS Express utilise sont là. – user2330270

+0

Pouvez-vous fermer votre fenêtre MMC actuelle et l'ouvrir à nouveau avec des privilèges d'administrateur, sélectionnez Compte d'ordinateur et vérifiez si le CERT est toujours là? – Seany84

Répondre

1

Ce problème a été résolu par la mise à niveau, mais tous IdentityModel.Jwt les dernières versions, qui ont donné les options pour définir le certificat et Nom de la société sur les options au porteur. Ces deux éléments doivent être configurés pour que l'erreur disparaisse