クライアントがSSLを使用して接続を暗号化するためにC++で「ターミナル」をプログラミングしています。私はBoost::asio
を使用してソケットとSSLを処理します。私はこのようなSSL-コンテキスト始めていますSSLv3エラーでブーストSSLサーバが失敗する
:あなたが見ることができるように
boost::asio::ssl::context context_(io_service_, boost::asio::ssl::context::tlsv1);
を、私はTLSv1
にSSL-バージョンを設定します。
これは、コンテキスト・オプションは次のとおりです。
context_.set_options(boost::asio::ssl::context::default_workarounds
| boost::asio::ssl::context::no_sslv2
| boost::asio::ssl::context::single_dh_use);
context_.use_certificate_chain_file("CERTS/server.crt");
context_.use_private_key_file("CERTS/server.key", boost::asio::ssl::context::pem);
context_.use_tmp_dh_file("CERTS/dh512.pem");
私は今conntect openssl s_client -connect localhost:8000 -tls1
と私のサーバーへのハンドシェイクがエラーでサーバーサイドに失敗した場合:
「のSSLv3警告握手失敗」
また、私はクライアント側で奇妙な行に気づいた:
"140030998197920:エラー:14082174:SSLルーチン:SSL3_CHECK_CERT_AND_ALGORITHM:小さすぎるDHキー:s3_clnt.c:3329:"
これは何を意味するのでしょうか?私は証明書を作成したときに間違いを犯しましたか?私はそれを正確にthe answer to this questionに記載されているようにしました。
boost :: asio :: ssl :: context :: no_sslv2のみを使用すると、SSLv3レコード層を使用できることを意味します。あなたはおそらく 'boost :: asio :: ssl :: context :: no_sslv3'でORをとるべきです。 'boost :: asio :: ssl :: context :: single_dh_use'はパフォーマンスを低下させます。 DHを小さすぎる問題については、[コード1でSSL操作ができませんでした:dhキーが小さすぎます](http://)を参照してください。 stackoverflow.com/a/30706878/608639)。 – jww