【发布时间】:2015-01-08 02:19:14
【问题描述】:
过去,关于如何以编程方式安装驱动器的讨论很多。
此链接是一个富有成效的示例: How do I map a network drive that requires a username and password in .NET?
但是,我似乎缺少一种在需要 TLS 时执行此挂载的方法。
我们看到这样的事情: net.exe 使用 x:"\server.com@ssl:443\folder" /User:UserName 密码
这可以在以下代码中使用:
System.Diagnostics.ProcessStartInfo process = new System.Diagnostics.ProcessStartInfo();
process.FileName = "net.exe";
process.Arguments = "use Z: \\\\JoeDoodle.TheDomain5.com@SSL\\MyFolder\\ PassW0rd /user:JoeUser";
process.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
System.Diagnostics.Process p = System.Diagnostics.Process.Start(process);
// Other stuff...
这类事情适用于 SSL 但不适用于 TLS。这是一个 .Net 4.0 应用程序,我们的测试基础从 Windows 7 开始。由于我们正在运行它,如图所示,我不确定这不是很重要。
我不能使用 WNetAddConnection2 和相关的导入,因为这是一个远程驱动器。另一端是 Linux 公开 Webdav,它适用于 SSL,但不适用于 TLS。他们正在逐步淘汰 SSL,所以我必须使用 TLS。
任何以编程方式安装它的方式都可能适用于 TLS,但我还没有找到成功的组合。
感谢任何帮助。
【问题讨论】:
-
只是为了检查一下,您是否确实在网络上检查过(例如使用 Wireshark)您确实使用的是 SSLv3 而不是 TLSv1.0 或更高版本?许多 SSL/TLS 堆栈透明地执行此操作,并且很可能它正在使用某些系统设置(或者至少是更全局的设置),除非您在代码中明确调整了版本。
-
布鲁诺,好问题!该系统以前只允许 SSLv3,并且在这种情况下它工作得非常清楚,它可能只有 SSLv3。但是,当他们禁用 SSL 并且只允许 TLS 时,它失败了。当这导致各种问题时,他们重新启用了 SSLv3 和 TLS,如果 TLS 协商失败,它会退回到 SSLv3。这行得通。我还没有使用过类似wireshark 的东西来看看它是否确实落在了SSLv3 上。但是,由于 TLS 单独失败,我发现它在该配置下是否会使用 TLS 令人怀疑。 SSLv3 将很快被删除,因此无论如何它都不可行。
-
还有哪些密码套件可用(以及启用了哪个版本的 TLS)也可能存在问题。 Wireshark 应该能够在 ClientHello 消息中告诉您客户端声称支持的内容。考虑到您在这里以编程方式执行的操作基本上只是调用命令行实用程序,我会先查看操作系统设置以手动实现此目的。
-
我需要跟进,不要让这个打开。最终问题出在 Apache 端。它需要一些调整,然后重新编译 Apache。我们能够看到令人困惑的 HELLO 消息,但事实证明 Apache 的更改修复了它们。这仅适用于对其进行测试的 Windows 7。我不确定 Windows 8。