在Windows上配置stunnel和openssl以支持TLS 1.2

时间:2017-06-13 12:35:19

标签: windows openssl pfx pkcs#12 stunnel

我在Windows(环境同时具有Windows 2008和Windows 10环境)平台上启用TLS 1.2连接时遇到问题。目前,我的私钥由Windows证书存储管理,使用stunnel(v 5.41)中的CAPI engineId,它使用OpenSSL 1.0.2k-fips。因此,stunnel只能协商TLS 1.1连接(出于显而易见的原因,SSLv2和SSLv3 / TLS1被禁用)。

我已经尝试过编译OpenSSL 1.1.0f和stunnel 5.41,但没有运气可以在CentOS下交叉编译,也不能在Windows下使用MSYS2 / MINGW32或Cygwin。

我正在寻找一种方法来管理stunnel中的pfx / p12(私钥),而无需借助Windows证书存储。我找到了一个关于如何配置stunnel以使用capi的示例 - 它运行得很漂亮,但是因为openssl 1.0.2不支持在TLS 1.2中使用的密码,所以只有TLS 1.1才有效。我需要TLS 1.2。

https://www.stunnel.org/pipermail/stunnel-users/2017-February/005720.html说明为什么我不能将TLS 1.2与OpenSSL 1.0.2一起使用。

OpenSSL 1.0.2是stunnel 5.41中内置的。重新编译不起作用。我特意寻找如何配置stunnel指向pkcs12键。

1 个答案:

答案 0 :(得分:2)

基于dave_thompson_085评论的解决方案:

解决方案是简单地放入cert变量的p12文件的位置,不包括engineId,不包括key。不要担心密码,stunnel会提示输入密码。

我一直认为我需要设置一个引擎 - 就像pkcs11或capi一样。

是的,我过度思考并完全错过了明显的事情。

以下为我工作的代码段示例。 (上面的所有内容都是默认设置,除了sslOptions,设置为sslOptions = TLS1.2

[https-test-services]
client=yes
accept=127.0.0.1:7000
connect=hostname.of.remote.server:8443
verifyChain = yes
CAfile = ca-certs.pem
cert = C:\Location\To\certandkey.p12
checkHost = hostname.of.remote.server
OCSPaia=yes