Как повторить клиентский сертификат запроса?

#rust #hyper

#Ржавчина #hyper

Вопрос:

Я пишу простой сервер TLS / HTTP, используя hyper и rustls. Я хочу иметь возможность повторять детали запроса на сервер, отображая такую информацию, как версия tls, расширения, заголовки и тело.

Однако я не уверен, как я смогу получить доступ и вернуть любой клиентский сертификат, если он предоставлен запросом (хочу получить доступ к cert.pem из curl --i --cert ./cert.pem https://example.com/ ), поскольку кажется, что гипер-запросы его не предоставляют.

Комментарии:

1. Действительно ли curl отправляет сертификат? Я бы не ожидал, что он это сделает, поскольку это закрытый сертификат / ключ.

2. @PeterHall На самом деле, я не уверен — обязательно изучу это. В любом случае, этот вопрос касается запросов, отправляемых любым средством, которое отправляет клиентский сертификат.

3. Я имел в виду, что я не ожидал бы, что какой-либо клиент отправит закрытый ключ или сертификат. Он будет использовать его для подписи сообщений, но это все. Hyper почти наверняка этого не видит — реализация TLS сделала бы это, а протокол HTTP ничего об этом не знает.

4. @PeterHall Я думаю, что OP означает общедоступный сертификат TLS с сервера (поскольку это единственный сертификат, используемый в обычных запросах TLS), это правда? В этом случае curl --cert может быть не то, что вы ищете.

5. К сожалению, я не думаю, что есть какой-либо способ сделать это. Возможно, вы могли бы получить доступ к сертификату X.509 из базового соединителя TLS (например, get_peer_certificates для rustls , peer_certificate для OpenSSL или native_tls )