Windows安装配置C/C++(VS2017)OpenSSL开发环境配置教程

OpenSSL开发环境配置教程分享给大家,具体内容如下

【环境信息】

Windows 10 Enterprise Version 10.0.15063

下载地址:http://www.itellyou.cn/

Visual Studio Enterprise 2017 Version 15.2(26430.12)

下载地址:https://www.visualstudio.com/downloads

OpenSSL v1.1.0f

下载地址:https://slproweb.com/products/Win32OpenSSL.html

【提醒事项】

1。安装OpenSSL有两种方法,第一种为下载OpenSSL源代码并由自己编译后使用;第二种为下载已编译好的安装包,安装后直接可以使用。因第一种方法十分繁琐,需要安装Ruby进行编译,同时编译过程中可能产生各种各种的问题,因此在此采用第二种方法
2。每次新建工程之后都要配置一下OpenSSL开发环境
3。本人用的英文环境(英文操作系统+英文软件),因此操作界面语言可能会和中文环境有些不同,但并不影响功能

【具体步骤】

1。下载编译好的OpenSSL安装包(下载地址见上方),此处有Win32和Win64可选,这里的位数指的是你调用OpenSSL开发出来的软件的位数版本,而不是你计算机的位数。开发32位软件选择Win32,64位选择Win64,如果同时需要开发32位和64位的则下载两个。确定好位数后,下载Win32/64 OpenSSL v1.1.0f(版本号可能会因更新而有所不同),“Light版”为“轻量版”,即只包含了核心功能的版本,本文演示的为“非Light版”

2。下载完后打开安装,选择安装位置,64位和32位不要安装在同一个目录下

3。选择把dll复制到OpenSSL目录下(主要是为了以后好找,如果选择复制到Windows系统目录下,天知道复制到哪里去了。。。)

4。安装完成后,如果有捐款意向的可以捐款(别误会我不是在打广告。。。即使你捐款了我也拿不到一分钱),没有意向则取消掉钩,然后点“Finish”

5。新建一个解决方案,方便起见,这里新建一个控制台应用程序,这里我没有勾选“Create directory for solution”是因为这是一个单项目解决方案,所以我觉得没有必要多创建一层文件夹

6。勾选“Empty project”(这个是个人习惯,可能钩不钩并没有什么影响(“可能”这个词就很骚了。。。))

7。右击工程,选择“Properties”

8。点击左方的“VC++ Directories”,然后左上角选择“All Configurations”

9。右上角选择平台,这里演示x64的,如果是开发Win32软件就选Win32,如果要Win64和Win32兼顾,则分别配置一下(就是先选择Win32进行配置,然后再选择x64进行配置)

10。选中“Include Directories”,点击右边的下拉按钮,点击“Edit…”

11。点击右上方的“New Line”按钮,然后点击新行右边的“…”按钮

12。在弹出的目录选择界面中选择OpenSSL安装目录下的“include”文件夹,点击“Select Folder”,再点击“OK”完成添加

13。同样的方法,将安装目录下的“lib”文件夹添加到“Library Directories”中

14。将OpenSSL安装目录下bin文件夹中的“libcrypto-1_1-x64.dll”和“libssl-1_1-x64.dll”(名字后面的版本号可能因更新而不同)复制到工程目录下

15。将工程平台调整为自己需要的平台,这里演示x64平台

16。添加lib文件,这里有A、B两种方法,分别列出:

16-A:

在代码中添加

#pragma comment(lib,"libssl.lib")
#pragma comment(lib,"libcrypto.lib")

16-B:

在“Property Pages->Linker->Input->Additional Dependencies”添加libssl.lib和libcrypto.lib

【测试代码】

1。这段代码是用C++和Windows API写的
2。这里添加lib文件用的方法A,如果想用方法B则注释或删掉对应的“#pragma comment…”即可
3。这段代码是用https://www.baidu.com来测试的,如果想要修改为其他测试地址,除了修改第25行的wstrHost外,还应修改第77行的strWrite

#include<tchar.h>
#include<WinSock2.h>
#include<WS2tcpip.h>
#include<iostream>
#include<openssl\ssl.h>
#pragma comment(lib,"ws2_32.lib")
#pragma comment(lib,"libssl.lib")
#pragma comment(lib,"libcrypto.lib")

