如何使用 SSL 证书配置端口
创建使用自承载的 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 证书。
请注意,修改存储于计算机上的证书需要管理特权。
确定如何配置端口
在中Windows Server 2003或Windows XP,使用 HttpCfg.exe 工具查看当前端口配置中,使用查询并ssl切换时,如下面的示例中所示。
复制httpcfg query ssl
在 Windows Vista 中,使用 Netsh.exe 工具查看当前端口配置,如下面的示例所示。
复制netsh http show sslcert
获取证书的指纹
使用证书 MMC 管理单元查找用于客户端身份验证的 X.509 证书。 有关详细信息,请参阅如何:使用 MMC 管理单元查看证书。
访问证书的指纹。 有关详细信息,请参阅如何: 检索证书的指纹。
将证书指纹复制到文本编辑器,如 Notepad。
移除十六进制字符之间的所有空格。 完成此操作的一种方法是使用文本编辑器的“查找和替换”功能,将每个空格替换为空字符。
将 SSL 证书绑定至端口号
在 Windows Server 2003 或 Windows XP 中,对安全套接字层 (SSL) 存储区使用 HttpCfg.exe 工具的“set”命令将证书绑定至端口号。 该工具使用指纹识别证书,如下面的示例所示。
复制httpcfg set ssl -i 0.0.0.0:8012 -h 0000000000003ed9cd0c315bbb6dc1c08da5e6
-I交换机具有的语法
IP:port,指示该工具将证书设置为计算机的端口 8012。 另外,也可将端口号前面的四个零替换为计算机的实际 IP 地址。-H开关指定证书的指纹。
在 Windows Vista 中使用 Netsh.exe 工具,如下面的示例所示。
复制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 证书绑定至端口号并支持客户端证书
在 Windows Server 2003 或 Windows XP 中,若要支持在传输层使用 X.509 证书进行身份验证的客户端,请按照前面的步骤进行操作,但要向 HttpCfg.exe 另外传递一个命令行参数,如下面的示例所示。
复制httpcfg set ssl -i 0.0.0.0:8012 -h 0000000000003ed9cd0c315bbb6dc1c08da5e6 -f 2
-F开关的语法的
n其中 n 是介于 1 和 7 之间的数字。 值为 2 可在传输层启用客户端证书,如上面的示例所示。 值为 3 可启用客户端证书并将这些证书映射至 Windows 帐户。请参见“HttpCfg.exe 帮助”以获取其他值的行为。在 Windows Vista 中,若要支持在传输层使用 X.509 证书进行身份验证的客户端,请按照前面的步骤进行操作,但要另外提供一个参数,如下面的示例所示。
复制netsh http add sslcert ipport=0.0.0.0:8000 certhash=0000000000003ed9cd0c315bbb6dc1c08da5e6 appid={00112233-4455-6677-8899-AABBCCDDEEFF} clientcertnegotiation=enable
删除端口号的 SSL 证书
使用 HttpCfg.exe 或 Netsh.exe 工具查看计算机上的端口和所有绑定的指纹。 若要将信息输出到磁盘,请使用重定向字符“>”,如下面的示例所示。
复制httpcfg query ssl>myMachinePorts.txt
在中Windows Server 2003或Windows XP,使用 HttpCfg.exe 工具以及删除并ssl关键字。使用 -i开关指定
IP:port数,并且 -h开关指定指纹。复制httpcfg delete ssl -i 0.0.0.0:8005 -h 0000000000003ed9cd0c315bbb6dc1c08da5e6
在 Windows Vista 中使用 Netsh.exe 工具,如下面的示例所示。
复制Netsh http delete sslcert ipport=0.0.0.0:8005
示例
下面的代码演示如何使用 WSHttpBinding 类(设置为传输安全)创建自承载服务。 创建应用程序时,请指定地址中的端口号。
// This string uses a function to prepend the computer name at run time.
string addressHttp = String.Format(
"http://{0}:8080/Calculator",
System.Net.Dns.GetHostEntry("").HostName);
WSHttpBinding b = new WSHttpBinding();
b.Security.Mode = SecurityMode.Transport;
b.Security.Transport.ClientCredentialType = HttpClientCredentialType.Certificate;
// You must create an array of URI objects to have a base address.
Uri a = new Uri(addressHttp);
Uri[] baseAddresses = new Uri[] { a };
// Create the ServiceHost. The service type (Calculator) is not
// shown here.
ServiceHost sh = new ServiceHost(typeof(Calculator), baseAddresses);
// Add an endpoint to the service. Insert the thumbprint of an X.509
// certificate found on your computer.
Type c = typeof(ICalculator);
sh.AddServiceEndpoint(c, b, "MyCalculator");
sh.Credentials.ServiceCertificate.SetCertificate(
StoreLocation.LocalMachine,
StoreName.My,
X509FindType.FindBySubjectName,
"contoso.com");
// This next line is optional. It specifies that the client's certificate
// does not have to be issued by a trusted authority, but can be issued
// by a peer if it is in the Trusted People store. Do not use this setting
// for production code. The default is PeerTrust, which specifies that
// the certificate must originate from a trusted certifiate authority.
// sh.Credentials.ClientCertificate.Authentication.CertificateValidationMode =
// X509CertificateValidationMode.PeerOrChainTrust;
try
{
sh.Open();
string address = sh.Description.Endpoints[0].ListenUri.AbsoluteUri;
Console.WriteLine("Listening @ {0}", address);
Console.WriteLine("Press enter to close the service");
Console.ReadLine();
sh.Close();
}
catch (CommunicationException ce)
{
Console.WriteLine("A commmunication error occurred: {0}", ce.Message);
Console.WriteLine();
}
catch (System.Exception exc)
{
Console.WriteLine("An unforseen error occurred: {0}", exc.Message);
Console.ReadLine();
}
原文 https://docs.microsoft.com/zh-cn/dotnet/framework/wcf/feature-details/how-to-configure-a-port-with-an-ssl-certificate
请参阅
反馈
如何使用 SSL 证书配置端口的更多相关文章
- ubuntu中apache的ssl证书配置及url重写
一.https原理 借用网上的图(图片来源: https://www.cnblogs.com/xiohao/p/9054355.html ),用到了对称加密和非对称加密. 二.ubuntu的ap ...
- 阿里云负载均衡SSL证书配置
阿里云负载均衡SSL证书 转载请注明地址:http://www.cnblogs.com/funnyzpc/p/8908461.html 好久了呢,距上篇博客的这段时间中:考试.搬家.工作赶工.业务考察 ...
- 阿里云负载均衡SSL证书配置(更新)
阿里云负载均衡及应用防火墙SSL证书配置 转载请注明地址:http://www.cnblogs.com/funnyzpc/p/8908461.html 好久了呢,距上篇博客的这段时间中:考试.搬家.工 ...
- 最新阿里云服务器免费SSL证书配置HTTPS的两种方法(图文教程二)
在大家学习如何利用免费SSL证书配置网站HTTPS之前,我们先要搞清楚为什么要开启HTTPS,这个绿色的小锁真的有用吗?所谓的HTTPS其实是(安全套接字层超文本传输协议)是以安全为目标的HTTP通道 ...
- linux ssl证书配置(apache)
1. 前提是 已通过第三方 申请到 .crt .key 和 .ca-bundle 文件 2. 将三个文件拷贝到linux服务器上 任意一个指定的目录 3. 找到要编辑的apache配置 Apache主 ...
- [转帖]一个ip对应多个域名多个ssl证书配置-Nginx实现多域名证书HTTPS
一个ip对应多个域名多个ssl证书配置-Nginx实现多域名证书HTTPS https://home.cnblogs.com/u/beyang/ 一台服务器,两个域名 首先购买https,获取到CA证 ...
- HTTPS配置,SSL证书配置
阿里云SSL证书配置: Appache服务器:https://help.aliyun.com/knowledge_detail/95493.html Tomcat服务器:https://help.al ...
- 安卓访问https错误,访问http可以,可能是nginx ssl证书配置有问题
开发中遇到react-native生成的android访问UAT和开发环境的http api都可以,但是访问生产环境的https就报错,还有就是第三方webhook调用你https网站的api也可能会 ...
- 阿里云服务器Centos上Apache安装SSL证书配置Https
首先我们先去阿里云申请一个免费的SSL证书(https://common-buy.aliyun.com/?spm=5176.7968328.1266638..5e971232BzMSp5&co ...
随机推荐
- Oracle 过程中变量赋值
create or replace function get_sal1(id employees.employee_id%type) return number is sal employees.sa ...
- Xshell连接不上虚拟机的问题和解决办法
第一次用xshell,一直连不上linux,搞了好久,也查了很多办法,但是最后也终于解决了,在这里我分享一下自己的解决办法,再列举网上的办法,希望可以帮助其他人. 1,你的linux ip地址没有配置 ...
- Mysql 服务无法启动解决办法
1.我使用的是MySQL-5.7.10-winx64 版本,在安装后启动服务时出现 “服务无法启动”错误 2.解决办法为删除安装目录中的data文件,然后打开cmd调到自己的安装目录下输入mysqld ...
- Android应用开发基础之五:网络编程(二)
HttpClient 发送get请求 创建一个客户端对象 HttpClient client = new DefaultHttpClient(); 创建一个get请求对象 HttpGet hg = n ...
- 大数据的正确用法你get到了吗?
Azure 镜像市场已于2016年9月21日正式上线,在这个统一的集成平台中,客户可以轻松地浏览.搜索和选择一系列来自第三方的应用和解决方案,并可以将其快速一键部署到 Azure 实例当中. 在移动为 ...
- (六)svn 服务器端使用之权限管理
权限管理(了解) 认证授权机制 在企业开发中会为每位程序员.测试人员等相关人员分配一个账号,用户通过使用svn客户端连接svn服务时需要输入账号和密码,svn服务对账号和密码进行校验,输入正确可以继续 ...
- 再学UML-深入浅出UML类图(三)
类与类之间的关系(2) 2. 依赖关系 依赖(Dependency)关系是一种使用关系,特定事物的改变有可能会影响到使用该事物的其他事物,在需要表示一个事物使用另一个事物时使用依赖关系. ...
- 初涉京东及淘宝开放平台API-商品模型
============ 京东 ============ [Product]http://help.jd.com/jos/question-568.html#A2ware_id(相当于SPU?)sku ...
- JSP实现用户登录样例
业务描述 用户在login.jsp页面输入用户名密码登录: 如果用户名为xingoo,密码为123,则跳转到成功界面login_success.jsp,并显示用户登录的名字: 如果用户名密码错误,则跳 ...
- 部署Smokeping
1.环境安装 # yum -y install gcc* perl* httpd* libxml2 libxml2-devel libpng libpng-devel glib2 glib2-deve ...