2014-11-13 92 views
2

过去,关于如何以编程方式安装驱动器进行了大量有成效的讨论。使用TLS安全的.Net映射网络驱动器

这个链接是一个富有成效的例子: How do I map a network drive that requires a username and password in .NET?

不过,我似乎缺少的是执行需要TLS时,这种安装方式。

我们看到这样的事情: NET.EXE使用X: “\ [email protected]:443 \文件夹”/用户:用户名密码

如果这可以在代码中使用:

System.Diagnostics.ProcessStartInfo process = new System.Diagnostics.ProcessStartInfo(); process.FileName = "net.exe"; process.Arguments = "use Z: \\\\[email protected]\\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和相关的导入,因为这是一个远程驱动器。另一端是暴露Webdav的Linux,它对SSL非常适用,但不适用于TLS。他们正在逐步取消SSL,所以我必须使用TLS。

任何方式来以编程方式挂载它可能会用TLS罚款,但我还没有找到成功的组合。

任何帮助表示赞赏。

+0

只是为了检查,你去查看在电线上(例如,使用Wireshark),你是确实使用SSLv3和不TLSv1.0或以上?许多SSL/TLS堆栈透明地实现了这一点,并且很可能它使用了一些系统设置(或者至少是更全局的),除非你在代码中明确调整了版本。 – Bruno

+0

布鲁诺,优秀的问题!该系统以前只有SSLv3允许,它的工作原理非常清楚,在这种情况下它可能只有SSLv3。但是,当他们禁用SSL并仅允许TLS失败时。当这导致各种问题时,他们重新启用了SSLv3和TLS,如果TLS协商失败,它将回退到SSLv3。这工作。我没有进入像wireshark这样的东西,看看它是否落入SSLv3。但是,由于TLS单独失败,我怀疑它是否要在该配置下使用TLS。无论如何,SSLv3将很快被移除,因此无法生存。 – JoeDoddleBang

+0

也可能存在密码套件可用的问题(以及启用了哪个版本的TLS)。 Wireshark应该能够告诉你客户声称在ClientHello消息中支持什么。考虑到你在这里以编程方式进行的操作基本上只是调用一个命令行实用程序,我会首先查看操作系统设置以实现此操作。 – Bruno

回答

0

问题最终不是Windows问题,而是Apache问题。

Apache需要的不仅仅是关闭SSLv3,而是轻微的代码更改和重新编译。

这仅适用于Windows 7的连接,所以我不知道有关Windows 8

相关问题