2

我在 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 键。

4

1 回答 1

3

基于 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
于 2017-06-15T19:50:26.320 回答