Как мне использовать TLS_with_buffers_method () в BoringSSL для общения с сервером OpenSSL с самозаверяющим сертификатом? - PullRequest
0 голосов
/ 24 января 2020

Я пытаюсь использовать BoringSSL на клиенте, который общается с сервером, использующим OpenSSL. И клиент, и сервер находятся во внутренней сети и взаимодействуют с частным IP-адресом (192.168.xx). Одна из двух функций, предоставляемых библиотекой BoringSSL для создания SSL-соединения с SSL_CTX_new(), - TLS_with_buffers_method(). Я попробовал эту функцию, и ей не удалось установить sh с моим сервером OpenSSL, поскольку сертификат от сервера самоподписан.

Согласно руководству по портированию BoringSSL, приведенному ниже, он избегает создания объектов X509.

"The function TLS_with_buffers_method returns an SSL_METHOD that avoids creating X509 objects for certificates. Additionally, SSL_CTX_set0_buffer_pool can be used to install a pool on an SSL_CTX so that certificates can be deduplicated across connections and across SSL_CTXs."

Однако мой сервер использует OpenSSL использует сертификат, созданный с помощью x509 и самоподписанный. Я не знаком с деталями SSL-сертификата. Начиная с этот пост выглядит так, как будто x509 необходим для самостоятельной подписи.

Означает ли это, что мне нужно использовать самозаверяющий сертификат? BoringSSL здесь может не подойти?

1 Ответ

1 голос
/ 24 января 2020

1) Когда PORTING.md скажет несколько строк спустя

Чтобы использовать буферы, код приложения также должен реализовать собственную проверку сертификата с использованием SSL_ [CTX_] set_custom_verify. В противном случае все соединения потерпят неудачу с ошибкой проверки. Автоматическое сцепление также отключено при использовании буферов.

, поэтому, похоже, вам нужно это сделать. Обратите внимание, что там написано все , а не только самоподписанный. Облом.

2) Создание самозаверяющего сертификата с OpenSSL не требует подкоманды x509 . Как правильно говорят ответы по вашей ссылке, вы можете сделать два шага, например

openssl req -newkey parms -keyout keyfile -out reqfile # create key and CSR 
# if you want RSA with size per the config file, you can use -new (without value) instead
openssl x509 -req reqfile -signkey keyfile -out certfile # create cert from CSR

ИЛИ один шаг, например

openssl req -newkey parms -x509 -keyout keyfile -out certfile # create key and directly create cert 
# ditto
# that's the DASH-x509 OPTION on the req COMMAND, not the x509 COMMAND

, плюс вы также можете использовать РАЗНЫЙ второй шаг, например * 1022. *

openssl req -newkey parms -keyout keyfile -out reqfile # create key and CSR 
# ditto
openssl ca -in reqfile -selfsign -keyfile keyfile # create selfsigned cert from CSR
# but this also requires some other files to be set up and/or options added

и результат тот же. Если вы хотите добавить расширения, и в настоящее время вы часто делаете это специально для SSL / TLS, все три подхода могут сделать это, но детали немного различаются, поэтому, чтобы сделать это правильно, вы должны посмотреть разделы справочной страницы, которые на самом деле за то, что вы делаете .

И есть еще больше вариантов; Вы можете создать ключ отдельно (и есть несколько вариантов для , что ), а затем использовать либо req -new -key f (но не -newkey), а затем либо x509 -req или ca -selfsign -in или просто req -new -x509 -key f (то же самое).

Но все это в итоге дает один и тот же сертификат, и сертификат - не ваша проблема, а API BoringSSL.

...