2

我必须将 OpenSSL 移植到 winRT(x86 而非 ARM 上的 windows 8 Metro),所以我计划开始为 WinRt 编译。我已经从http://www.openssl.org/source/下载了源代码

在源代码中,我看到了一些特定于操作系统的文件夹,如 MacOS、OS2 和 ms 文件夹,但我没有看到任何 Visual Studio 项目。到目前为止我所读到的关于编译 OpesSSL 的任何内容都谈到了 makefile 和 mingw,但我对 makefile 不太满意,而且不确定 Windows 8 是否支持 cygwin 和 perl。所以我正在寻找一些关于如何编译 OpenSSL 的想法在 Windows 8 上使用 Visual Studio。请分享您的知识或向我指出可以帮助我做到这一点的方向。非常感谢

4

3 回答 3

2

OpenSSL 将在 Windows 8 下构建,仅用于桌面模式。Metro/WinRT 不再提供 Winsock(或与 API 兼容的替代方案),因此您将无法直接为 WinRT 进行编译。

于 2012-07-24T23:43:24.950 回答
2

Metro 风格的 SSL 加密解决方案运行良好。但是,如果您没有连接到 Web 服务,则存在一些缺点:
- 您无法控制 SSL 握手的参数(如密码、服务器证书验证)
- 无法出示用户证书以向服务器验证客户端
-依赖微软升级 SSL 堆栈新加密等。

有些人致力于将 openssl 移植到 Windows 运行时。见 http://openssl.6102.n7.nabble.com/winrt-random-td42100.html
表示只配置和构建openssl,不支持winsock(只有内存BIO),替换一些不支持的功能。

因此可以做到这一点,但还没有开箱即用的支持,与内置解决方案相比,还有相当多的工作。但是如果你想移植一些已经使用 openssl 的软件,这可能是一个解决方案。

于 2013-04-13T09:48:06.437 回答
1

为什么要在 WinRT 中使用 OpenSSL?

如果仅出于安全目的使用它,则可以省略它 inmetro 风格的 WinRT。因为 WinRT 本身为 Metro 风格的套接字编程提供了安全性,例如

//0: A plain socket with no encryption.
socket->ConnectAsync(hostname, serviceName, SocketProtectionLevel::PlainSocket);

//1: A socket that must use the SSL for encryption. This value requires encryption and never allows a NULL cipher.
socket->ConnectAsync(hostname, serviceName, SocketProtectionLevel::Ssl);

//2: A socket that prefers to use the SSL for encryption. This value prefers that full encryption be used, but allows a NULL cipher (no encryption) based on the server configuration.
socket->ConnectAsync(hostname, serviceName, SocketProtectionLevel::SslAllowNullEncryption);
于 2012-07-23T13:13:42.537 回答