SSL Webservice: impossible de créer le canal sécurisé SSL/TLS

Mon C# .net application à l'aide d'un HTTPS webservice. Comme le cerificate est maintenant sur le point d'expirer, je suis en train de le mettre à jour avec un nouveau que j'ai reçu (un .jks fichier que j'ai converti .p12 à l'aide de javasdks' keytool). Je pensais que ce serait facile, je sais comment le faire, mais il ne veut pas coopérer.

Ce que j'ai fait jusqu'à présent:

  • Certificat importé à CURRENT_USER\Personnels
  • Certificat importé à LOCAL_MACHINE\Personnels
  • Donné le bon utilisateur (apppoolidentity) l'accès à la clé privée du certificat par l'intermédiaire de la winhttpcertcfg outil.. ci-Dessous est une liste de droits
    pour le certificat.
  • à l'aide de findprivatekey outil, j'ai aussi trouve la réelle fichier de clé, et compte tenu de la apppoolidentity accès. (En désespoir de cause).

    C:\Program Files (x86)\Windows Resource Kits\Tools>winhttpcertcfg -l-c LOCAL_MACHINE\Mon -s "9000 - Blabla"
    Microsoft (R) WinHTTP Outil De Configuration De Certificat
    Copyright (C) Microsoft Corporation 2001.

    Certificat correspondant:
    CN=9000 - Blabla
    C=NON
    L="c/o Blabla QUE, Blablaaddress"
    OU=957839827
    OID.1.2.240.111111.1.9.8=12345678
    OID.1.2.240.111111.1.9.2=Blabla De Test
    O=BlaBla COMME
    OU=MULTI-PERMIS

    D'autres comptes et des groupes ayant accès à la clé privée comprennent:
    BUILTIN\Administrateurs
    NT AUTHORITY\SYSTEM
    IIS APPPOOL\ASP.NET v4.0
    BUILTIN\Utilisateurs
    NT AUTHORITY\NETWORK SERVICE
    DIGITROLLDMZ\IIS_WPG

L'url je suis accéder ressemble à quelque chose comme ceci:

https://test.blabla.com/blabla-5.0/services/Blabla?wsdl

... Si j'y accéder à partir de serveurs web-navigateur, j'arrive à sélectionner un certificat, je sélectionne la nouvelle, et il dit que c'est ok, le vert et le SSL dans l'ordre et tout, mais mon code d'application, qui ressemble à ceci:

public static blabla.service.NettforhandlerService getNettforhandlerService(string applicationPath) 
    {
    blabla.service.NettforhandlerService service = new blabla.service.NettforhandlerService();
    if (System.Configuration.ConfigurationManager.AppSettings["CertificateSerialNumber"] != null && System.Configuration.ConfigurationManager.AppSettings["CertificateSerialNumber"].Length > 0)
    {
        string serviceurl = service.Url;
        X509Store store = new X509Store(StoreName.Root, StoreLocation.LocalMachine);
        store.Open(OpenFlags.ReadOnly);
        X509Certificate2Collection col = store.Certificates.Find(X509FindType.FindBySerialNumber, System.Configuration.ConfigurationManager.AppSettings["CertificateSerialNumber"], true);

        ServicePointManager.Expect100Continue = true;
        ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3;
        ServicePointManager.CertificatePolicy = new TrustHBSCertificatePolicy();

        service.ClientCertificates.Add(col[0]);

    }
    return service;
    }

Ne renvoie cette erreur:

The request was aborted: Could not create SSL/TLS secure channel.

... J'ai ajouté un peu de trace/debug info sur le web.config, et que j'ai trouvé à partir de l'erreur était:

[Public Key]
  Algorithm: RSA
  Length: 2048
  Key Blob: 30 82 01 0a 02 82 01 01 00 8e a6 72 c2 e1 67 16 e2 be be c3 30 89 8d bb 57 0b 48 f8 1d 09 b1 e3 26 42 c9 45 9e 02 b2 43 49 16 81 94 1b 18 d6 6d ef ....
System.Net Information: 0 : [15624] SecureChannel#32061089 - Certificate is of type X509Certificate2 and contains the private key.
System.Net Information: 0 : [15624] AcquireCredentialsHandle(package = Microsoft Unified Security Protocol Provider, intent  = Outbound, scc     = System.Net.SecureCredential)
System.Net Error: 0 : [15624] AcquireCredentialsHandle() failed with error 0X8009030D.
System.Net Information: 0 : [15624] AcquireCredentialsHandle(package = Microsoft Unified Security Protocol Provider, intent  = Outbound, scc     = System.Net.SecureCredential)
System.Net Error: 0 : [15624] AcquireCredentialsHandle() failed with error 0X8009030D.
System.Net.Sockets Verbose: 0 : [15624] Socket#38259205::Dispose()
System.Net Error: 0 : [15624] Exception in the HttpWebRequest#54558071:: - The request was aborted: Could not create SSL/TLS secure channel.
System.Net Error: 0 : [15624] Exception in the HttpWebRequest#54558071::GetResponse - The request was aborted: Could not create SSL/TLS secure channel.
System.Net Verbose: 0 : [15624] 

Je sais que cela ressemble à l'utilisateur/l'identité n'a pas été donné l'accès au certificat (à partir de winhttpcertcfg), mais je suis très sûr qu'il a, c'est pourquoi je suis à la perte ici,

en espérant que quelqu'un avec un peu de sérieux https-certificat/web-service-des compétences pourrait m'aider ici 🙂

Grâce.

Ce qui concerne,
Jørgen E.

edit1: modification du titre pour quelque chose de plus précis.
edit2: de Nouvelles informations:

In EventViewer/Windows Logs/Security there is an event "Audit Failure" connected to this:

Cryptographic operation.

Subject:
    Security ID:        IIS APPPOOL\ASP.NET v4.0
    Account Name:       ASP.NET v4.0
    Account Domain:     IIS APPPOOL
    Logon ID:       0x32498

Cryptographic Parameters:
    Provider Name:  Microsoft Software Key Storage Provider
    Algorithm Name: Not Available.
    Key Name:   {00E1A3F5-7400-41CA-8290-02983473AEAF}
    Key Type:   Machine key.

Cryptographic Operation:
    Operation:  Open Key.
    Return Code:    0x80090010

OriginalL'auteur Jørgen Eide | 2012-11-16