3 .net security wcf certificate
希望有人可以帮我解决这个问题.我正在寻找一种在我的WCF服务上启用消息级安全性的方法,而不是使用证书.问题是该应用程序用于通过VPN与多个站点连接的客户端,每个站点都有自己的域控制器,并且域不相互信任.我对证书完全不熟悉,虽然很多人说这是要走的路,但我不知道它是否可以在这种环境下工作?
乞求帮助:)亲切的问候安德里斯
Pav*_*lov 11
实际上证书真的是要走的路!我强烈建议你使用证书!这并不困难.实际上这是你的问题:"域名不相互信任".使用证书,您将获得相互信任的域.以下是逐步说明如何执行此操作:
1)您必须在客户端上创建证书.要执行此操作,请转到"开始"菜单 - >"运行" - >键入"cmd"并按Enter键在控制台窗口中键入:
makecert.exe MakeCert -pe -ss My -sr LocalMachine -a sha1 -sky exchange -n CN = ClientCertificateName(change具有您选择名称的"ClientCertificateName")
2)在更改证书名称的服务器上执行相同操作!
3)完成步骤1)和2)后,您的客户端和服务器都安装了自签名证书.现在,您需要导出这些证书并在服务器的TrustedPeople文件夹中导入客户端的证书,并在客户端的TrustedPeople文件夹中导入服务器的证书.为此 - >开始菜单 - >运行 - >键入"mmc"并按Enter键
4)要打开证书存储位置,请转到文件 - >添加/删除管理单元 - >在新窗口中选择证书(在左侧)然后单击添加 - >单击确定 - >选择"计算机帐户" - >下一步 - >完成 - >确定
之后,证书控制台将打开.展开证书节点(在左侧)并导航到"个人/证书"节点.在那里,您将找到刚刚在前面的步骤中创建的证书.右键单击证书并将其导出,包括私钥.将导出的证书保存到文件中.然后将此文件复制到另一台计算机并将其导入"受信任的人员/证书"节点下.
5)对另一台机器重复步骤4) - 最终目标是在主机的机器上导入客户端证书,反之亦然
现在您已经(希望)设置了证书,您必须告诉您的服务使用它们.为此,您可以使用应用程序的web.config(app.config)文件或写入代码.
<security mode="Message">
<message clientCredentialType="Certificate" />
</security>
Run Code Online (Sandbox Code Playgroud)
在客户端和服务器的配置文件中添加安全节点后,您必须向绑定添加以下行为:
<behaviors >
<endpointBehaviors>
<behavior name="your_binding_behavior">
<clientCredentials>
<clientCertificate findValue="[The name of the client certificate here]"
storeLocation="LocalMachine"
storeName="My"
x509FindType="FindBySubjectName"/>
<serviceCertificate>
<defaultCertificate findValue="[The name of the server certificate here]"
storeLocation="LocalMachine"
storeName="TrustedPeople"
x509FindType="FindBySubjectName"/>
<authentication certificateValidationMode="PeerOrChainTrust"/>
</serviceCertificate>
</clientCredentials>
</behavior>
</endpointBehaviors>
</behaviors>
Run Code Online (Sandbox Code Playgroud)
就是这样!你很高兴!有关此内容的更多信息,请阅读本文.这里更详细一点.
HTH
| 归档时间: |
|
| 查看次数: |
5572 次 |
| 最近记录: |