2013-05-20 20 views
9

Open SSLを使用した双方向証明書認証を使用したいと考えています。OpenSSL S_Serverを使用した着信SSLの確認

次のように我々はs_server開くと、クライアントは自分のサーバーに接続することができます:

openssl s_server -accept 12345 -cert our-cert.pem 

(当社-cert.pemをが私たちの証明書です。)

これが正常に動作します。しかし、私の要件は次のとおりです。

  1. は、受信した証明書が信頼できるCAと有効であることを確認し、
  2. は共通名が、我々はそれがあることを期待するものであることを確認します。

私はこれを試してみました:

openssl s_server -accept 12345 -cert our-cert.pem -CApath /etc/ssl/certs/ 

これは、クライアントが接続することができます。しかし、私の質問は次の通りです:

  1. SSLが有効であり、CAによって発行されたことを確認するにはどうすればよいですか?
  2. Common Nameを検証するにはどうすればよいですか?

答えて

6

サーバーでは、強制的にクライアントに証明書を提供するために、 "-Verify"オプションを追加する必要があります。深さは、クライアント証明書チェーンの最大長です。

これは、質問#1を処理する必要があります。

#2では、これらのOpenSSLコマンドを使用してコモンネームで制限する方法がないかどうかはわかりません。

あなたは、サーバー/クライアント用のOpenSSLのドキュメントがここでコマンドを見ることができます:

s_server

s_client

4

をこの使用CAをテストするには:これは、開きます

/usr/local/ssl/bin/openssl s_server -accept 7569 -cert /opt/GCTI/cert/host1_cert.pem -CAfile /opt/GCTI/cert/ca_cert.pem -key /opt/GCTI/cert/host1_priv_key.pem    

-cert is the public key file for this host 
-key is the private key file for this host 
-CAfile is the CA file, needed for self signed certificate 
-port is the port number to open up 

を指定された証明書とのTLS接続を受け入れるリスンポート7569

CAが有効でない場合は、最後の行には、(実際に質問が尋ねていない)テストを終了するには、このサーバーへの完全なエンドを接続するには、この

Verify return code: 21 (unable to verify the first certificate) 

よう

openssl s_client -showcerts -connect host1:7569 -CAfile /opt/GCTI/cert/ca_cert.pem 

を見ていきますhost1を実際のホストに置き換えてください。これにより、TLSサービスが有効で、同じCAによって署名された証明書が実行されていることが確認されます。

関連する問題