我正在尝试TunnelBlick
使用证书进行连接,但未成功(使用OS / X OpenVPN 2.2.1客户端)。这是我收到的(经过清理的)错误消息:
2012-01-11 11:18:26 TLS:来自**。**。**。**:1194的初始数据包,sid = 17a4a801 5012e004 2012-01-11 11:18:26验证错误:深度= 1,错误=证书链中的自签名证书: / C = US / ST = ** / L = ** / O = ** / CN = ** / emailAddress = ** 2012-01-11 11:18:26 TLS_ERROR:BIO读取tls_read_plaintext错误:错误:14090086:SSL例程:SSL3_GET_SERVER_CERTIFICATE:证书验证失败 2012-01-11 11:18:26 TLS错误:TLS对象->传入的纯文本读取错误 2012-01-11 11:18:26 TLS错误:TLS握手失败 2012-01-11 11:18:26 TCP / UDP:关闭套接字
现在,这是摩擦。我生成CSR 自己申请此证书,使用ca.crt由对方提供给我的文件(其实,他们这样做只是两次以确保)。
客户端配置中的相关条目为:
ca ca.crt
cert my.crt
key my.key
而且,...我可以通过以下方式验证密钥:
openssl verify -CAfile ca.crt my.crt
my.crt:确定
好吧,所以现在我彻底被迷住了。至此,我知道 CSR和密钥是使用适当的CSR生成的。实际上,这是执行此操作的命令:
openssl req -newkey rsa:2048 -new -out my.csr -keyout my.key
我也知道要这样做:
openssl x509 -subject -issuer -noout -in ca.crt
...
(眨!)
我找到了吗?
该命令的输出如下所示:(进行了部分 编辑)
subject = / C = US / ST = VA / L = ** / O = ** / CN = ** CA / emailAddress = ** 发行人= (相同)
而在来自OpenVPN的错误消息中,ST = 不完全相同:
验证错误:深度= 1,错误=证书链中的自签名证书:/ C = US / ST = 弗吉尼亚州 / L = ** / O = ** / CN = ** / emailAddress = **
“ VA”不完全等于“弗吉尼亚”。
openssl s_client -connect host:port -showcerts
,然后将接收到的证书的指纹与进行比较openssl x509 -noout -text -in ca.crt
。