下创建安全和非安全连接下覆盖

2021-08-24 淮安装修公司

经过3年来扎实有效的管理和训练 错误检测 显然 OpenSSL 抛出了某种类型的错误。这意味着什么?首先,您需要得到错误代码本身; ERR_get_error 可以完成这项任务;然后,需要将错误代码转换为错误字符串,它是一个指向由 SSL_load_error_strings 或 ERR_load_BIO_strings 加载到内存中的永久字符串的指针。可以在一个嵌套调用中完成这项操作。 表 1 略述了从错误栈检索错误的方法。清单 14 展示了如何打印文本字符串中的最后一个错误信息。 表 1. 从栈中检索错误清单 14. 打印出最后一个错误 printf(\"Error: %s\\n\", ERR_reason_error_string(ERR_get_error())); 您还可以让库给出预先格式化了的错误字符串。可以调用 ERR_error_string 来得到该字符串。该函数将错误代码和一个预分配的缓冲区作为参数。而这个缓冲区必须是 256 字节长。如果参数为 NULL,则 OpenSSL 会将字符串写入到一个长度为 256 字节的静态缓冲区中,并返回指向该缓冲区的指针。否则,它将返回您给出的指针。如果您选择的是静态缓冲区选项,那么在下一次调用 ERR_error_string 时,该缓冲区会被覆盖。 清单 15. 获得预先格式化的错误字符串 printf(\"%s\\n\", ERR_error_string(ERR_get_error(), NULL)); 您还可以将整个错误队列转储到文件或 BIO 中。可以通过 ERR_print_errors 或 ERR_print_errors_fp 来实现这项操作。队列是以可读格式被转储的。第一个函数将队列发送到 BIO ,第二个函数将队列发送到 FILE 。字符串格式如下(引自 OpenSSL 文档): [pid]:error:[error code]:[library name]:[function name]:[reason string]:[file name]:[line]:[optional text message]

其中, [pid] 是进程 ID, [error code] 是一个 8 位十六进制代码, [file name] 是 OpenSSL 库中的源代码文件, [line] 是源文件中的行号。 ERR_print_errors_fp(FILE *);ERR_print_errors(BIO *);

清单 16. 转储错误队列 开始做吧 使用 OpenSSL 创建基本的连接并不困难,但是,当试着确定该如何去做时,文档可能是一个小障碍。本文向您介绍了一些基本概念,但 OpenSSL 还有很多灵活之处有待发掘,而且您还可能需要一些高级设置,以便项目能够充分利用 SSL 的功能。 本文中有两个样例。一个样例展示了到 的非安全连接,另一个则展示了到 的安全 SSL 连接。两者都是连接到服务器并下载其主页。它们没有进行任何安全检查,而且库中的所有设置都是默认值 —— 作为本文的一部分,应该只将这些用于教学目的。 在任何支持的平台上,源代码的编译都应该是非常容易的,不过我建议您使用最新版本的 OpenSSL。在撰写本文时,OpenSSL 的最新版本是 0.9.7d。

贵阳治疗男科医院
武汉哪家妇科医院
银川治疗前列腺炎多少钱
为你推荐