在Windows(环境同时具有Windows 2008和Windows 10环境)平台上启用TLS 1.2连接时遇到问题。目前,我的私钥由windows证书存储管理,使用stunnel(v 5.41)中的capi engineid,它使用openssl 1.0.2k-fips。因此,stunnel只能协商tls1.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不支持tls1.2中使用的密码,所以只有tls1.1可以工作。我需要TLS 1.2。
https://www.stunnel.org/pipermail/stunnel-users/2017-February/005720.html记录为什么我不能将tls 1.2与openssl1.0.2一起使用。
openssl 1.0.2是stunnel 5.41中内置的。重新编译不起作用。我正在特别寻找如何配置stunnel来指向pkcs12密钥。
最佳答案
基于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