您当前的位置: 首页 > 技术文章 > 操作系统

openssl在Windows系统下的编译

作者: 时间:2023-04-10阅读数:人阅读


前言

编译openssl32位的windows 版本,刚开始各种问题踩了好多坑,终于参考了多个网友的建议完成了,所以写下安装步骤。


使用步骤

1.安装环境

1.1安装Perl ,直接傻瓜式安装就行,环境变量自己配好了

查看安装成功,在cmd中 输入:perl --version 查看安装成功与否

C:\Users\Hxl>perl --version

如下图所示

1.2安装NASM,配置环境变量

点击程序直接安装,然后配置环境变量
在这里插入图片描述

1.3安装Visual studio

在这里插入图片描述

1.4安装工具

  • Visual studio

链接:https://pan.baidu.com/s/1xYXJ4MDYr0gEUmzxwAaFPw
提取码:0000

  • perl

链接:https://pan.baidu.com/s/1cYgePxzK6gzecQf2-yF1MA
提取码:0000

  • openssl (1开头的版本)

链接:https://pan.baidu.com/s/1-da2_vDqhT2GP5hH1Iu0tQ
提取码:0000

  • nasm

链接:https://pan.baidu.com/s/1FJaeeMgY4rM6NUkVYC5Cwg
提取码:0000

2.openssl编译

  1. 解压openssl-1.0.2p.tar.gz压缩文件到本地文件夹中,
    例如D盘 D:\openssl32
  2. 用管理员的身份打开visual studio编译器 在开始→程序栏目→x86 Navite Tools Command Prompt for VS 2022,右键这个黑色命令解释器,点击更多,管理员身份打开
    我要装的是32位的openssl,选择的是X86,装64位,就选择下面那个X64的Navite Tools Command Prompt for VS 2022编辑器在这里插入图片描述 3. 然后在编辑器中进入解压过openssl-1.0.2p.tar.gz盘中,
**********************************************************************
** Visual Studio 2022 Developer Command Prompt v17.2.4
** Copyright (c) 2022 Microsoft Corporation
**********************************************************************
[vcvarsall.bat] Environment initialized for: 'x86'
C:\Windows\System32>D:
D:\>cd D:\openssl32\openssl-1.0.2p
D:\openssl32\openssl-1.0.2p>perl configure VC-WIN32

得到如下结果

D:\openssl32\openssl-1.0.2p>perl configure VC-WIN32
Configuring for VC-WIN32
    no-ec_nistp_64_gcc_128 [default]  OPENSSL_NO_EC_NISTP_64_GCC_128 (skip dir)
    no-gmp          [default]  OPENSSL_NO_GMP (skip dir)
    no-jpake        [experimental] OPENSSL_NO_JPAKE (skip dir)
    no-krb5         [krb5-flavor not specified] OPENSSL_NO_KRB5
    no-libunbound   [experimental] OPENSSL_NO_LIBUNBOUND (skip dir)
    no-md2          [default]  OPENSSL_NO_MD2 (skip dir)
    no-rc5          [default]  OPENSSL_NO_RC5 (skip dir)
    no-rfc3779      [default]  OPENSSL_NO_RFC3779 (skip dir)
    no-sctp         [default]  OPENSSL_NO_SCTP (skip dir)
    no-shared       [default]
    no-ssl-trace    [default]  OPENSSL_NO_SSL_TRACE (skip dir)
    no-ssl2         [default]  OPENSSL_NO_SSL2 (skip dir)
    no-store        [experimental] OPENSSL_NO_STORE (skip dir)
    no-unit-test    [default]  OPENSSL_NO_UNIT_TEST (skip dir)
    no-weak-ssl-ciphers [default]  OPENSSL_NO_WEAK_SSL_CIPHERS (skip dir)
    no-zlib         [default]
    no-zlib-dynamic [default]
IsMK1MF=1
CC            =cl
CFLAG         =-DOPENSSL_THREADS  -DDSO_WIN32 -W3 -WX -Gs0 -GF -Gy -nologo -DOPENSSL_SYSNAME_WIN32 -DWIN32_LEAN_AND_MEAN -DL_ENDIAN -D_CRT_SECURE_NO_DEPRECATE -D_WINSOCK_DEPRECATED_NO_WARNINGS -DOPENSSL_BN_ASM_PART_WORDS -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_GF2m -DRC4_ASM -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DRMD160_ASM -DAES_ASM -DVPAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM
EX_LIBS       =
CPUID_OBJ     =x86cpuid.o
BN_ASM        =bn-586.o co-586.o x86-mont.o x86-gf2m.o
EC_ASM        =
DES_ENC       =des-586.o crypt586.o
AES_ENC       =aes-586.o vpaes-x86.o aesni-x86.o
BF_ENC        =bf-586.o
CAST_ENC      =cast-586.o
RC4_ENC       =rc4-586.o
RC5_ENC       =rc5-586.o
MD5_OBJ_ASM   =md5-586.o
SHA1_OBJ_ASM  =sha1-586.o sha256-586.o sha512-586.o
RMD160_OBJ_ASM=rmd-586.o
CMLL_ENC      =cmll-x86.o
MODES_OBJ     =ghash-x86.o
ENGINES_OBJ   =
PROCESSOR     =
RANLIB        =true
ARFLAGS       =
PERL          =perl
THIRTY_TWO_BIT mode
BN_LLONG mode
RC4_INDEX mode
RC4_CHUNK is undefined

