Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用WCF服务通过代码附加带有tcp绑定的证书_C#_Wcf_Ssl_Tcp - Fatal编程技术网

C# 如何使用WCF服务通过代码附加带有tcp绑定的证书

C# 如何使用WCF服务通过代码附加带有tcp绑定的证书,c#,wcf,ssl,tcp,C#,Wcf,Ssl,Tcp,我得到了一个示例代码,它显示了如何通过编码将带有tcp绑定的WCF服务的证书附加到证书上 NetTcpBinding b = new NetTcpBinding(SecurityMode.TransportWithMessageCredential); b.Security.Message.ClientCredentialType = MessageCredentialType.Certificate; Uri netTcpAdddress = new Uri("net.tcp://baseAd

我得到了一个示例代码,它显示了如何通过编码将带有tcp绑定的WCF服务的证书附加到证书上

NetTcpBinding b = new NetTcpBinding(SecurityMode.TransportWithMessageCredential);
b.Security.Message.ClientCredentialType = MessageCredentialType.Certificate;
Uri netTcpAdddress = new Uri("net.tcp://baseAddress");
ServiceHost sh = new ServiceHost(typeof(Calculator), netTcpAdddress);
sh.Credentials.ServiceCertificate.SetCertificate(
    StoreLocation.LocalMachine, StoreName.My,
    X509FindType.FindByIssuerName, "Contoso.com");
sh.AddServiceEndpoint(typeof(ICalculator), b, "TcpCalculator");
sh.Open();
我在试这句话的意思是什么

sh.Credentials.ServiceCertificate.SetCertificate(
        StoreLocation.LocalMachine, StoreName.My,
        X509FindType.FindByIssuerName, "Contoso.com");
在wcf服务将运行的地方,该电脑中可能存在多个证书。如何提及我需要随服务附上的证书

StoreLocation.LocalMachine的含义是什么?是指localhost吗

StoreName是什么意思?我的

我的工作是什么?是否有文件夹名?如果是,则此文件夹的完整路径是什么

X509FindType.FindByIssuerName是什么

因为单个用户可以创建或拥有多个证书,这意味着什么。那么我如何指向一个特定的证书呢

我可以创建许多可以使用“Contoso.com”一词的证书

我的问题是如何以编程方式指定或标识特定证书,因为用户可能会创建多个证书,所以如何通过代码区分两个证书


谢谢

这是有关该方法的文档。看来我以前的建议对我有所帮助

StoreLocation.LocalMachine的含义是什么?这意味着什么 本地主机

不,这并不意味着本地主机。它是指分配给本地计算机的X.509证书存储(计算机帐户in)

StoreName是什么意思?我的

它是指个人证书的X.509证书存储

我的工作是什么?是否有文件夹名?如果是,那么完整路径是什么 此文件夹的名称

My在这个特定实例中是指本地机器的个人证书存储。以下是MMC中的结构视图

X509FindType.FindByIssuerName是什么

这意味着您在主机上设置的证书将是与您提供的值
“Contoso.com”
颁发者名称
匹配的第一个证书
SetCertificate
将尝试在本地计算机的个人证书存储中查找符合此条件的证书

因为单个用户可以创建或拥有多个用户,这意味着什么 证明书那么我如何指向一个特定的证书呢

正如您所建议的,如果运行主机的计算机具有来自同一颁发者的多个证书,
IssuerName
可能不是唯一标识符。最好使用另一个enum成员,例如
FindBySerialNumber
或更好的
FindByThumbprint

因此,这就是我如何唯一地标识要在本地计算机的个人证书存储中的主机上设置的证书

sh.Credentials.ServiceCertificate.SetCertificate(
        StoreLocation.LocalMachine, StoreName.My,
        X509FindType.FindByThumbprint, 
        /* Thumbprint - SHA1 hash value for the Cert */);

谢谢你详细的回答。verey certificate已过期,因此如果任何证书在我不知情的情况下过期,那么会发生什么?wcf服务可能不起作用或会发生任何错误。当我们购买任何证书时,以及当任何证书过期时,我们是否需要再次从公司购买证书,或者我们可以以最低成本续订证书?那些购买证书用于网站或wcf服务的人如何在证书之前获得通知过期…是否存在任何进程。谢谢当我们使用SetCertificate()函数时,我们可以指定与StoreName.My不同的内容吗?如何查看和获取证书的指纹?请指导,因为我是新的证书和wcf。