zoukankan      html  css  js  c++  java
  • Open SSL 开发环境配置

    Open SSL 开发环境配置

    最后更新日期:2014-05-13

    阅读前提:VisualStudio的基本使用、Cent OS的基本使用

    环境: Windows 8.1 64bit英文版,Visual Studio 2013 Professional Update1英文版,ActivePerl 5.16.3,openssl-1.0.1g,Cent OS 6.5 (32位),openssl-1.0.1e

    在Windows下配置Open SSL开发环境

    编译32位Open SSL 依赖库

    [1]从Active Perl官网中下载ActivePerl 5.16.3 for Windows(64-bit,x64)并安装

    [2]从Open SSL官网中下载openssl-1.0.1g.tar.gz解压缩到d:sdk

    当然你也可以解压缩到其它路径

    [3]启动[Visual StudioTools] -> [VS2013 x86 Native Tools Command Prompt]程序,进入d:sdkopenssl_1.0.1g目录下运行命令

    perlConfigure VC-WIN32 no-asm

    在ms子目录下会生成do_nasm.bat等文件

    [4]在当前目录(D:sdKsopenssl-1.0.1g)调用下面的命令

    msdo_nasm.bat
    在当前目录的ms子目录下生成nt.make和ntdll.make文件

     

    [5]运行下面的命令,在out32目录下生成静态库

    nmake-f ms t.mak

    也可以使用下面的命令在out32dll目录下生成动态库

    nmake-f ms tdll.mak

    [6]在Visual Studio 2013下新建Win32控制台工程,不要自动生成代码,添加Source.cpp文件,用下面的代码测试Open SSL开发环境是否正常

    [cpp] view plain copy
     
    1. #include <string>   
    2. #include <iomanip>  
    3. #include <iostream>   
    4. #include <openssl/md5.h>  
    5.   
    6. using namespace std;  
    7.   
    8. #ifdef WIN32  
    9. #pragma comment(lib, "libeay32.lib")  
    10. #pragma comment(lib, "ssleay32.lib")  
    11. #endif  
    12.   
    13. int main(int argc, char* argv[])  
    14. {  
    15.     std::string str = "1234";  
    16.     unsigned char md[MD5_DIGEST_LENGTH];  
    17.     char tmp[3] = { 0 };  
    18.   
    19.     MD5((const unsigned char*)str.c_str(), str.size(), md);  
    20.     for (int i = 0; i < MD5_DIGEST_LENGTH; i++)  
    21.     {  
    22.         cout<<setw(2)<<setfill('0')<<hex<<(int)(md[i]);  
    23.     }  
    24.     cout << endl;  
    25.     return 0;  
    26. }  

    测试没问题后,就可以用类似的方式编译出Open SSL 64位动态库和静态库文件

    编译64位Open SSL依赖库

    启动[Visual Studio Tools] -> [VS2013 x64 Native Tools Command Prompt]程序,进入d:sdkopenssl_1.0.1g目录下运行下面六个命令

    perlConfigure VC-WIN64A no-asm

    msdo_win64a.bat

    nmake-f ms t.mak  clean

    nmake-f ms tdll.mak clean

    nmake- f ms t.mak

    nmake-f ms tdll.mak

             由于产生的OpenSSL64位依赖库同32位依赖库同名而且同位置,所以我们只要把刚才新建的Win32项目,在项目属性页的[Configulation Manager]中把平台属性改成x64就可以正常调用OpenSSL 64位依赖库了。上面命令中的“clean”参数是为了清除原来32位的文件否则nmake会失败,同理从64位依赖库改回32位也要用到“clean”参数。

            

      

    你还可以用下面的两条命令分别测试生成的Open SSL静态库和动态库是否正常

    nmake- f ms t.mak test

    nmake-f ms tdll.mak test

    如何想要把Open SSL生成的Win32依赖库放到指定地方参考可以用下面的命令

    perl Configure VC-WIN32 --prefix=F:/openssl

    Cent OS下安装Open SSL开发环境

    使用下面的两条命令安装Open SSL

    yum install openssl

    yum install openssl-devel

    使用下面的命令查看Open SSL安装位置

    whereis openssl

    Windows下的libeay32.lib、ssleay32.lib分别对应linux下的libcrypto.so、libssl.so文件,它们缺省在/usr/lib路径下,头文件在/usr/incude目录下。

    把上面的源代码复制到Cent OS后, 借助CMake工具编译、运行成功。

    下面是CMakeLists.txt文件清单

    [html] view plain copy
     
    1. #设置项目名称  
    2. PROJECT(OpenSSLTutorial1)  
    3.   
    4. #要求CMake的最低版本为2.8  
    5. CMAKE_MINIMUM_REQUIRED(VERSION 2.8)  
    6.   
    7. #添加头文件搜索路径  
    8. INCLUDE_DIRECTORIES(/usr/local/include)  
    9.   
    10. #添加库文件搜索路径  
    11. LINK_DIRECTORIES(/usr/local/lib)  
    12.   
    13. #用于将当前目录下的所有源文件的名字保存在变量 DIR_SRCS 中  
    14. AUX_SOURCE_DIRECTORY(. DIR_SRCS)  
    15.   
    16. #用于指定从一组源文件 source1 source2 … sourceN(在变量DIR_SRCS中定义)   
    17. #编译出一个可执行文件且命名为OpenSSLTutorial1  
    18. ADD_EXECUTABLE(OpenSSLTutorial1 ${DIR_SRCS})  
    19.   
    20. #添加编译可执行程序所需要的链接库、如果有多个中间用空格隔开  
    21. #第一个参数是可执行程序名称,第二个开始是依赖库  
    22. TARGET_LINK_LIBRARIES(OpenSSLTutorial1 ssl crypto)  

             libcrypto.so文件实现了各种加密算法,被OpenSSL用于实现SSL, TLSand S/MIME协议,也被用于SSH, OpenPGP等加密标准。

             libssl.so库文件实现SSL(theSecure Sockets Layer) v2/v3,和TLS(Transport Layer Security)协议。TLS与SSL在传输层对网络连接进行加密。

    补充阅读资料

    《调用OpenSSL实现数字签名功能例程(一)》

    http://blog.csdn.net/lee353086/article/details/7489863

    《调用OpenSSL实现数字签名功能例程(二)》

    http://blog.csdn.net/lee353086/article/details/7489870

    《VC2008下编译OpenSSL》

    http://blog.csdn.net/lee353086/article/details/7378835

    《64位Win7下用VS2010编译OpenSSL》

    http://blog.csdn.net/henter/article/details/8364532

    《wchar_t的问题》

    http://bbs.chinaunix.net/archiver/?tid-1350913.html

    《CentOS的软件安装方法rpm和yum》

    http://www.discuz.net/thread-3513163-1-1.html

    http://blog.csdn.net/lee353086/article/details/39433411

  • 相关阅读:
    Chapter 2 Open Book——14
    数据结构和算法[精选]----说明一下这个分类之后的作用
    Chapter 2 Open Book——13
    Chapter 2 Open Book——12
    myeclipse中打开java文件中文乱码
    div+css与table布局
    docker入门实战笔记
    docker常用命令
    ignite学习笔记
    java代码如何发送QQ邮件
  • 原文地址:https://www.cnblogs.com/findumars/p/7635857.html
Copyright © 2011-2022 走看看