【问题标题】:Certificate bound to port not accepted不接受绑定到端口的证书
【发布时间】:2017-02-01 01:05:09
【问题描述】:

我制作了一个工具,可以为 localhost 公开一个 Web 界面。现在,我需要这个 Web 界面来为页面注册一个 https 前缀。为此,我使用 BouncyCastle 生成根证书和 ssl 证书。这一切都很好(生成、签名和绑定到端口)。 IE 通过 https 没有证书警告等显示页面。

但是,当第三方应用程序尝试显示网页时,它会失败(无法加载和显示“about:blank”)。因为它是一个嵌入式网络浏览器,所以我不确定确切的问题是什么。因此,除了其他东西,我尝试使用提琴手来确定问题 - 只是发现它确实接受提琴手生成的证书。

所以我所做的是导出提琴手证书并从商店中删除所有自定义证书。然后,我在我生成的证书所在的完全相同的商店中导入了提琴手证书。我还确保构建(您可以通过查看证书属性检查的所有内容)完全相同。通过使用 Windows MMC,单击证书我可以看到没有区别,即使顺序是相同的。关键等 - 都匹配。唯一略有不同的是:我的证书中的序列号比 fiddler 生成的序列号短。

所以我最终得到的是 4 个证书(我从 fiddler 中删除了所有原始证书):来自 fiddler 的 1 个 ssl 和 1 个 root 以及来自 BouncyCastle 的 1 个 ssl 和 1 个 root。根是可信的,ssl 是个人的,都在本地机器上。现在,当我使用 netsh 将提琴手证书绑定到端口时,它可以工作。当我将自己的证书绑定到端口时,它会失败。

我不知道为什么所有属性对我来说都一样。

但有一件事(再次,我不知道出了什么问题,所以这可能无关紧要):在 SSL 证书(所以不是根证书)上,SKI 指向无处(或者,至少,我看不到它指向的位置),但这似乎也是提琴手证书的情况。显然,对于这两个证书,授权密钥 id 都指向它们各自的根。 SSL 证书上的 SKI 由

设置
 certificateGenerator.AddExtension(X509Extensions.SubjectKeyIdentifier, false, new SubjectKeyIdentifierStructure(subjectKeyPair.Public));

顺便说一句,我使用虚拟机进行测试,每次都会重置,所以我不认为我在路上的某个地方搞砸了证书存储。该工具保持不变,唯一改变的是绑定证书,两者都注册到'localhost'

               IE        thirdparty browser
fiddler's     good           good
Own's         good           fail (without message)

为什么 2 个看似相同的证书会产生不同的影响?我在隐藏属性中缺少什么吗?如果是这样,我应该寻找什么?

【问题讨论】:

  • 没有将证书绑定到端口这样的事情。
  • 感谢您非常有用的评论和 2 票反对!!!我会记住这一点的!看到我尽了最大努力A)用我拥有的知识(sed)解释我的问题,这是完全有道理的。 B)彻底解释我所尝试的 C)发布了对我有用的解决方案,以便它可以帮助其他人。下次我真的应该在发布问题之前先弄清楚问题和解决方案是什么(???)

标签: certificate ssl-certificate fiddler bouncycastle


【解决方案1】:

啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊”绑定证书。这条线导致了问题...

 configSslParam.DefaultFlags = (uint)NativeMethods.HTTP_SERVICE_CONFIG_SSL_FLAG.HTTP_SERVICE_CONFIG_SSL_FLAG_NEGOTIATE_CLIENT_CERT;

将标志更改为 0 使其工作....

浪费时间.... :(

【讨论】:

  • 这行代码没有将证书绑定到端口。证书和端口都没有出现在其中。它配置 SSL 上下文。
猜你喜欢
  • 2012-10-16
  • 2019-11-28
  • 1970-01-01
  • 2017-10-06
  • 1970-01-01
  • 1970-01-01
  • 2012-03-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多