0

我们有一个自动生成证书并使用 httpapi 将其绑定到选定端口的应用程序。在 Windows 7 和 2003/2008 服务器下,这就像一个魅力。证书也可以通过解除绑定的方式重新绑定到其他端口,然后绑定到新的端口。

但是,在 Windows 8 下,只有从旧端口解除绑定才能成功。尝试将证书绑定到新端口值失败,错误代码 1312 显示消息“指定的登录会话不存在。它可能已经终止。”

奇怪的是,当尝试通过netsh添加绑定证书时,它也会在提升的控制台中失败,并显示相同的错误和消息(“SSL 证书添加失败,错误:1312|指定的登录会话不存在。它可能已经已终止。”),无论端口号如何。

为了增加悬念,该应用程序有一个安装程序,该安装程序最初在安装时绑定证书,并在卸载时取消绑定。而这件事永远不会失败!安装程序在“Windows 7”操作系统环境下工作,而应用程序在“Windows Vista”下,如果这可能是一个线索。控制台位于“Windows 8”上下文中。

有人在这个操作系统下遇到过类似的问题吗?任何想法为什么会发生这种情况?

任何帮助都非常感谢,在此先感谢您!

4

1 回答 1

0

在我们的证书生成代码中,我们使用 X509Store 类的方法将证书添加到存储中。在 Windows 8 下,即使应用程序以管理员身份运行,这也会使证书“不受信任”。原因可能是 .NET 4.5 中类的不同实现或由于应用程序运行的操作系统上下文而施加的限制。

通过 Process 类调用“certutil.exe”以将证书添加到存储区,从而解决了该问题。

于 2013-04-09T17:23:45.403 回答