2009-03-05 9 views
2

Cette question consiste à résoudre une erreur SslPolicyError.RemoteCertificateNotAvailable.SslStream sur TCP Server ne parvient pas à valider le certificat client avec RemoteCertificateNotAvailable

J'ai développé un serveur TCP avec SSLStream et un client TCP pour l'autre extrémité.

j'authentifie le serveur avec:

sslStream.BeginAuthenticateAsServer 

J'authentifiez le client avec:

sslStream.BeginAuthenticateAsClient 

Je chargeais mon certificat client à partir Trusted Publishers - Local Machine.

Les deux fonctionnent sur la même machine.

J'ai essayé de charger le certificat client à partir des fichiers .cer et .pfx plutôt que du magasin des éditeurs approuvés. Mais le rappel du validateur du certificat client (distant) du serveur échoue en constatant que SslPolicyErrors a une erreur RemoteCertificateNotAvailable.

Répondre

4

Le lien ne est pas venu à travers, mais il y a un problème, je peux repérer avec le statment:

« Je chargé mon certificat client auprès d'éditeurs de confiance »

certificats clients vivent généralement dans un magasin personnel pour un compte d'utilisateur. Même chose avec les certificats de serveur (ils auront probablement un autre OID intentionnel différent qui leur est associé, bien que - "Authentification du client" vs "Authentification du serveur"). Il serait étrange que vous ayez un cert avec une clé privée disponible dans le magasin Trusted Publishers, je pense.

Si vous double-cliquez sur un certificat client ou serveur dans CertMgr.msc, vous devriez voir un message «Ce certificat a une clé privée» vers le bas. Si ce n'est pas le cas, vous n'avez qu'une demi-paire de clés - le cryptage et l'authentification nécessitent la clé privée. Le certificat du serveur a besoin d'une clé privée à la fin du serveur et le certificat client a besoin d'une clé privée au niveau du client.

+0

J'ai également essayé de charger le certificat du magasin "personnel". Mon certificat possède une clé privée. – cdpnet

+1

Certutil -verify -urlfetch doit valider si le certificat peut être validé correctement. Si non, pas de dés. Le certificat du serveur a besoin de "l'intention prévue: l'authentification du serveur" et le certificat client aura probablement besoin de "l'authentification du client" s'il est destiné à identifier de manière unique un client. – TristanK

+0

Tristank. Vous avez repéré le problème en réalité. J'avais un certificat avec pour seul but d'authentifier le serveur. J'avais besoin du certificat qui supporte l'authentification client. Donc, une fois que j'ai eu ça, ça a marché. – cdpnet

Questions connexes