none
ISignerCertificate dans un service web RRS feed

  • Question

  • Bonjour,

    Je développe un service web qui doit interroger la pki microsoft 2008.

    Lorsque je crée une classe de type CSignerCertitificate, elle échoue à l'initialize. Elle ne trouve pas dans le magasin de certificat de l'ordinateur local le certificat que je veux utiliser. J'ai pourtant bien mis le boolean à true comme indiqué dans la doc, j'ai essayé le verifytype à none et silent. Bizarrement, cela fonctionne quand je passe le boolean à false et que j'ai ouvert une connexion sur mon serveur.

    d'autre part, je trouve sans problème mon certificat avec des méthodes .net classique et il a bien une clé privée associée.

    Quelqu'un aurait une piste, je nage complètement.

    Merci

     

    samedi 16 octobre 2010 20:12

Toutes les réponses

  • Bonjour,

    Peut-on voir le code de votre classe ? Le compte sous lequel tourne votre WebService dispose-t-il des droits pour accéder au magasin de certificats de la machine ?

    Cordialement


    Gilles TOURREAU - MVP C# - MCTS ADO .NET 3.5 - MCPD Windows Developper 3.5 - Architecte .NET/Consultant/Formateur - http://gilles.tourreau.fr
    dimanche 17 octobre 2010 11:26
    Modérateur
  • Le code en question:

     CSignerCertificate signer = new CSignerCertificateClass(); // il passe bien

    signer.Initialize(true, X509PrivateKeyVerify.VerifyNone, EncodingType.XCN_CRYPT_STRING_HEX, enrollCert.GetRawCertDataString()); // il me renvoie l'exception suivante

    exceptionCertEnroll::CSignerCertificate::Initialize: La clé n'existe pas. 0x8009000d (-2146893811)

    enrollCert est un objet de type X509Certificate.

    La clé privée existe bien, si je passe le boolean à false et que j'ouvre ma session, cela fonctionne. :-(

    Quand je contrôle l'utilisateur utilisé avec  Environment.UserDomainName et Environment.UserName, il me renvoie bien mon administrateur de domaine, comme je le voulais pour les tests.

     

    lundi 18 octobre 2010 07:52
  • Bon, après pas de recherche, je pense avoir identifier le problème.

    La méthode initialize ne fonctionne qu'avec certains types de certificat.La question étant quel type de certificat faut il utiliser??????

     

    je craque!!!!

    mardi 19 octobre 2010 08:44
  • Bonjour,

     

    Pour pouvoir vous aider, nous devons voir le code de votre classe CSignerCertificate. D'où vient cette classe et quel est son code ?

     

    Cordialement,

    Alex

    ________________

    Publiez un article sur une de ces technologies : Visual Basic, C#, C++, .NET, ASP.NET, SQL Server, Silverlight, SharePoint 2010, SharePoint 2007

    Windows Phone 7

    Astuces pour Visual Studio 2010

    XNA – Développement jeux vidéo

    Didacticiels et astuces : VB.NET, C#, ASP.NET, .NET Framework, Silverlight, Workflow Foundation, WPF

    Café des usages

    Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.

     

     

    mercredi 20 octobre 2010 08:49
  • Cette classe fait partie de l'api certenroll de microsoft, donc je vais avoir quelques difficultés à fournir un code source :-)

    Sinon, j'ai continué mes tests. Le modèle de certificat n'est pas en cause, j'ai plusieurs certificats dans mon magasin localmachine\my qui ont une clé privée et qui sont du même modèle user. Pour certain, initialize fonctionne, pour d'autre non. Y aurait il des droits ou quelquechose comme ça que l'on peut configurer sur server 2008?

    J'ai récupéré quelque de powershell qui permettent d'avoir la même erreur

    $cert = (dir cert:localmachine\my)[$args[0]]
    $s = new-object -com "X509Enrollment.CSignerCertificate.1"
    $s.initialize(1,0,4,$cert.getrawcertdatastring())
    
    

    NB : Cette discussion n'est à priori plus à sa place dans asp.net.

     

    mercredi 20 octobre 2010 10:29
  • Bonjour Seb_de_Lille,

    Est-ce que vous avez résolu votre problème ?

    Merci d’avance de tenir la communauté informée sur la suite de vos démarches.

    Cordialement,
    aelassas.free.fr
    vendredi 28 octobre 2011 22:43
    Auteur de réponse