Подключение клиента к grpc-серверу с поддержкой ssl. Ошибка Invalid padding

Создаю сервер:

 grpc::ServerBuilder builder;
 grpc::SslServerCredentialsOptions credential_options;
 credential_options.pem_root_certs = read_file("ca.crt")
 const std::string private_key = read_file("server.key");
 const std::string cert_chain =  read_file("server.crt");
 credential_options.pem_key_cert_pairs.push_back({private_key, cert_chain});

 auto channel_credentials = grpc::SslServerCredentials( credential_options );
 builder.AddListeningPort(StateService::instance().ipAddress(), channel_credentials);
 builder.RegisterService(grpcLocalService_.get());
 server_ = builder.BuildAndStart();

Сервер запускается успешно. Клиент:

    grpc::string target = std::string("localhost:") + std::to_string(port);
    grpc::SslCredentialsOptions credential_options = grpc::SslCredentialsOptions();
    credential_options.pem_root_certs = read_file("ca.crt");
    auto channel_credentials = grpc::SslCredentials(credential_options);
    std::shared_ptr<grpc::Channel> channel = grpc::CreateChannel(target, channel_credentials);
    _stub = RightsService::NewStub(channel);

В логах клиента получаю следующее

E0817 16:02:45.418716748 32243 ssl_transport_security.cc:1439] Handshake failed with fatal error SSL_ERROR_SSL: error:0407008A:rsa routines:RSA_padding_check_PKCS1_type_1:invalid padding.

Сертификаты и ключи создаю скриптом:

@echo off
set OPENSSL_CONF=c:\OpenSSL-Win64\bin\openssl.cfg

echo Generate CA key:
openssl genrsa -passout pass:1111 -des3 -out ca.key 4096

echo Generate CA certificate:
openssl req -passin pass:1111 -new -x509 -days 365 -key ca.key -out ca.crt -subj  "/C=US/ST=CA/L=Cupertino/O=YourCompany/OU=YourApp/CN=MyRootCA"

echo Generate server key:
openssl genrsa -passout pass:1111 -des3 -out server.key 4096

echo Generate server signing request:
openssl req -passin pass:1111 -new -key server.key -out server.csr -subj  "/C=US/ST=CA/L=Cupertino/O=YourCompany/OU=YourApp/CN=%COMPUTERNAME%"

echo Self-sign server certificate:
openssl x509 -req -passin pass:1111 -days 365 -in server.csr -CA ca.crt -CAkey ca.key -set_serial 01 -out server.crt

echo Remove passphrase from server key:
openssl rsa -passin pass:1111 -in server.key -out server.key

echo Generate client key
openssl genrsa -passout pass:1111 -des3 -out client.key 4096

echo Generate client signing request:
openssl req -passin pass:1111 -new -key client.key -out client.csr -subj  "/C=US/ST=CA/L=Cupertino/O=YourCompany/OU=YourApp/CN=%CLIENT-COMPUTERNAME%"

echo Self-sign client certificate:
openssl x509 -passin pass:1111 -req -days 365 -in client.csr -CA ca.crt -CAkey ca.key -set_serial 01 -out client.crt

echo Remove passphrase from client key:
openssl rsa -passin pass:1111 -in client.key -out client.key

Проверяю корневой сертификат и сертификат сервера:

 openssl verify -CAfile ca.crt -purpose sslserver server.crt

Получаю

server.crt: OK

Версия grpc: 1.32.0-dev

Что означает эта ошибка - invalid padding и что я делаю не так?


Ответы (0 шт):