自承载WCF使用HTTPS方式通信

by 好大一小白 2017.7.14 13:10

使用基于IIS的WCF,想使用HTTPS只需要在IIS中配置即可,但是如果是自承载方式的WCF,该怎么配置呢?

1、申请证书

一般如果使用CA认证的证书即可,目前阿里云,腾讯云都支持申请免费的CA证书。

如果是开发阶段,或不想申请,可以使用makecert生成自签名证书。

makecert在VS的本机工具命令提示中可以只用,或直接全盘搜索makecert.exe,可以绿色拷贝出来。

生成证书命令:makecert -sr localmachine -ss My -n "CN=TestCert" -sky exchange -pe -r

注意红色加粗部分,需要是Localmachine,如果是currentuser,在后面的命令会提示错误信息。(以上命令管理员权限操作)。

命令成功后即可在证书查看中找到相关证书了。

在 MMC 管理单元中查看证书

  1. 打开一个命令提示符窗口。

  2. 键入 mmc 然后按 Enter 键。请注意,若要查看本地计算机存储中的证书,您必须具有管理员角色。

  3. “文件”菜单上,单击“添加/删除管理单元”

  4. 单击“添加”

  5. “添加独立管理单元”对话框中,选择“证书”

  6. 单击“添加”

  7. “证书”管理单元对话框中,选择“计算机帐户”,然后单击 “下一步”也可以选择“我的用户帐户”“服务帐户”如果您不是计算机的管理员,则您只能管理您的用户帐户的证书。

  8. “选择计算机”对话框中,单击“完成”

  9. “添加独立管理单元”对话框中,单击“关闭”

  10. “添加/删除管理单元”对话框中,单击“确定”

  11. “控制台根节点”窗口中,单击“证书(本地计算机)”查看计算机的证书存储。

  12. 可选。若要查看您的帐户证书,请重复步骤 3 到步骤 6。在步骤 7 中,单击“我的用户帐户”而不选择“计算机帐户”,然后重复步骤 8 到步骤 10。

  13. 可选。“文件”菜单上单击“保存”“另存为”保存控制台文件供以后重复使用。

使用 Internet Explorer 查看证书

 

您也可以通过使用 Internet Explorer 来查看、导出、导入和删除证书。

使用 Internet Explorer 查看证书

  1. 在 Internet Explorer 中,单击“工具”,然后单击“Internet 选项”以显示“Internet 选项”对话框。

  2. 单击“内容”选项卡。

  3. “证书”下,单击“证书”

  4. 若要查看任何证书的详细信息,请选择该证书,然后单击“查看”

2、启动自承载WCF服务
 
修改WCF服务部分代码,使其支持HTTPS
WSHttpBinding b = new WSHttpBinding();
b.Security.Mode = SecurityMode.Transport;
b.Security.Transport.ClientCredentialType = HttpClientCredentialType.Certificate;
 ServiceEndpoint svEndpiont = host.AddServiceEndpoint(typeof(WcfService.IService1), b, "Service");
   ServiceMetadataBehavior behavior = new ServiceMetadataBehavior();
     behavior.HttpsGetEnabled = true;
    behavior.HttpsGetUrl = new Uri(https://IP:端口/Service.svc/metadata 
   host.Description.Behaviors.Add(behavior);
然后启动ServiceHost host实例,
注意,host要全局,否则局部变量会被关闭的

3、使用netsh命令,绑定端口和证书

http add sslcert ipport=0.0.0.0:端口 certhash=证书Hash值去掉空格 appid={应用的GUID}

证书Hash值去掉空格可以在证书详情中查看,此处端口与代码中端口一致

或使用如下代码获取:

 using (SHA1CryptoServiceProvider sha1 = new SHA1CryptoServiceProvider())
 {
     byte[] thumbprint = sha1.ComputeHash(File.ReadAllBytes("证书文件路径"));
 } 
转成字符串小写即可。
命令执行成功后,即可使用浏览器HTTPS访问服务地址查看了,
由于是自签名证书,所以会提示不安全链接。
 
 
 
 

Tags: , , , , , , , , ,

WCF | 服务器 | IIS

不允许评论

微信赞

本站统计

36 篇文章
5 个单页
12 条评论
12 次评分
1292127 次访问
访问统计开始于 2010年4月24日
平均日访问 222 次
当前 5 人在线

声明

本博所有网友评论不代表本博立场,版权归其作者所有。 
苏ICP备09004001号
Powered by BlogYi.net  edit by 1wanweb.com
© Copyright 2008-2017