创建使用自承载的 Windows Communication Foundation (WCF) 服务时WSHttpBinding类,使用传输安全,还必须使用 X.509 证书配置端口。 如果不是在创建自承载服务,可以在 Internet 信息服务 (IIS) 上承载服务。 有关详细信息,请参阅HTTP 传输安全性

若要配置端口,使用的工具取决于计算机运行的操作系统。

如果运行的是 Windows Server 2003 或 Windows XP,则使用 HttpCfg.exe 工具。 Windows Server 2003 中已安装该工具。 与Windows XP,可以下载该工具在Windows XP Service Pack 2 支持工具。 有关详细信息,请参阅Httpcfg 概述。 Windows 支持工具文档说明了 Httpcfg.exe 工具的语法。

如果运行的是 Windows Vista,则使用已安装的 Netsh.exe 工具。

本主题介绍如何完成以下一些过程:

  • 确定计算机当前的端口配置。

  • 获取证书的指纹(以下两个过程需要证书指纹)。

  • 将 SSL 证书绑定到端口配置。

  • 将 SSL 证书绑定到端口配置并支持客户端证书。

  • 从某个端口号删除 SSL 证书。

请注意,修改存储于计算机上的证书需要管理特权。

确定如何配置端口

  1. 在中Windows Server 2003或Windows XP,使用 HttpCfg.exe 工具查看当前端口配置中,使用查询并ssl切换时,如下面的示例中所示。

    复制
    1. httpcfg query ssl
  2. 在 Windows Vista 中,使用 Netsh.exe 工具查看当前端口配置,如下面的示例所示。

    复制
    1. netsh http show sslcert

获取证书的指纹

  1. 使用证书 MMC 管理单元查找用于客户端身份验证的 X.509 证书。 有关详细信息,请参阅如何:使用 MMC 管理单元查看证书

  2. 访问证书的指纹。 有关详细信息,请参阅如何: 检索证书的指纹

  3. 将证书指纹复制到文本编辑器,如 Notepad。

  4. 移除十六进制字符之间的所有空格。 完成此操作的一种方法是使用文本编辑器的“查找和替换”功能,将每个空格替换为空字符。

将 SSL 证书绑定至端口号

  1. 在 Windows Server 2003 或 Windows XP 中,对安全套接字层 (SSL) 存储区使用 HttpCfg.exe 工具的“set”命令将证书绑定至端口号。 该工具使用指纹识别证书,如下面的示例所示。

    复制
    1. httpcfg set ssl -i 0.0.0.0:8012 -h 0000000000003ed9cd0c315bbb6dc1c08da5e6
    • -I交换机具有的语法IP:port ,指示该工具将证书设置为计算机的端口 8012。 另外,也可将端口号前面的四个零替换为计算机的实际 IP 地址。

    • -H开关指定证书的指纹。

  2. 在 Windows Vista 中使用 Netsh.exe 工具,如下面的示例所示。

    复制
    1. netsh http add sslcert ipport=0.0.0.0:8000 certhash=0000000000003ed9cd0c315bbb6dc1c08da5e6 appid={00112233-4455-6677-8899-AABBCCDDEEFF}
    • Certhash参数指定的证书的指纹。

    • Ipport参数指定的 IP 地址和端口,以及功能类似 -i前述 Httpcfg.exe 工具的开关。

    • Appid参数是一个 GUID,用于标识所属应用程序。

将 SSL 证书绑定至端口号并支持客户端证书

  1. 在 Windows Server 2003 或 Windows XP 中,若要支持在传输层使用 X.509 证书进行身份验证的客户端,请按照前面的步骤进行操作,但要向 HttpCfg.exe 另外传递一个命令行参数,如下面的示例所示。

    复制
    1. httpcfg set ssl -i 0.0.0.0:8012 -h 0000000000003ed9cd0c315bbb6dc1c08da5e6 -f 2

    -F开关的语法的n其中 n 是介于 1 和 7 之间的数字。 值为 2 可在传输层启用客户端证书,如上面的示例所示。 值为 3 可启用客户端证书并将这些证书映射至 Windows 帐户。请参见“HttpCfg.exe 帮助”以获取其他值的行为。

  2. 在 Windows Vista 中,若要支持在传输层使用 X.509 证书进行身份验证的客户端,请按照前面的步骤进行操作,但要另外提供一个参数,如下面的示例所示。

    复制
    1. netsh http add sslcert ipport=0.0.0.0:8000 certhash=0000000000003ed9cd0c315bbb6dc1c08da5e6 appid={00112233-4455-6677-8899-AABBCCDDEEFF} clientcertnegotiation=enable