CONST INT RECV_SIZE = 8192;

INT _tmain(INT argc, LPTSTR argv[])
{
 //启动wsa
 WSADATA wsadData;
 WSAStartup(MAKEWORD(2, 2), &wsadData);

 //获取Host的IP地址等信息
 ADDRINFOT aiHints;
 ZeroMemory(&aiHints, sizeof(ADDRINFOT));
 aiHints.ai_family = AF_INET;
 aiHints.ai_flags = AI_PASSIVE;
 aiHints.ai_protocol = 0;
 aiHints.ai_socktype = SOCK_STREAM;
 std::wstring wstrHost = TEXT("www.baidu.com");
 PADDRINFOT paiResult;
 GetAddrInfo(wstrHost.c_str(), NULL, &aiHints, &paiResult);

 //创建套接字
 SOCKET sSocket = socket(AF_INET, SOCK_STREAM, 0);
 if (sSocket == SOCKET_ERROR)
 {
  std::wcout << "Error socket" << std::endl;
  return -1;
 }

 //连接Host
 SOCKADDR_IN sinHost;
 sinHost.sin_addr = ((LPSOCKADDR_IN)paiResult->ai_addr)->sin_addr;
 sinHost.sin_family = AF_INET;
 sinHost.sin_port = htons(443);
 if (connect(sSocket, (LPSOCKADDR)&sinHost, sizeof(SOCKADDR_IN)) == SOCKET_ERROR)
 {
  std::wcout << "Error connect" << std::endl;
  return -1;
 }

 //初始化OpenSSL库
 //(虽然不知道为什么,但是不加这三行似乎并不会导致什么问题,在不加这3行的情况下测试了几个网站并没有发现任何问题喵)
 SSL_library_init();
 SSLeay_add_ssl_algorithms();
 SSL_load_error_strings();

 //创建SSL会话环境等
 SSL_CTX *pctxSSL = SSL_CTX_new(TLSv1_2_client_method());
 if (pctxSSL == NULL)
 {
  std::wcout << "Error SSL_CTX_new" << std::endl;
  return -1;
 }
 SSL *psslSSL = SSL_new(pctxSSL);
 if (psslSSL == NULL)
 {
  std::wcout << "Error SSL_new" << std::endl;
  return -1;
 }
 SSL_set_fd(psslSSL, sSocket);
 INT iErrorConnect = SSL_connect(psslSSL);
 if (iErrorConnect < 0)
 {
  std::wcout << "Error SSL_connect, iErrorConnect=" << iErrorConnect << std::endl;
  return -1;
 }
 std::wcout << "SSL connection using " << SSL_get_cipher(psslSSL) << std::endl;

 //发包
 std::string strWrite =
  "GET https://www.baidu.com/ HTTP/1.1\r\n"
  "Host: www.baidu.com\r\n"
  "Connection: close\r\n\r\n";
 INT iErrorWrite = SSL_write(psslSSL, strWrite.c_str(), strWrite.length()) < 0;
 if (iErrorWrite < 0)
 {
  std::wcout << "Error SSL_write" << std::endl;
  return -1;
 }

 //收包并输出
 //这里接受的是char形式的,所以中文会乱码
 //如果要正常显示中文,需要再转换为wchar_t或std::wstring
 LPSTR lpszRead = new CHAR[RECV_SIZE];
 INT iLength=1;
 while (iLength >= 1)
 {
  iLength = SSL_read(psslSSL, lpszRead, RECV_SIZE - 1);
  if (iLength < 0)
  {
   std::wcout << "Error SSL_read" << std::endl;
   delete[] lpszRead;
   return -1;
  }
  lpszRead[iLength] = TEXT('\0');
  std::wcout << lpszRead;
 }
 delete[] lpszRead;

 return 0;
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Linux中openssl/opensslv.h找不到问题的解决方法

    前言 众所周知scrapy是Python中鼎鼎大名的爬虫框架,在安装scrapy过程中碰到了openssl某个文件找不到的问题,并进行了分析,记录之. 一. scrapy以及安装过程 Scrapy是python中鼎鼎大名的爬虫框架,笔者在Centos 7系统之上进行安装,发现了如下问题: >> pip install scrapy 由于安装过程中的过程信息比较多,这里只列出了其中的关键片段信息: running egg_info writing requirements to src/cryp

  • 浅析PKI加密解密 OpenSSL

    点击下载OpenSSL window与linux要区分的 解压文件 双击: Win32OpenSSL-0_9_8l_95895.exe 安装完毕后 \OpenSSL\bin\openssl.exe 输入命令,生成私钥 genrsa -out private-rsa.pem 输入命令,生成公钥 rsa -in private-rsa.pem -pubout -out public-rsa.cer

  • linux系统中使用openssl实现mysql主从复制

            证书准备: CA证书: 第一步:创建CA私钥 [root@localhost CA]# (umask 066;openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048) 第二步:生成自签证书 [root@localhost CA]# openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem  -days 7300 -out /etc/pki/CA/cacert.pem -

  • 如何正确使用Nodejs 的 c++ module 链接到 OpenSSL

    事情的起因是这样的, 因为某些原因, 最近在写 Nodejs 的 c++ module, 然后在js这边调用.  网络通信自然离不开ssl, 于是需要链接到Openssl的库. 我们本来的期望是,需要用户安装有Openssl的运行库, 然后我们的c++ module 动态链接到Openssl的so库上来运行. 起初一切看起来还不错,直到我们发现这个openssl的函数不能工作: PKCS7_sign() PKCS7_sign ( ) 我们发现: 如果我们的 c++ 模块与Openssl库动态链接

  • linux下安装openssl、swoole等扩展的详细步骤

    OpenSSL是一个开源的ssl技术,由于我需要使用php相关功能,需要获取https的文件所以必须安装这个东西了.下面给大家介绍下linux下安装openssl.swoole等扩展的详细步骤,一起看看吧! 编译安装 先来看编译安装的php,如果需要安装新的扩展,这里以安装openssl扩展为例进行说明 1.找到php源码目录,我们这里的源码位于 /opt/download/php-5.5.30 ,如果找不到了,查看当前php版本,通过 wget http://cn2.php.net/distr

  • Windows安装配置C/C++(VS2017)OpenSSL开发环境配置教程

    OpenSSL开发环境配置教程分享给大家,具体内容如下 [环境信息] Windows 10 Enterprise Version 10.0.15063 下载地址:http://www.itellyou.cn/) Visual Studio Enterprise 2017 Version 15.2(26430.12) 下载地址:https://www.visualstudio.com/downloads) OpenSSL v1.1.0f 下载地址:https://slproweb.com/prod

  • Ubuntu 20.04 下安装配置 VScode 的 C/C++ 开发环境(图文教程)

    前言: 之前安装了Ubuntu 18.04,结果在安装Codeblocks / VScode还是安装gcc,c/c++的时候出现了一堆错误(缺失依赖树等等问题,换源也无法成功),整了一个下午没有任何进展,网上找不到任何解决方法,于是只能重装了Ubuntu 20.04,之后Codeblocks倒是安装成功了,但是明明在已经安装了C/C++跟GCC编译包的情况,它仍然显示在该路径下找不到,无论路径是默认自动定位在/usr 还是在/usr/bin 之下仍然出现此情况,同样网上找不到任何解决方法,于是只

  • Windows下Java+MyBatis框架+MySQL的开发环境搭建教程

    MyBatis是一个Java持久化框架,它通过XML描述符或注解把对象与存储过程或SQL语句关联起来. MyBatis是在Apache许可证 2.0下分发的自由软件,是iBATIS 3.0的分支版本.其维护团队也包含iBATIS的初创成员. 与其他的对象关系映射框架不同,MyBatis并没有将Java对象与数据库表关联起来,而是将Java方法与SQL语句关联.MyBatis允许用户充分利用数据库的各种功能,例如存储过程.视图.各种复杂的查询以及某数据库的专有特性.如果要对遗留数据库.不规范的数据

  • visual studio code 配置C++开发环境的教程详解 (windows 开发环境)

    0 引言 最近帮GF(不幸变成ex了)配置C++开发环境,一开始想给她装个visual studio13完事,但是一想到自己安装以及使用时的诸多麻烦,就有点退却,觉得没有这个必要.正好了解到vscode大行其道,决定按照官网指示配置一版.由于本人非计算机科班出身,对编译原理了解不多,在配置环境的时候遇到了一些麻烦,参照网上的诸多教程,最后发现还是官网比较靠谱,所以结合自己配置的教训,写个帖子,希望能够帮到大家. 1 下载安装vscode 下载网址链接如下. https://code.visual

  • VS2017 Cordova Ionic2 移动开发环境搭建教程

    分享VS2017 Cordova Ionic2 移动开发环境搭建教程 1. 文档概述 本文档用于说明Visual Studio 2017下使用 Ionic 2进行跨平台开发的运行环境配置. 2. 安装环境 Windows10 3. 安装Visual Studio 2017community 3.1 官方下载地址:https://www.visualstudio.com/downloads/ 3.2 运行安装程序,需选中使用JavaScript的移动开发,如下图所示. 3.3 进行VS2017扩展

  • nodejs开发环境配置与使用

    先说下nodejs这个哦,有人以为它是一种语言,其实不是,它是一个平台,一个建立在google的V8引擎上的js运行平台,就是解析js,并提供自己 的一些API给用户调用.从目前的情况来看,这个发展情况还算好,明天都有好多的前端后台工程师在加入,连一些大神也在关注甚至写博客,昨晚我还看见一篇 文章写道一个外国的网站写了将近90搞nodejs的web插件,这个真牛啊!那学习中国东东对于我们来说最直接的能带来什么利益呢:前端人员由于熟悉 js那么可以基本简单学习下linux就可以上手了,那后台工程师

  • Java 开发环境配置步骤(介绍)

    背景 当要求系统启动一个应用程序时,系统会先查找当前命令是否是内部命令,若不是,则在当前目录下查找,如果仍没有找到,则在系统变量 Path 指定的路径去查找.JDK(Java Development Kit)包含了一系列开发工具,这些开发工具都在 JDK 的安装目录下,为了方便使用这些开发工具,我们有必要把 JDK 的安装目录设置了系统变量. 步骤 为了配置 JDK 的系统变量环境,我们需要设置三个系统变量,分别是 JAVA_HOME(可选),Path 和 CLASSPATH,下面是这三个变量的

  • Java开发环境配置方法

    下面通过图文并茂的方式给大家讲解下Java开发环境配置,具体内容如下: 对于JAVA新手来说,刚开始要学JAVA,而自己的电脑上毫无与JAVA开发有关的环境,应该如何进行配置呢? (安卓新手也需要JAVA开发环境) 第一步,下载.安装java JRE JRE (Java Runtime Environment),即Java运行环境,是运行JAVA程序所必须的环境的集合,包含各种类库. 1.Jre官方下载; http://www.oracle.com/technetwork/java/javase

  • webpack4.x开发环境配置详解

    本文实例讲述了webpack4.x开发环境配置方法.分享给大家供大家参考,具体如下: 写这篇文章的初衷在于,虽然网络上关于webpack的教程不少,但是大多已经过时,由于webpack版本更新后许多操作变化很大,很多教程的经验已经不适合.当我们使用npm安装webpack时,若不指定webpack的版本,将默认安装最新版,笔者测试时默认安装的是4.1.1,并不能照搬老教程的方法.为此,笔者进行了最新版配置的探索,使用的是windows操作系统,如果你的是webpack4.x版本,可参考进行配置.

  • win10环境下配置vscode python开发环境的教程详解

    前言 VScode是一个相当优秀的IDE,具备开源.跨平台.模块化.插件丰富.启动时间快.颜值高.可高度定制等等优秀的特质,不愧是微软爸爸的私生子. 所以用VScode来编写Python,也是相当的好用的. 1:安装python,我安装的是python3.7(注意python安装的时候要点击上add path的选型,即安装的时候顺便在windows系统上注册了python安装的路径) 2:安装vscode 3:vscode安装比较常用的插件: 4:设置vscode:添加python的路径(可以支

随机推荐