Configured for VC-WIN32.
  1. 编辑ms/do_nasm.bat,在ms文件夹下生成nt.make和ntdll.make文件
ms/do_nasm.bat

这时在相应的文件夹中有一个mekefile文件,写入:nmake -f ms\nt.mak(静态库)开始编译

D:\openssl32\openssl-1.0.2p>nmake -f ms\nt.mak

得到控制台结果

Microsoft (R) 程序维护实用工具 14.32.31329.0 版
版权所有 (C) Microsoft Corporation。  保留所有权利。

Building OpenSSL
        perl util/mkdir-p.pl "tmp32.dbg"
created directory `tmp32.dbg'
        perl util/mkdir-p.pl "out32.dbg"
created directory `out32.dbg'
        perl util/mkdir-p.pl "inc32"
created directory `inc32'
        perl util/mkdir-p.pl "inc32\openssl"
created directory `inc32/openssl'
        perl .\util\copy-if-different.pl ".\.\e_os.h" "tmp32.dbg\e_os.h"
Copying: ././e_os.h to tmp32.dbg/e_os.h
        perl .\util\copy-if-different.pl ".\crypto\cryptlib.h" "tmp32.dbg\cryptlib.h"
Copying: ./crypto/cryptlib.h to tmp32.dbg/cryptlib.h
        perl .\util\copy-if-different.pl ".\crypto\buildinf.h" "tmp32.dbg\buildinf.h"
Copying: ./crypto/buildinf.h to tmp32.dbg/buildinf.h
        perl .\util\copy-if-different.pl ".\crypto\md32_common.h" "tmp32.dbg\md32_common.h"
Copying: ./crypto/md32_common.h to tmp32.dbg/md32_common.h
        perl .\util\copy-if-different.pl ".\crypto\o_time.h" "tmp32.dbg\o_time.h"
Copying: ./crypto/o_time.h to tmp32.dbg/o_time.h
        perl .\util\copy-if-different.pl ".\crypto\o_str.h" "tmp32.dbg\o_str.h"
Copying: ./crypto/o_str.h to tmp32.dbg/o_str.h
        perl .\util\copy-if-different.pl ".\crypto\o_dir.h" "tmp32.dbg\o_dir.h"

复制了一部分到上面,太多了,编译一段时间,然后在out32dll文件夹中可以看到lib、exe、pbd文件
在这里插入图片描述
注:从openssl 1.1.0版本以后就不再有ms\do_*.bat这样的文件,而是直接使用nmake命令就行了,详见官方文档
5. nmake -f ms\nt.mak test

nmake -f ms\ntdll.mak test

测试控制栏最后几行的结果

client authentication
server authentication
depth=1 /C=AU/O=Dodgy Brothers/CN=Dodgy CA
depth=0 /C=AU/O=Dodgy Brothers/CN=Brother 1/CN=Brother 2
depth=1 /C=AU/O=Dodgy Brothers/CN=Dodgy CA
depth=0 /C=AU/O=Dodgy Brothers/CN=Brother 1/CN=Brother 2
TLSv1.2, cipher TLSv1/SSLv3 ECDHE-RSA-AES256-GCM-SHA384, 2048 bit RSA
1 handshakes of 256 bytes done
passed all tests
  1. nmake -f ms\nt.mak install
Microsoft (R) 程序维护实用工具 14.32.31329.0 版
版权所有 (C) Microsoft Corporation。  保留所有权利。

Building OpenSSL
        perl util/mkdir-p.pl "\usr\local\ssl"
created directory `/usr'
created directory `/usr/local'
created directory `/usr/local/ssl'
        perl util/mkdir-p.pl "\usr\local\ssl\bin"
created directory `/usr/local/ssl/bin'
        perl util/mkdir-p.pl "\usr\local\ssl\include"
created directory `/usr/local/ssl/include'
        perl util/mkdir-p.pl "\usr\local\ssl\include\openssl"
created directory `/usr/local/ssl/include/openssl'

这里不太理解为什么自动在D盘建了一个usr文件,明明自己已经指定了地址的,然后编译的结果都在这个文件夹里(大家要是知道原因,还请指导)

  1. 打开uer文件,目录如下
  • bin 可执行文件,以及openssl库的动态链接文件
  • include 编程时要用的头文件
  • lib 静态链接文件
  • ssl ssl的配置文件

总结

编译完成

本站所有文章、数据、图片均来自互联网,一切版权均归源网站或源作者所有。

如果侵犯了你的权益请来信告知我们删除。邮箱:licqi@yunshuaiweb.com

加载中~
如果您对我们的成果表示认同并且觉得对你有所帮助可以给我们捐赠。您的帮助是对我们最大的支持和动力!
捐赠我们
扫码支持 扫码支持
扫码捐赠,你说多少就多少
2
5
10
20
50
自定义
您当前余额:元
支付宝
微信
余额

打开支付宝扫一扫,即可进行扫码捐赠哦

打开微信扫一扫,即可进行扫码捐赠哦

打开QQ钱包扫一扫,即可进行扫码捐赠哦