首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从WCF服务访问客户端证书属性

从WCF服务访问客户端证书属性
EN

Stack Overflow用户
提问于 2011-02-14 19:58:40
回答 2查看 4.3K关注 0票数 4

我正在编写一个WCF服务,其中我需要访问用于连接到该服务的客户端证书的哈希码。

我正在寻找类似于ASP.NET 2.0Days中的Request.ClientCertificate的属性或方法,但找不到任何允许轻松访问客户端证书的东西。

我们的服务设置为使用basicHttpBinding和安全模式“传输”来运行SSL。

IIS已设置为需要SSL并接受证书。

需要注意的一点是,用于保护端点的服务器证书来自不同于客户端证书的CA -客户端证书仅通过自定义代码进行验证(因此需要获取连接证书的哈希码)。

我已经创建了IDispatchMessageInspector的自定义实现,以查看是否可以从那里访问客户端证书,但无济于事。

以前有没有人尝试过这样做,并取得了成功?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-02-14 20:45:49

看起来对你来说最好的选择是为你的服务实现一个自定义证书验证器。这基本上是一个从X509CertificateValidator派生的类,然后通过配置文件进行registered

this article上有更多关于如何做到这一点的完整信息。

票数 4
EN

Stack Overflow用户

发布于 2011-02-16 16:53:43

作为参考,如果其他任何人尝试应用客户端证书身份验证,则需要执行以下步骤才能使其工作(我们在此实例的WCF中使用basicHttpBinding,并在IIS的本地实例中运行):

将SSL设置为使用站点的HTTPS绑定,并在具有服务器的IIS中对其进行保护certificate

  • Within IIS将站点的设置更改为需要SSL和要求客户端证书(必须为Require Accept不起作用) WCF配置中的
  1. 修复basicHttpBinding并将安全模式设置为“传输”,将传输clientCredentialType设置为“证书”

确保根证书(用于创建任何客户端证书的根证书)位于运行IIS的本地计算机的“受信任的根证书颁发机构”内。

注如果您在开发环境中,可能需要生成自己的根证书,makecert命令行应用程序对此非常有用;只需运行以下命令: makecert -n "CN=My Test Auth“-r -cy authority -a sha1 -sv "My -cy Key.pvk”TestAuth.cer

这将创建一个名为TestAuth.cer的证书(需要将其添加到计算机的“受信任的根证书颁发机构”中)和一个名为"My private Key.pvk“的私钥文件。

现在,要生成客户端证书,可以运行以下命令: makecert -a sha1 -n "CN=myConnectionCert“-ic "TestAuth.cer”-iv "My Private Key.pvk“-ss My

这将创建一个主题为myConnectionCert的证书,并将其添加到您的个人证书存储中-当您现在访问站点(例如查看服务页面)时,IE应提示您选择证书-选择您刚刚创建的证书,您应该会正常看到服务页面。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4991882

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档