我已按照SSL中的说明使用自托管WCF服务.当我尝试使用netsh在Windows 7上绑定证书时,如如何:使用SSL证书配置端口中所述.,它失败如下.
PS C:\> netsh http add sslcert ipport=0.0.0.0:8732 certhash=0000000000003ed9cd0c315bbb6dc1c08da5e6 appid={00112233-4455-6677-8899-AABBCCDDEEFF}
Bad numeric constant: 224.
At line:1 char:104
+ netsh http add sslcert ipport=0.0.0.0:8732 certhash=0000000000003ed9cd0c315bbb6dc1c08da5e6 appid={001 <<<< 12233-4455-6677-8899-AABBCCDDEEFF}
+ CategoryInfo : ParserError: (224:String) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : BadNumericConstant
Run Code Online (Sandbox Code Playgroud)
C:\>netsh http add sslcert ipport=0.0.0.0:8732 certhash=0000000000003ed9cd0c315bbb6dc1c08da5e6 appid={00112233-4455-6677-8899-AABBCCDDEEFF}
SSL Certificate add failed, Error: 1312
A specified logon session does not exist. It may already have been terminated.
Run Code Online (Sandbox Code Playgroud) 有两个样本
using System;
using System.Net;
using System.Net.Security;
using System.Security.Cryptography.X509Certificates;
using System.ServiceModel;
using System.ServiceModel.Description;
using System.ServiceModel.Security;
namespace ConsoleApplication1
{
internal class Program
{
private static void Main(string[] args)
{
string addressHttps = String.Format("http://{0}:51222", Dns.GetHostEntry("").HostName);
var wsHttpBinding = new BasicHttpBinding();
var serviceHost = new ServiceHost(typeof (HelloWorldService), new Uri(addressHttps));
Type endpoint = typeof (IHelloWorldService);
serviceHost.AddServiceEndpoint(endpoint, wsHttpBinding, "hello");
Uri uri = new Uri(serviceHost.Description.Endpoints[0].ListenUri.AbsoluteUri + "/mex");
var smb = new ServiceMetadataBehavior();
smb.HttpGetEnabled = true;
smb.HttpGetUrl = uri;
serviceHost.Description.Behaviors.Add(smb);
Console.Out.WriteLine("Mex address " + …Run Code Online (Sandbox Code Playgroud) 我有一个WCF应用程序,通常在IIS中运行(对于我的测试和生产环境).但是当我从我的调试器运行它时,它被设置为运行自托管(即,弹出一个控制台窗口并且不使用IIS).
我还有一个连接到WCF应用程序的客户端应用程序.通常,当我测试我的客户端应用程序(在Windows Mobile上运行)时,它会设置为连接到我的一个测试环境(我有一个开发环境供我测试).
我现在遇到的问题是,客户端发送的内容与WCF应用程序的内容之间似乎存在脱节.我需要调试我的WCF应用程序.
我可以运行我的WCF应用程序,然后更改我的客户端的URL以指向调试器版本,但我的服务使用SSL运行并且具有客户端硬编码的证书.
我宁愿不禁用我的代码中的那部分(在客户端上).有没有办法在我的自托管WCF应用程序上安装证书?
我有一个WCF服务,我想使用SSL访问.我在我的开发者机器上,所以我在考虑自我托管服务.我一直在关注配置HTTP和HTTPS.
我创建了一个自签名证书,我将其添加到受信任的根证书颁发机构.我创建了另外两个由第一个签名的证书,一个用于客户端,另一个用于服务器.我跟着使用makecert创建开发证书.
我无法通过SSL证书配置步骤.当我使用netsh将证书绑定到端口号时,它会引发SSL错误:
证书添加失败,错误:1312指定的登录会话不存在.它可能已经被终止了.
证书是否需要一些特殊领域或其他一些工作?
CA证书:
makecert -n "CN=TestCA" -cy authority -a sha1 -sv "TestCA.pvk" -r "TEST_CA.cer"
Run Code Online (Sandbox Code Playgroud)
服务证书:
makecert -n "CN=rneapp.com" -ic "TEST_CA.cer" -iv "TestCA.pvk" -a sha1 -sky exchange -pe -sv "rneapp.com.pvk" "rneapp.com.cer"
Run Code Online (Sandbox Code Playgroud)
客户证书:
makecert -n "CN=rneClient" -ic "TEST_CA.cer" -iv "TestCA.pvk" -a sha1 -sky exchange -pe -sv "rneClient.pvk" "rneClient.cer"
Run Code Online (Sandbox Code Playgroud)
我正在使用此命令将证书绑定到端口:
netsh http add sslcert ipport=0.0.0.0:8465 certhash=a853f3b5b48b8a506bdc4212ba2726a3bfea2bb6 appid={2E53B9B0-17AE-4EBC-A1AE-43D53A6FD07D} clientcertnegotiation=enable
Run Code Online (Sandbox Code Playgroud)