1

シンプルな 2 ウェイ Apache SSL の設定についてアドバイスが欲しい。

openSSL を使用してキー ファイルと csr リクエストを作成しました。その後、それを CA に送信し、CA の crt ファイルと共に返された crt ファイルを受け取りました。

Apache http.conf ファイルを構成し、mod_ssl モジュールをロードした後に次のパラメーターを追加しました。

SSLエンジンオン

SSLCACertificateFile /local/fast/fcHome/deployment/apache01/conf/ssl.crt/ca.crt - 証明書とともに受信した CA ルート証明書

SSLCertificateFile /local/fast/fcHome/deployment/apache01/conf/ssl.crt/server.crt - サーバー用に CA から受け取った crt ファイル

SSLCertificateKeyFile /local/fast/fcHome/deployment/apache01/conf/ssl.key/server.key - csr の生成に使用されるキーファイル

SSLVerifyClientが必要

SSLVerifyDepth 10

次に、同じ CA によって署名された証明書を使用しているクライアントが、https サービスへの接続を試みています。接続時にクライアントが SSL ハンドシェーク エラーを受け取ります。

Apache エラー ログには次のように表示されます。

ssl_engine_kernel.c(1884): OpenSSL: 書き込み: SSLv3 読み取りクライアント証明書 B ssl_engine_kernel.c(1903): OpenSSL: 終了: SSLv3 読み取りクライアント証明書 B でエラー ssl_engine_kernel.c(1903): OpenSSL: 終了: SSLv3 読み取りクライアントでエラー証明書 B SSL ライブラリ エラー: 336105671 エラー:140890C7:SSL ルーチン: SSL3_GET_CLIENT_CERTIFICATE:ピアが証明書を返さなかった 検証のためにサーバーに既知の CA がありませんか?

これがなぜなのか理解できないようです。クライアント証明書が Versign によって署名されていても、サーバーの CA.crt ファイルと一致しない可能性はありますか?

どんな助けでも大歓迎です

4

2 に答える 2

0

クライアントは、サーバーに接続するためにクライアント証明書を提供する必要があります。

たとえば、Python では次のようになります。

import requests

cert = (client_cert_file_path, client_key_file_path)

resp = requests.get(url, cert=cert, verify=False)
于 2019-05-30T13:25:10.867 に答える