握手失败,并出现致命错误SSL_ERROR_SSL:错误:100000f7:SSL例程:OPENSSL_internal:WRONG_VERSION_NUMBER

时间:2020-10-16 20:45:41

标签: c++ tensorflow ssl grpc

我是grpc和tensorflow模型服务器的新手。我已经使用bazel从源代码构建了tensorflow模型服务器(TF2.2)。我正在尝试使用带有SSL身份验证的tensorflow模型服务器。而且我无法在客户端和服务器之间正确通信。 基本上,我试图在两个客户端(例如位于两个不同计算机上的客户端A和客户端B)的帮助下测试TFserver。客户端A使用带有默认SSL(无聊SSL)的grpc,客户端B使用带有OpenSSL 1.1.1g版本的GRPC。我的TFserver能够与客户端A进行通信,但不能与客户端B进行通信。这两个客户端代码都是用C ++编写的。并且两个代码相同,只是SSL版本不同。

我有以下问题:

  1. 我也有tf1.x版本的tensorflow模型服务器二进制文件。在该二进制文件中,我具有用于实现SSL身份验证的这些参数(--enable_secure,--pkcs_password_encrypted,--pkcs_store_path,--pkcs_password_keystore_path,--enable_client_auth和--ssl_config_file)。但是当我构建提供二进制文件的TF2.2模型时,我只能在其中获得--ssl_config_file参数。所以我的问题是在建立TF服务时我做错了什么还是忘记了传递一些论点?

  2. 每当我使用--ssl_config_file参数启动我的Tensorflow模型服务器时,都会引发此错误:

    E1017 00:51:53.358762382 5881 ssl_transport_security.cc:1285]握手失败,出现致命错误SSL_ERROR_SSL:错误:100000f7:SSL例程:OPENSSL_internal:WRONG_VERSION_NUMBER

    这个错误每隔5-10秒就会反复出现,甚至在我的客户端向服务器发送请求之前。正如我之前提到的,即使在TF模型服务器端收到此错误,我也可以与客户端A通信,即具有默认SSL版本(boringSSL)的GRPC的客户端。但是无法与使用OpenSSL-1.1.1g版本构建GRPC的客户端B通信。可能是什么原因?

  3. 我想知道,如何在TFmodel服务器端获取日志?我只是在获取启动日志和错误日志,而在客户端向服务器请求时没有获取日志。我曾尝试使用-v = 1,但对我而言无效。

我发布了我用来启动服务器的命令和服务器启动日志,但出现了错误:

Command : 
/home/user/TFSERVING/bin/tensorflow_model_server --port=9002 --model_config_file=/home/user/model_config.conf -v=1 --ssl_config_file=/home/user/TFSERVING/conf/tf_ssl.conf

server starting log : 
.............................
.............................
I external/org_tensorflow/tensorflow/cc/saved_model/reader.cc:54] Reading meta graph with tags { serve }
2020-10-17 01:51:46.912960: I external/org_tensorflow/tensorflow/cc/saved_model/loader.cc:295] Reading SavedModel debug info (if present) from: /home/dipesh/models/dnn_for_cdssm/1
2020-10-17 01:51:46.916942: I external/org_tensorflow/tensorflow/cc/saved_model/loader.cc:234] Restoring SavedModel bundle.
2020-10-17 01:51:46.940462: I external/org_tensorflow/tensorflow/cc/saved_model/loader.cc:183] Running initialization op on SavedModel bundle at path: /home/user/models/dnn_for_cdssm/1
2020-10-17 01:51:46.947514: I external/org_tensorflow/tensorflow/cc/saved_model/loader.cc:364] SavedModel load for tags { serve }; Status: success: OK. Took 36559 microseconds.
2020-10-17 01:51:46.948348: I tensorflow_serving/servables/tensorflow/saved_model_warmup.cc:105] No warmup data file found at /home/user/models/dnn_for_cdssm/1/assets.extra/tf_serving_warmup_requests
2020-10-17 01:51:46.949083: I tensorflow_serving/core/loader_harness.cc:87] Successfully loaded servable version {name: dnn_for_cdssm version: 1}
2020-10-17 01:51:46.955075: I tensorflow_serving/model_servers/server.cc:355] Running gRPC ModelServer at 0.0.0.0:9002 ...
E1017 01:55:30.274185306   11400 ssl_transport_security.cc:1285] Handshake failed with fatal error SSL_ERROR_SSL: error:100000f7:SSL routines:OPENSSL_internal:WRONG_VERSION_NUMBER.
E1017 01:55:50.273963581   11400 ssl_transport_security.cc:1285] Handshake failed with fatal error SSL_ERROR_SSL: error:100000f7:SSL routines:OPENSSL_internal:WRONG_VERSION_NUMBER.
E1017 01:56:10.273677580   11400 ssl_transport_security.cc:1285] Handshake failed with fatal error SSL_ERROR_SSL: error:100000f7:SSL routines:OPENSSL_internal:WRONG_VERSION_NUMBER.
E1017 01:56:30.273541640   11400 ssl_transport_security.cc:1285] Handshake failed with fatal error SSL_ERROR_SSL: error:100000f7:SSL routines:OPENSSL_internal:WRONG_VERSION_NUMBER.
E1017 01:56:50.273330934   11400 ssl_transport_security.cc:1285] Handshake failed with fatal error SSL_ERROR_SSL: error:100000f7:SSL routines:OPENSSL_internal:WRONG_VERSION_NUMBER.
E1017 01:57:05.273176164   11400 ssl_transport_security.cc:1285] Handshake failed with fatal error SSL_ERROR_SSL: error:100000f7:SSL routines:OPENSSL_internal:WRONG_VERSION_NUMBER.
E1017 01:57:20.273020963   11400 ssl_transport_security.cc:1285] Handshake failed with fatal error SSL_ERROR_SSL: error:100000f7:SSL routines:OPENSSL_internal:WRONG_VERSION_NUMBER.
E1017 01:57:40.272633395   11400 ssl_transport_security.cc:1285] Handshake failed with fatal error SSL_ERROR_SSL: error:100000f7:SSL routines:OPENSSL_internal:WRONG_VERSION_NUMBER.
E1017 01:57:55.272573695   11400 ssl_transport_security.cc:1285] Handshake failed with fatal error SSL_ERROR_SSL: error:100000f7:SSL routines:OPENSSL_internal:WRONG_VERSION_NUMBER.

我知道,我问了很多问题,但是我完全迷失了客户端和TF Server之间的安全连接。因此,我想介绍所有可能出错的可能原因。请帮助我完成此操作。

如果有人需要任何澄清,请告诉我。

提前谢谢!!!!

1 个答案:

答案 0 :(得分:0)

该错误来自基础SSL库。 您在客户端和服务器之间使用TLS还是mTLS? 您还有客户端日志吗?

我不熟悉TF参数,例如--pkcs_password_encrypted。 gRPC不支持密码加密密钥。