【问题标题】:Is possible to use self signed certificate for testing on different machines?是否可以使用自签名证书在不同的机器上进行测试?
【发布时间】:2015-05-12 23:38:59
【问题描述】:

我为测试目的创建了自签名证书。 我用了这个帖子:SSLStream example - how do I get certificates that work? 我在客户端上使用这样的代码。

AuthenticateAsClient("testName", null, SslProtocols.Default, false);

在服务器上:

BeginAuthenticateAsServer(certificate, false, SslProtocols.Default, false, EndAuthenticate, obj);

如果我在有证书的同一台机器上开始,就可以了。但是当我在其他机器上移动客户端时,我得到 RemoteCertificateChainErrors。

有人知道我应该使用一些“真正的”证书还是应该在我的当前证书中添加一些选项?

PS: Cer 有所有应用策略,所有发行策略 Pfx 具有所有应用程序策略

【问题讨论】:

    标签: c# ssl tcp ssl-certificate sslstream


    【解决方案1】:

    它也应该在其他机器上工作。检查事项:

    1. 您是否将 RootCATest.cer 导入到新客户端计算机上计算机商店的受信任根证书颁发机构?
    2. 服务器名称(AuthenticateAsClient() 中的第一个参数 - 在您的示例中为 "testName")是否等于服务器证书主题中的 CN?

    更新: 它也应该在其他机器上工作,但您必须将您的自签名根 CA 证书导入其受信任的根证书颁发机构存储。默认情况下,您的自定义 CA 证书在客户端上不受信任。如果您从受信任的 CA 订购证书,则不必在客户端上导入任何内容,因为它们的 CA 已经存在。受信任的 CA 在向您颁发 SSL 证书之前会进行一些检查(如果您是域的所有者等)。

    【讨论】:

    • 您好!第2步没问题!但第 1 步有一些问题。我导入了受信任的根 cer 和 pfx,这就是它在一台机器上工作的原因。但是另一台机器什么都没有!我认为它应该在客户端计算机上没有任何内容!在现实世界中,我们在服务器部分只有一个证书。
    • 我想模拟在没有客户端证书的情况下在客户端和服务器之间工作的主要目标。
    • 是的,证书仅在服务器端(无客户端证书)。但是客户端在 SSL 握手中验证服务器证书,并且该证书必须颁发但受信任的根 CA 证书。客户端计算机上的 Windows 在信任库中有许多开箱即用的 CA 证书,但没有您的 RootCATest.cer。所以你必须把它导入那里才能工作。如果您从 GoDaddy、GlobalSign 等订购 SSL 证书,则无需在客户端导入任何内容。
    • 我理解正确吗?如果我更改为普通证书,它将起作用。如果我使用自签名证书并希望将其放在其他机器上,它会给我 RemoteCertificateChainErrors?请您在回答中发表您的评论我会接受!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-02-17
    • 1970-01-01
    • 2017-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-23
    相关资源
    最近更新 更多