当前环境
- 系统:win10
- 开发工具: vs2019
- openssl版本:Win64 OpenSSL v1.1.1i
安装OpenSSL有两种方法,第一种为下载OpenSSL源代码并由自己编译后使用;第二种为下载已编译好的安装包,安装后直接可以使用。因第一种方法十分繁琐,需要安装Ruby进行编译,同时编译过程中可能产生各种各种的问题,因此在此采用第二种方法
开始
1、从http://slproweb.com/products/Win32OpenSSL.html下载已经编译好的包含 lib 和 include 文件的安装包
- 此处有Win32和Win64可选,这里的位数指的是你调用OpenSSL开发出来的软件的位数版本,而不是你计算机的位数。
- 开发32位软件选择Win32,64位选择Win64,如果同时需要开发32位和64位的则下载两个
- 注意,不要下载 light 版本,因为 light 版本不带 lib 和 include。如下图:
2、下载完后打开安装,选择安装位置,64位和32位不要安装在同一个目录下。我这里安装到C:\Users\oceanstar\source\others\OpenSSL-Win64
3、选择把dll复制到OpenSSL目录下(主要是为了以后好找,如果选择复制到Windows系统目录下,天知道复制到哪里去了。。。)
OpenSSL 就这样安装完毕了,如果你按网上自己编译的方法去自己编译,恐怕要耗上你至少半天的时间。我们来看看他的目录结构。
- bin:包含了测试程序、存储证书和密钥的文件(*.pem)。
- include:包含了所有的头文件(例如:aes.h、md5.h)。
- lib:包含了所有的库文件(例如:libeay32.lib、ssleay32.lib)。
使用
1、控制台应用程序
2、右击工程,选择“属性”
3、选中“Include Directories”,点击右边的下拉按钮,点击“Edit…”
4、同样的方法,将安装目录下的“lib”文件夹添加到“Library Directories”中
5、将OpenSSL安装目录下bin文件夹中的“libcrypto-1_1-x64.dll”和“libssl-1_1-x64.dll”(名字后面的版本号可能因更新而不同)复制到工程目录下
6、将工程平台调整为自己需要的平台,这里演示x64平台
7、添加lib文件
7.1、方法一
在代码中添加
#pragma comment(lib,"libssl.lib")
#pragma comment(lib,"libcrypto.lib")
7.2、方法二
- 在“Property Pages->Linker->Input->Additional Dependencies”添加libssl.lib和libcrypto.lib
8、测试
#pragma comment(lib, "libssl.lib")
#pragma comment(lib, "libcrypto.lib")
#include <iostream>
#include <stdio.h>
#include "openssl/ssl.h"
int main()
{
SSL_CTX* ctx = NULL;
const SSL_METHOD* meth = NULL;
OpenSSL_add_ssl_algorithms(); // 初始化
SSL_load_error_strings(); // 为打印调试信息作准备
meth = TLSv1_client_method(); // 采用什么协议(SSLv2/SSLv3/TLSv1)在此指定
ctx = SSL_CTX_new(meth);
printf("%X\n", ctx);
return 0;
}
解决:将OpenSSL安装目录下bin文件夹中的“libcrypto-1_1-x64.dll”和“libssl-1_1-x64.dll”(名字后面的版本号可能因更新而不同)复制到以运行目录下
最终:执行成功