2个不稳定版本

使用旧的Rust 2015

0.2.0 2016年8月12日
0.1.0 2016年5月6日

#18 in #hostname

Download history 382/week @ 2023-11-23 187/week @ 2023-11-30 303/week @ 2023-12-07 458/week @ 2023-12-14 285/week @ 2023-12-21 272/week @ 2023-12-28 264/week @ 2024-01-04 414/week @ 2024-01-11 342/week @ 2024-01-18 278/week @ 2024-01-25 164/week @ 2024-02-01 451/week @ 2024-02-08 569/week @ 2024-02-15 454/week @ 2024-02-22 470/week @ 2024-02-29 390/week @ 2024-03-07

1,933 每月下载量
9 个crate中使用 (直接使用2个)

MIT/Apache

20KB
355

rust-openssl-verify

Build Status

文档

OpenSSL的主机名验证。

直到版本1.1.0,OpenSSL不支持服务器提供的证书与客户端连接的域名相匹配的验证。这项检查非常重要,因为攻击者只需要获取某个域名的一个合法签名的证书就可以执行中间人攻击。

本crate的实现基于libcurl的。


lib.rs:

OpenSSL的主机名验证。

直到版本1.1.0,OpenSSL不支持服务器提供的证书与客户端连接的域名相匹配的验证。这项检查非常重要,因为攻击者只需要获取某个域名的一个合法签名的证书就可以执行中间人攻击。

本crate的实现基于libcurl的。

示例

在大多数情况下,应在OpenSSL的验证回调中使用verify_callback函数

extern crate openssl;
extern crate openssl_verify;

use std::net::TcpStream;
use openssl::ssl::{SslContext, SslMethod, SslStream, SSL_VERIFY_PEER, IntoSsl};
use openssl_verify::verify_callback;

let domain = "google.com";
let stream = TcpStream::connect((domain, 443)).unwrap();

let mut ctx = SslContext::new(SslMethod::Sslv23).unwrap();
ctx.set_default_verify_paths().unwrap();

let mut ssl = ctx.into_ssl().unwrap();
let domain = domain.to_owned();
ssl.set_verify_callback(SSL_VERIFY_PEER, move |p, x| verify_callback(&domain, p, x));

let ssl_stream = SslStream::connect(ssl, stream).unwrap();

依赖项

~1.7–3MB
~67K SLoC