OpenVPN:链中的自签名证书

我正在尝试使用证书来连接TunnelBlick (一个已知的OS / X OpenVPN 2.2.1客户端)非常不成功的连接。 这是我收到的(消毒)错误消息:

 TLS:来自**。**。**。的最初数据包**:1194,sid = 17a4a801 5012e004
 2012-01-11 11:18:26 VERIFY ERROR:深度= 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:证书validation失败
 2012-01-11 11:18:26 TLS错误:TLS对象 - >传入明文读取错误
 2012-01-11 11:18:26 TLS错误:TLS握手失败
 2012-01-11 11:18:26 TCP / UDP:closures套接字

现在,这是蹭。 我自己生成一个CSR来请求这个证书,使用另一方提供给我的ca.crt文件(事实上,他们做了两次,以确保)。

客户端configuration中的相关条目是:

 ca ca.crt cert my.crt key my.key 

另外…我可以通过这种方式validation密钥:

 opensslvalidation-CAfile ca.crt my.crt 
my.crt: 好的

好吧, 现在我彻底迷惑和难住了。 在这一点上,我知道企业社会责任和关键是使用适当的企业社会责任产生的。 事实上, 这是它的命令:

 openssl req -newkey rsa:2048 -new -out my.csr -keyout my.key 

我也知道这样做:

 openssl x509 -subject -issuer -noout -in ca.crt 

(眨!)

我刚刚find了吗?

该命令的输出如下所示:( 编辑一些)

 subject = / C = US / ST = VA / L = ** / O = ** / CN = ** CA / emailAddress = **
发行人= (相同)

而在来自OpenVPN的错误消息中,ST = 完全相同:

 VERIFY ERROR:深度= 1,错误=证书链中的自签名证书:/ C = US / ST = Virginia / L = ** / O = ** / CN = ** / emailAddress = **

“弗吉尼亚州”并不完全等同于“弗吉尼亚州”。

只是为了使这个线程完全封闭:这确实是问题。 我收到的“ca.crt”(“Virginia”)实际上不是我的同事使用的(“VA”),当时我们也没有注意到。

所以……基本上(纯粹用外行人的话来说), VPN试图走上权威链,寻找它期望find的ca.crt,但它从来没有(因为它不在那里)。

而且这也是密码系统如此出名的那些美妙信息之一:完全准确,但对于外行人来说却是完全神秘的。 (公平的说,encryption系统不喜欢泄露任何信息,因为他们认为他们正在与之交谈的人肯定是邪恶的夏娃 ,而不是好的爱丽丝或鲍勃。)