我们有一个应用程序,该应用程序自动生成证书并使用httpapi将其绑定到选定的端口。在Windows 7和2003/2008服务器下,这就像一种魅力。证书也可以通过不绑定,然后绑定到新端口,反弹到其他端口。
然而,在Windows 8下,只有从旧端口解除绑定才能成功。试图将证书绑定到新端口值的尝试失败,错误代码1312显示消息“指定的登录会话不存在。它可能已经终止”。
这里奇怪的是,当试图通过netsh添加绑定证书时,它在提升的控制台中也会失败,并带有相同的错误和消息(“,Error: 1312\A指定的登录会话不存在。它可能已经被终止了。”),而不管端口号如何。
要添加悬念,应用程序有一个安装程序,它最初在安装时绑定证书,然后在卸载时解除它的绑定。这件事永远不会失败!安装程序在"Windows 7“操作系统上下文中工作,而应用程序位于"Windows”下,如果这是一个线索的话。控制台位于"Windows 8“上下文下。
在这个操作系统下,有没有人遇到过类似的问题?知道为什么会发生这种事吗?
任何帮助都是非常感谢的,谢谢您的提前!
发布于 2013-04-09 17:23:45
在我们的证书生成代码中,我们使用X509Store类的方法将证书添加到存储区。在Windows 8下,即使应用程序以管理员身份运行,也会使证书“不受信任”。原因可能是.NET 4.5中类的不同实现,也可能是由于应用程序运行的操作系统上下文而施加的限制。
通过进程类调用"certutil.exe“来将证书添加到存储区,从而解决了这个问题。
https://stackoverflow.com/questions/15701531
复制相似问题