[英]Not able to run WCF https web service
我已经创建了WCF HTTP
自托管Web服务。 现在我想将其转换为HTTPS
。 因此,我遵循以下几点:
按照此页面创建certificates
并将其绑定到特定端口。 我使用mmc
> console root
创建证书,并遵循上面链接中编写的相同步骤。
然后我运行以下命令将端口与证书绑定:
netsh http add sslcert ipport=0.0.0.0:8000 certhash=0000000000003ed9cd0c315bbb6dc1c08da5e6 appid={00112233-4455-6677-8899-AABBCCDDEEFF}
我根据自己的证书更换了certhash
。 我还检查了“ Created certificate info
并获得了此Created certificate info
。
我还将粘贴写在项目中的代码以在绑定端口上运行Web服务:
try
{
m_running = true;
private static String m_baseAddress = "https://10.0.0.1:8083";
WebHttpBinding _binding = new WebHttpBinding();
_binding.Security.Mode = WebHttpSecurityMode.Transport;
_binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Certificate;
m_serviceHost = new WebServiceHost(typeof(TService), new Uri(m_serviceAddress));
m_serviceHost.Credentials.ServiceCertificate.SetCertificate(StoreLocation.LocalMachine, StoreName.My, X509FindType.FindBySubjectName,"contoso.com");
ServiceEndpoint ep = m_serviceHost.AddServiceEndpoint(typeof(TContract), _binding, "");
m_serviceHost.Open();
}
catch(Exception e){ }
每当我重建我的项目并运行它。 它总是开始一秒钟然后停止。 我检查了日志,什么也没有。
但是当我删除这一行
m_serviceHost.Credentials.ServiceCertificate.SetCertificate(StoreLocation.LocalMachine, StoreName.My, X509FindType.FindBySubjectName,"contoso.com");
并将https
替换为http
。 工作正常。
以下是创建HTTPS
WCF self hosted
Web服务的以下步骤。
首先,使用netsh添加用于保留端口的名称空间: netsh http add urlacl url=https://127.0.0.1+:8085/ user=EVERYONE
键入以下命令来创建客户端证书: makecert -sk RootCA -sky signature -pe -n CN=localhost -r -sr LocalMachine -ss Root MyCA.cer
现在创建一个服务器证书: makecert -sk server -sky exchange -pe -n CN=localhost -ir LocalMachine -is Root -ic MyCA.cer -sr LocalMachine -ss My MyAdHocTestCert.cer
现在在\\Program Files\\Microsoft SDKs\\Windows\\v7.0A\\Bin
创建了两个新的certificate
文件,名称为MyCA.cer
和MyAdHocTestCert.cer
打开server certificate
即MyAdHocTestCert.cer
然后从details
选项卡中选择thumbprint
。
选择thumbprint
并从中删除所有空格。
现在,使用以下命令将此端口与此证书绑定: netsh http add sslcert ipport=127.0.0.1:8085 certhash=0000000000003ed9cd0c315bbb6dc1c08da5e6 appid={00112233-4455-6677-8899-AABBCCDDEEFF} clientcertnegotiation=enable
哪里
ipport :
主机地址和端口:放置与第一步选择的地址相同的地址
certhash :
指纹
现在您完成了证书和端口绑定。 要检查所有内容, netsh http show sslcert
在cmd中编写netsh http show sslcert
,您会得到以下信息:
现在为WSHTTPbinding
编写以下代码:
WebHttpBinding _binding = new WebHttpBinding();
_binding.Security.Mode = WebHttpSecurityMode.Transport;
_binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.None;
m_serviceHost = new WebServiceHost(typeof(Serviceclass), new Uri("https://127.0.0.1:8085/"));
m_serviceHost.Credentials.ServiceCertificate.SetCertificate(StoreLocation.LocalMachine, StoreName.My, X509FindType.FindByThumbprint, "611fe7748c5883f8082351744604a8c917608290");
ServiceEndpoint ep = m_serviceHost.AddServiceEndpoint(typeof(InstanceClass), _binding, "hello");
m_serviceHost.Open();
现在创建您的使用者以使用此自托管WS
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.