删除端口号的 SSL 证书

  1. 使用 HttpCfg.exe 或 Netsh.exe 工具查看计算机上的端口和所有绑定的指纹。 若要将信息输出到磁盘,请使用重定向字符“>”,如下面的示例所示。

    复制
    1. httpcfg query ssl>myMachinePorts.txt
  2. 在中Windows Server 2003或Windows XP,使用 HttpCfg.exe 工具以及删除并ssl关键字。使用 -i开关指定IP:port数,并且 -h开关指定指纹。

    复制
    1. httpcfg delete ssl -i 0.0.0.0:8005 -h 0000000000003ed9cd0c315bbb6dc1c08da5e6
  3. 在 Windows Vista 中使用 Netsh.exe 工具,如下面的示例所示。

    复制
    1. Netsh http delete sslcert ipport=0.0.0.0:8005

示例

下面的代码演示如何使用 WSHttpBinding 类(设置为传输安全)创建自承载服务。 创建应用程序时,请指定地址中的端口号。

C#复制
  1. // This string uses a function to prepend the computer name at run time.
  2. string addressHttp = String.Format(
  3. "http://{0}:8080/Calculator",
  4. System.Net.Dns.GetHostEntry("").HostName);
  5. WSHttpBinding b = new WSHttpBinding();
  6. b.Security.Mode = SecurityMode.Transport;
  7. b.Security.Transport.ClientCredentialType = HttpClientCredentialType.Certificate;
  8. // You must create an array of URI objects to have a base address.
  9. Uri a = new Uri(addressHttp);
  10. Uri[] baseAddresses = new Uri[] { a };
  11. // Create the ServiceHost. The service type (Calculator) is not
  12. // shown here.
  13. ServiceHost sh = new ServiceHost(typeof(Calculator), baseAddresses);
  14. // Add an endpoint to the service. Insert the thumbprint of an X.509
  15. // certificate found on your computer.
  16. Type c = typeof(ICalculator);
  17. sh.AddServiceEndpoint(c, b, "MyCalculator");
  18. sh.Credentials.ServiceCertificate.SetCertificate(
  19. StoreLocation.LocalMachine,
  20. StoreName.My,
  21. X509FindType.FindBySubjectName,
  22. "contoso.com");
  23. // This next line is optional. It specifies that the client's certificate
  24. // does not have to be issued by a trusted authority, but can be issued
  25. // by a peer if it is in the Trusted People store. Do not use this setting
  26. // for production code. The default is PeerTrust, which specifies that
  27. // the certificate must originate from a trusted certifiate authority.
  28. // sh.Credentials.ClientCertificate.Authentication.CertificateValidationMode =
  29. // X509CertificateValidationMode.PeerOrChainTrust;
  30. try
  31. {
  32. sh.Open();
  33. string address = sh.Description.Endpoints[0].ListenUri.AbsoluteUri;
  34. Console.WriteLine("Listening @ {0}", address);
  35. Console.WriteLine("Press enter to close the service");
  36. Console.ReadLine();
  37. sh.Close();
  38. }
  39. catch (CommunicationException ce)
  40. {
  41. Console.WriteLine("A commmunication error occurred: {0}", ce.Message);
  42. Console.WriteLine();
  43. }
  44. catch (System.Exception exc)
  45. {
  46. Console.WriteLine("An unforseen error occurred: {0}", exc.Message);
  47. Console.ReadLine();
  48. }
  49. 原文 https://docs.microsoft.com/zh-cn/dotnet/framework/wcf/feature-details/how-to-configure-a-port-with-an-ssl-certificate

请参阅

反馈

我们衷心期待你的反馈意见。 请选择要提供的反馈类型:

产品反馈

登录以提供文档反馈
 

我们就 GitHub 问题建立了新的反馈系统。 阅读我们的博客文章,了解相关内容。

本文档当前无任何反馈。 提交的反馈将显示在此处。

