openssl SSL_get_servername
时间: 2023-07-10 22:05:06 浏览: 329
openssl_aes_128_ecb部分翻译
`SSL_get_servername` 是 OpenSSL 库中的一个函数,用于获取 SSL/TLS 握手过程中客户端发送的 Server Name Indication (SNI),即客户端请求访问的服务器主机名。
函数原型如下:
```c
const char *SSL_get_servername(const SSL *ssl, const int type);
```
其中,参数 `ssl` 是一个 SSL/TLS 连接对象,参数 `type` 指定了 SNI 的类型,一般为 `TLSEXT_NAMETYPE_host`。函数返回一个指向服务器主机名的常量字符串指针,如果没有设置 SNI,返回 `NULL`。
使用示例:
```c
SSL *ssl = ...;
const char *hostname = SSL_get_servername(ssl, TLSEXT_NAMETYPE_host);
if (hostname == NULL) {
// SNI 未设置
} else {
// 处理 hostname
}
```
需要注意的是,SNI 只在 SSL/TLS 握手期间发送一次,因此只能在握手期间获取。如果需要在握手后获取服务器主机名,需要另行实现。
阅读全文