Как использовать tls.Config GetClientCertificate () - PullRequest
0 голосов
/ 14 июля 2020

Я использую Go http-клиент для взаимной проверки tls для разных конечных точек (или разных сертификатов клиента для разных серверов).

Не уверен, можно ли для этого использовать GetClientCertificate (). Я немного запутался в этом. Поскольку CertificateRequestInfo не содержит информации о конечной точке сервера или хосте.

  • crypto / tls
    GetClientCertificate func(*CertificateRequestInfo) (*Certificate, error) // Go 1.8

Было бы здорово, если бы кто-нибудь мог привести такой пример? или, может быть, любой другой способ удовлетворить это требование?

go version go1.13.3 linux/amd64

1 Ответ

0 голосов
/ 16 июля 2020

Один из подходов, от @ mar c, - создать по одному http.Client на каждый сервер для общения (или, по крайней мере, по одному клиенту на клиентский сертификат).

Но ограничение в том, что это сложно чтобы установить параметры для http.Transport, например MaxIdleConns. Другим ограничением является динамическое обновление или использование новых сертификатов.

Углубившись в исходный код Golang -1.14.5, возможно, http.Transport.DialTLSContext сможет удовлетворить требование, которое может создать соединение TLS (сертификат взят из контекста ) на уровне запроса. Есть ли у кого-нибудь идеи или комментарии по поводу этого подхода? Одним из недостатков является то, что настроить функции DialTLSContext () немного сложно, потому что для них хорошо реализованы базовые функции.

...