如何使用 SSL 证书配置端口的更多相关文章

  1. ubuntu中apache的ssl证书配置及url重写

    一.https原理 借用网上的图(图片来源: https://www.cnblogs.com/xiohao/p/9054355.html ),用到了对称加密和非对称加密.    二.ubuntu的ap ...

  2. 阿里云负载均衡SSL证书配置

    阿里云负载均衡SSL证书 转载请注明地址:http://www.cnblogs.com/funnyzpc/p/8908461.html 好久了呢,距上篇博客的这段时间中:考试.搬家.工作赶工.业务考察 ...

  3. 阿里云负载均衡SSL证书配置(更新)

    阿里云负载均衡及应用防火墙SSL证书配置 转载请注明地址:http://www.cnblogs.com/funnyzpc/p/8908461.html 好久了呢,距上篇博客的这段时间中:考试.搬家.工 ...

  4. 最新阿里云服务器免费SSL证书配置HTTPS的两种方法(图文教程二)

    在大家学习如何利用免费SSL证书配置网站HTTPS之前,我们先要搞清楚为什么要开启HTTPS,这个绿色的小锁真的有用吗?所谓的HTTPS其实是(安全套接字层超文本传输协议)是以安全为目标的HTTP通道 ...

  5. linux ssl证书配置(apache)

    1. 前提是 已通过第三方 申请到 .crt .key 和 .ca-bundle 文件 2. 将三个文件拷贝到linux服务器上 任意一个指定的目录 3. 找到要编辑的apache配置 Apache主 ...

  6. [转帖]一个ip对应多个域名多个ssl证书配置-Nginx实现多域名证书HTTPS

    一个ip对应多个域名多个ssl证书配置-Nginx实现多域名证书HTTPS https://home.cnblogs.com/u/beyang/ 一台服务器,两个域名 首先购买https,获取到CA证 ...

  7. HTTPS配置,SSL证书配置

    阿里云SSL证书配置: Appache服务器:https://help.aliyun.com/knowledge_detail/95493.html Tomcat服务器:https://help.al ...

  8. 安卓访问https错误,访问http可以,可能是nginx ssl证书配置有问题

    开发中遇到react-native生成的android访问UAT和开发环境的http api都可以,但是访问生产环境的https就报错,还有就是第三方webhook调用你https网站的api也可能会 ...

  9. 阿里云服务器Centos上Apache安装SSL证书配置Https

    首先我们先去阿里云申请一个免费的SSL证书(https://common-buy.aliyun.com/?spm=5176.7968328.1266638..5e971232BzMSp5&co ...

随机推荐

  1. 搭建Vue2.0开发环境

    1.必须要安装nodejs 2.搭建vue的开发环境 ,安装vue的脚手架工具 官方命令行工具 npm install --global vue-cli / cnpm install --global ...

  2. CssClass初步语法了解

    首先 创建Css有三种方法  这里面就不一一介绍了,主要说第二种 创建第二种Css样式表  要在标签<title><title>标签下面写 如: <style type= ...

  3. File 类 的基本操作

    //  File 类(静态类)   File 的缺点:只能用来读小文件 (它是一下子全都读进去) //创建一个文件 // File.Create(@"C:\Users\wbrm\Deskto ...

  4. ThreadPoolExecutor(下篇)

    上篇写到了ThreadPoolExecutor构造方法前4个参数int corePoolSize.int maximumPoolSize,.long keepAliveTime.TimeUnit un ...

  5. XHR的应用场景

    一.简史 IE5.5最早实现XHR,需要通过ActiveXObject创建xhr实例,直到IE7才定义了XMLHttpRequest对象.IE5.5实现XHR之后,其他浏览器紧随其后实现了XHR,直接 ...

  6. ATL模板库中的OLEDB与ADO

    上次将OLEDB的所有内容基本上都说完了,从之前的示例上来看OLEDB中有许多变量的定义,什么结果集对象.session对象.命令对象,还有各种缓冲等等,总体上来说直接使用OLEDB写程序很麻烦,用很 ...

  7. 弹出框layer插件

    有时候我们在网页制作中需要引用各种弹出框,弹出框的展现形式多种多样.可以是弹出图片,视频,文字,也可以是弹出图片轮播等形式: 弹出框插件——layer使用方法(其实官方文档中已经介绍的很详细): 下载 ...

  8. 安装redis服务端

    1. redis服务端和客户端的安装 [root@xxx ~]# cd /usr/local/src [root@xxx src]# wget http://download.redis.io/rel ...

  9. ES6新增的math,Number方法

    ES6新增的math,Number方法,下面总结了一些我觉得有用的 Nunber.isInteger()判断是否为整数,需要注意的是1,和1.0都会被认为是整数 console.log(Number. ...

  10. 《ArcGIS Runtime SDK for Android开发笔记》——数据制作篇:紧凑型切片制作(Server缓存切片)

    1.前言 在ArcGIS 10中出现了一种新的切片缓存文件格式:紧凑型存储(Compact).与之前的松散型存储(Exploded)相比,它有迁移方便.创建更快.减少存储空间等诸多优点,已经成为了现在 ...