OpenSSL是什么
OpenSSL是一个开放源代码的软件库包,英文全称是Open Secure Sockets Layer,中文叫法是开放式安全套接层协议。应用程序可以使用这个包来进行安全通信,避免窃听,同时确认另一端连接者的身份。这个包广泛被应用在互联网的网页服务器上。
github : https://github.com/openssl/openssl
OpenSSL整个软件包大概可以分成三个主要的功能部分:SSL协议库、应用程序以及密码算法库。OpenSSL的目录结构自然也是围绕这三个功能部分进行规划的。
作为一个基于密码学的安全开发包,OpenSSL提供的功能相当强大和全面,囊括了主要的密码算法、常用的密钥和证书封装管理功能以及SSL协议,并提供了丰富的应用程序供测试或其它目的使用。
OpenSSL也不是绝对的完全,也有bug,漏洞。代码审查机构会对OpenSSL的源码检查,保证它最大限度的安全。
VS2019编译OpenSSL3.0源码
(1)openssl的源码是用perl配置的,要编译,需要先安装perl.
windows perl下载链接 https://www.activestate.com/products/perl/downloads/
(2)我们来编译的32位版本,用管理员身份执行vs2019的 x86 Native Tools Command Prompt for VS 2019 ,cd到openssl的代码目录,执行如下命令
perl Configure VC-WIN32
此时会出现如下界面,提示没有找到NASM
下载NASM,链接 https://www.nasm.us/pub/nasm/releasebuilds/?C=M;O=D
添加NASM到环境变量
关闭黑窗口,再次用管理员身份打开,再次输入perl命令
perl Configure VC-WIN32
此时提示,没有dmake, 输入命令安装 ppm install dmake, 安装比较慢,看网速,大概10分钟左右。
dmake安装ok后,再执行perl Configure VC-WIN32 出现下面这个界面时,表示makefile文件已经创建ok了。
(3)输入nmake编译
nmake的时间比较长,大概20分钟。我从18:51开始编译,19:10结束。
查看makefile文件可以查看生成的库及相关路径
(4)编译完成后安装
nmake install
此时会复制一些文件到makefile指定的目录,安装结果如下
上面就是OpenSSL编译后的lib,dll
VS2019配置C++ OpenSSL开发环境
OpenSSL VS2019的开发环境配置就和常用的SDK一样,在项目属性中配置头文件,lib, dll即可。
下面使用OpenSSL生成随机数的代码。
#include <iostream>
#include "openssl/rand.h"
#include <time.h>
using namespace std;
int main()
{
time_t t = time(0);
unsigned char buf[16] = { 0 };
//调用openssl产生随机数的方法
int ret = RAND_bytes(buf, sizeof(buf));
for (int i = 0; i < sizeof(buf); i++)
{
cout << (int)buf[i] << endl;
}
return 0;
}
如果运行ok, 那表示openssl就编译ok了。