web-dev-qa-db-ja.com

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検証エラー:depth = 1、 エラー=証明書チェーン内の自己署名証明書: /C=US/ST=**/L=**/O=**/CN=**/emailAddress=**
2012-01-11 11:18:26 TLS_ERROR:BIO read tls_read_plaintext error :エラー: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を生成しました 私自身 この証明書を要求するには、 およそ ファイルは反対側から私に提供されました(実際、彼らは確認のために2回それを行いました)。

クライアント構成の関連エントリは次のとおりです。

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

そして、さらに... この方法でキーを確認できます:

 openssl verify -CAfile ca.crt my.crt 
my.crt: OK

そして  私は完全に不可解で困惑しています。この時点で、私は 知っている 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 =VA/ L = **/O = **/CN = ** CA/emailAddress = ** 
 issuer = (同じ)

一方、OpenVPNからのエラーメッセージでは、ST =は ない まったく同じ:

検証エラー:深さ= 1、エラー=証明書チェーンの自己署名証明書:/ C = US/ST =バージニア/L=**/O=**/CN=**/emailAddress=**

「VA」は「バージニア」とまったく同じではありません。

9
user106701

このスレッドを完全に閉鎖するだけです。それは確かに問題でした。私が受け取った「ca.crt」(「バージニア」)は、実際には私の同僚が使用していたもの(「VA」)ではなく、その時に私たちの誰も気づいていませんでした。

だから...基本的に(そして純粋に素人の言葉で)VPNは、権限のチェーンを歩き回ろうとして、それを探していました。見つかるはずでしたが、見つかりませんでした(存在しなかったため)。

そして、これは、暗号システムが非常によく知られている素晴らしいメッセージの1つです。完全に正確でありながら、初心者にとっては完全に神秘的です。 (そして、公平を期すために、暗号システムは、彼らが話している人が確かに邪悪であると推定しているため、何かについての情報を漏らしたくないEve、Nice AliceやBobではない。)

7
Mike Robinson