Certificate 未接受绑定到端口的证书

Certificate 未接受绑定到端口的证书,certificate,ssl-certificate,fiddler,bouncycastle,Certificate,Ssl Certificate,Fiddler,Bouncycastle,我制作了一个为本地主机公开web界面的工具。现在,我需要这个web界面为页面注册https前缀。为此,我使用BouncyCastle生成根证书和ssl证书。这一切都很好(生成、签名和绑定到端口)。IE通过https显示页面,无证书警告等 但是,当第三方应用程序尝试显示网页时,会失败(无法加载并显示“about:blank”)。因为它是一个嵌入式webbrowser,我不确定确切的问题是什么。因此,和其他东西一样,我尝试使用fiddler来确定问题——结果发现它确实接受fiddler生成的证书 所

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

但是,当第三方应用程序尝试显示网页时,会失败(无法加载并显示“about:blank”)。因为它是一个嵌入式webbrowser,我不确定确切的问题是什么。因此,和其他东西一样,我尝试使用fiddler来确定问题——结果发现它确实接受fiddler生成的证书

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

因此,我最终得到了4个证书(我删除了fiddler的所有原始证书):fiddler的1个ssl和1个root,BouncyCastle的1个ssl和1个root。根位于trusted中,ssl位于personal中,两者都位于localmachine上。现在,当我使用netsh将fiddler证书绑定到端口时,它就工作了。当我将自己的证书绑定到端口时,它会失败

我不知道为什么,因为所有的属性在我看来都是一样的

但是有一件事(同样,我不知道出了什么问题,所以这可能无关紧要):在SSL证书(所以不是根证书)上,SKI指向任何地方(或者,至少,我不知道它指向哪里),但fiddler证书上似乎也是如此。显然,对于这两个证书,授权密钥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)

为什么两个看似相同的证书会产生不同的影响?我在隐藏的财产里有什么遗漏的吗?如果是这样,我应该寻找什么呢?

ahhhhhhhhhh。。。。在这篇文章发表几分钟后,我发现了这个缺陷。。。这根本与证书无关,而是它绑定到端口的方式。。。。我使用来自的代码绑定证书。这条线导致了问题

 configSslParam.DefaultFlags = (uint)NativeMethods.HTTP_SERVICE_CONFIG_SSL_FLAG.HTTP_SERVICE_CONFIG_SSL_FLAG_NEGOTIATE_CLIENT_CERT;
将标志更改为0使其正常工作


浪费的时间……:(

没有将证书绑定到端口的事情。感谢您的评论和两次否决!!!我会记住这一点!这非常有意义,因为我已经尽了最大努力a)用我所掌握的知识解释我的问题(sed)。B) 详细解释我的尝试C)发布对我有效的解决方案,以便它可能帮助其他人。下次我真的应该在发布问题之前首先弄清楚问题和解决方案是什么(??),这行代码不会将证书绑定到端口。证书和端口都没有出现在其中。它配置SSL上下文。