OpenVPN:链中的自签名证书

OpenVPN:链中的自签名证书

我尝试使用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=**/电子邮件地址=**
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   ca.crt
cert my.crt
key  my.key

而且,此外……我可以通过以下方式验证密钥:

openssl 验证-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

...

(眨!)

我刚才是不是寻找它?

该命令的输出如下所示: (略有修改)

主题= /C=US/ST=弗吉尼亚州/L=**/O=**/CN=** CA/电子邮件地址=**
發行人=(相同)

而在 OpenVPN 的错误消息中,ST= 是不是一模一样:

验证错误:深度=1,错误=证书链中的自签名证书:/C=US/ST=弗吉尼亚州/L=**/O=**/CN=**/电子邮件地址=**

“VA”并不完全等于“Virginia”。

答案1

只是为了结束这个话题:这确实是问题所在。我收到的“ca.crt”(“Virginia”)实际上并不是我同事使用的那个(“VA”),当时我们俩都没有注意到。

所以...基本上(纯粹用外行人能理解的术语)VPN 尝试沿着授权链查找它期望找到的 ca.crt,但始终找不到(因为它不在那里)。

这是其中之一精彩的加密系统以传递信息而闻名:完全准确,但对外行人来说却完全神秘。(公平地说,加密系统不喜欢泄露任何信息,因为它们认为与之交谈的人肯定是邪恶的前夕,对 Alice 和 Bob 来说不太好。)

相关内容