下创建安全和非安全连接下计划

2021-08-24 淮安装修公司

-32,931 创建连接 将指向 SSL 上下文的指针作为惟一参数,使用 BIO_new_ssl_connect 创建 BIO 对象。还需要获得指向 SSL 结构的指针。在本文中,只将该指针用于 SSL_set_mode 函数。而这个函数是用来设置 SSL_MODE_AUTO_RETRY 标记的。使用这个选项进行设置,如果服务器突然希望进行一次新的握手,那么 OpenSSL 可以在后台处理它。如果没有这个选项,当服务器希望进行一次新的握手时,进行读或写操作都将返回一个错误,同时还会在该过程中设置 retry 标记。 bio = BIO_new_ssl_connect(ctx);BIO_get_ssl(bio, ssl);SSL_set_mode(ssl, SSL_MODE_AUTO_RETRY);

清单 10. 设置 BIO 对象设置 SSL 上下文结构之后,就可以创建连接了。主机名是使用 BIO_set_conn_hostname 函数设置的。主机名和端口的指定格式与前面的相同。该函数还可以打开到主机的连接。为了确认已经成功打开连接,必须执行对 BIO_do_connect 的调用。该调用还将执行握手来建立安全连接。 /* Attempt to connect */BIO_set_conn_hostname(bio, \"hostname:port\");/* Verify the connection opened and perform the handshake */if(BIO_do_connect(bio) = 0){ /* Handle failed connection */}

清单 11. 打开安全连接 连接建立后,必须检查证书,以确定它是否有效。实际上,OpenSSL 为我们完成了这项任务。如果证书有致命的问题(例如,哈希值无效),那么将无法建立连接。但是,如果证书的问题并不是致命的(当它已经过期或者尚不合法时),那么仍可以继续使用连接。 可以将 SSL 结构作为惟一参数,调用 SSL_get_verify_result 来查明证书是否通过了 OpenSSL 的检验。如果证书通过了包括信任检查在内的 OpenSSL 的内部检查,则返回 X509_V_OK。如果有地方出了问题,则返回一个错误代码,该代码被记录在命令行工具的 verify 选项下。 应该注意的是,验证失败并不意味着连接不能使用。是否应该使用连接取决于验证结果和安全方面的考虑。例如,失败的信任验证可能只是意味着没有可信任的证书。连接仍然可用,只是需要从思想上提高安全意识。 if(SSL_get_verify_result(ssl) != X509_V_OK){ /* Handle the failed verification */}

清单 12. 检查证书是否有效 这就是所需要的全部操作。通常,与服务器进行通信都要使用 BIO_read 和 BIO_write 。并且只需调用 BIO_free_all 或 BIO_reset ,就可以关闭连接,具体调用哪一个方法取决于是否重用 BIO。 必须在结束应用程序之前的某个时刻释放 SSL 上下文结构。可以调用 SSL_CTX_free 来释放该结构。 清单 13. 清除 SSL 上下文 SSL_CTX_free(ctx);

成都哪里能治疗男科
江中健胃消食片
南京好医院男科
为你推荐