如何在 Rust 的 hyper crate 中提取客户端证书?

问题描述 投票:0回答:0

我正在查看this示例,我试图了解如何读取客户端证书以从中提取

subject

有一个处理请求的

make_service_fn
函数,先被调用。从技术上讲,提取流及其数据是可能的:

let make_svc = make_service_fn(move |stream: &TlsStream| {
    let custom_field = stream.custom_field;

    async move { Ok::<_, Infallible>(service_fn(move |req| req_handler(req, api_key))) }
});

但问题是

poll_read
make_service_fn的主体
之后调用
,为时已晚。这能够提取客户端证书及其数据,但由于它被称为第二个,因此会导致未初始化的字段。

State::Streaming(ref mut stream) => {
  let client_certificates = stream.get_ref().1.peer_certificates();
  // extract data from the certificate and initialize custom_field
}

我认为在

req_handler
中提取它是不可能的,这就是我尝试这种方式的原因。

ssl rust certificate hyper
© www.soinside.com 2019 - 2024. All rights reserved.