#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 )