【问题标题】:Stunnel certificate verify failedStunnel 证书验证失败
【发布时间】:2020-02-14 18:08:29
【问题描述】:

我正在尝试在 Windows 中使用 REDIS 设置 stunnel。安装 stunnel 和 redis 后,我在服务器和客户端模式下进行了以下配置:

客户端机器配置:

[redis-stunnel]
client = yes
cert = stunnel.pem
accept = 127.0.0.1:6379
connect = 172.30.12.28:6390
verifyChain = yes
CAfile = stunnel.pem
checkHost = 172.30.12.28:6390
OCSPaia = yes 

服务器机器配置:

[redis-stunnel-server]
accept  = 6380
connect = 6379
cert = stunnel.pem

配置加载成功,但是当我尝试从客户端机器连接到端口号:6379 时,我收到以下错误:

Service [redis-stunnel] connected remote server from 172.30.12.120:65484
2018.03.19 21:03:41 LOG4[229]: CERT: No matching host name found
2018.03.19 21:03:41 LOG4[229]: Rejected by CERT at depth=0: C=IN, ST=KARNATAKA, L=BANGALORE, O=AHC, OU=healthcare, CN=172.30.12.120
2018.03.19 21:03:41 LOG3[229]: SSL_connect: 14090086: error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed
2018.03.19 21:03:41 LOG5[229]: Connection reset: 0 byte(s) sent to TLS, 0 byte(s) sent to socket

这里有什么问题?

【问题讨论】:

    标签: redis stunnel


    【解决方案1】:

    您应该将checkHost = 172.30.12.28:6390 替换为checkIP = 172.30.12.28

    checkHost 选项检查指定的 DNS 主机名或通配符是否与对等证书的 SAN 或 CN 字段中提供的任何匹配。

    要检查 IP 地址,必须使用 checkIP 选项。

    stunnel 在底层使用 OpenSSLX509_check_hostX509_check_ip_asc 函数。这是他们的description

    【讨论】:

      【解决方案2】:

      checkHost = <value> 检查对等证书主题中的 CN 是否对应于 <value>。根据日志,证书中的CN为172.30.12.120。所以你应该把客户端配置改成checkHost = 172.30.12.120

      虽然我不确定您的 TLS 配置是否经过深思熟虑,但这可能会起作用。

      您似乎没有进行客户端身份验证,因此您可以从客户端配置中删除 cert。此外,如果您在客户端计算机上有服务器证书,则可以使用“证书固定技术”:删除checkHost 选项并将verifyChain 替换为verifyPeer = yes。并且客户端机器上的stunnel.pem必须和服务器上的stunnel.pem相同。

      Stunnel documentation contains some simple examples for this.

      【讨论】:

        猜你喜欢
        • 2014-06-24
        • 2012-03-15
        • 2022-01-15
        • 2018-03-15
        • 2015-11-13
        • 2021-11-26
        • 2018-09-10
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多