b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

openssl_openssl生成证书_openssl社区(4)

电脑杂谈  发布时间:2017-05-15 23:03:42  来源:网络整理

可以调用SSL_CTX_load_verify_locations 来加载可信任证书库文件。这里要用到三个参数:上下文指针、可信任库文件的路径和文件名,以及证书所在目录的路径。必须指定可信任库文件或证书的目录。如果指定成功,则返回 1,如果遇到问题,则返回 0。

如果打算使用目录存储可信任库,那么必须要以特定的方式命名文件。OpenSSL 文档清楚地说明了应该如何去做,不过,OpenSSL 附带了一个名为c_rehash 的工具,它可以将文件夹配置为可用于SSL_CTX_load_verify_locations 的路径参数。

为了指定所有需要的验证证书,您可以根据需要命名任意数量的单独文件或文件夹。您还可以同时指定文件和文件夹。

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

设置 SSL 上下文结构之后,就可以创建连接了。主机名是使用BIO_set_conn_hostname 函数设置的。主机名和端口的指定格式与前面的相同。该函数还可以打开到主机的连接。为了确认已经成功打开连接,必须执行对BIO_do_connect 的调用。该调用还将执行握手来建立安全连接。

连接建立后,必须检查证书,以确定它是否有效。实际上,OpenSSL 为我们完成了这项任务。如果证书有致命的问题(例如,哈希值无效),那么将无法建立连接。但是,如果证书的问题并不是致命的(当它已经过期或者尚不合法时),那么仍可以继续使用连接。

可以将 SSL 结构作为惟一参数,调用SSL_get_verify_result 来查明证书是否通过了 OpenSSL 的检验。如果证书通过了包括信任检查在内的 OpenSSL 的内部检查,则返回 X509_V_OK。如果有地方出了问题,则返回一个错误代码,该代码被记录在命令行工具的verify 选项下。

应该注意的是,验证失败并不意味着连接不能使用。是否应该使用连接取决于验证结果和安全方面的考虑。例如,失败的信任验证可能只是意味着没有可信任的证书。连接仍然可用,只是需要从思想上提高安全意识。

这就是所需要的全部操作。通常,与服务器进行通信都要使用BIO_read 和BIO_write 。并且只需调用BIO_free_all 或BIO_reset ,就可以关闭连接,具体调用哪一个方法取决于是否重用 BIO。

必须在结束应用程序之前的某个时刻释放 SSL 上下文结构。可以调用SSL_CTX_free 来释放该结构。

显然 OpenSSL 抛出了某种类型的错误。这意味着什么?首先,您需要得到错误代码本身;ERR_get_error 可以完成这项任务;然后,需要将错误代码转换为错误字符串,它是一个指向由SSL_load_error_strings 或ERR_load_BIO_strings 加载到内存中的永久字符串的指针。可以在一个嵌套调用中完成这项操作。

表 1 略述了从错误栈检索错误的方法。清单 24 展示了如何打印文本字符串中的最后一个错误信息。

ERR_reason_error_string返回一个静态字符串的指针,然后可以将字符串显示在屏幕上、写入文件,或者以任何您希望的方式进行处理


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/tongxinshuyu/article-47341-4.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    热点图片
    拼命载入中...