openssl SSL_get_servername
时间: 2023-07-10 16:05:06 浏览: 65
`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 握手期间发送一次,因此只能在握手期间获取。如果需要在握手后获取服务器主机名,需要另行实现。
相关问题
OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno 10054
OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno 10054是一个与网络连接相关的错误。这个错误通常出现在使用Git进行提交或克隆操作时。可以根据以下几种方法来解决这个问题:
1. 检查网络连接:首先,确保你的网络连接正常并且稳定。这个错误通常是由于网络过慢或不稳定导致的。可以尝试使用不同的网络连接,者连接到更稳定的网络上再次尝试操作。
2. 更换网络环境:如果你使用的是公共Wi-Fi或者公司的网络,有时候这些网络对Git操作进行了限制。尝试切换到一个不同的网络环境,例如使用个人热点或者使用家庭网络来进行操作。
3. 使用代理:如果你在使用Git时遇到了网络问题,可以尝试配置代理。可以使用`git config`命令来设置代理,具体的设置方法可以参考Git的官方文档。
4. 手动下载:如果以上方法都没有解决问题,你可以尝试手动下载所需的文件。在Git操作中遇到网络问题时,你可以手动从源码管理系统(例如GitHub)下载所需的文件,然后将其放置在正确的位置,再进行后续的操作。
总结起来,OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno 10054错误通常是由于网络连接问题引起的。通过检查网络连接、更换网络环境、使用代理或者手动下载文件等方法,可以解决这个问题。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* [提交Git时报错:OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno 10054](https://blog.csdn.net/qq_42203909/article/details/123882309)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"]
- *2* [安装vagrant报错OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno 54](https://download.csdn.net/download/weixin_38627213/14043306)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"]
- *3* [ERROR: RPC failed; curl 56 OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno 10054解决方法](https://blog.csdn.net/JISOOLUO/article/details/103625488)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"]
[ .reference_list ]
OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno 104
根据提供的引用内容,我了解到OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno 104是一个错误代码,通常是由于网络连接中断或超时引起的。这个错误可能会在使用git pull或下载virtualbox.box等操作时出现。解决这个问题的方法包括更换网络连接,手动下载文件,或者使用特定的命令来允许合并不相关的历史记录。如果您遇到了这个错误,您可以尝试上述方法来解决它。