如何在Windows下编译OpenSSL?

jfcszzkozrg 2014-01-02 02:49:33
加精
OpenSSL是一个开源的第三方库,它实现了SSL(Secure SocketLayer)和TLS(Transport Layer Security)协议,被广泛企业应用所采用。对于一般的开发人员而言,在http://slproweb.com/products/Win32OpenSSL.html 上下载已经编译好的OpenSSL库是省力省事的好办法。对于高级的开发用户,他们可能需要适当的修改或者裁剪OpenSSL,那么编译它就成为了一个关键问题。本篇博客就是主要讲述如何早Windows上编译OpenSSL库?

笔者按照一定的步骤成功了编译了OpenSSL库,步骤如下:

1)在微软网站下载并安装VS Studio,笔者写博客之时的最新版本是2013,连接如下:http://msdn.microsoft.com/subscriptions/downloads/#searchTerm=&ProductFamilyId=529&Languages=en&PageSize=10&PageIndex=0&FileId=0

2)从http://www.activestate.com/activeperl/downloads 下载并安装ActivePerl。

3)从http://www.nasm.us/ 下载并安装Nasm汇编器。

4)从http://www.openssl.org/下载并安装OpenSSL的最新Release包。笔者写博客之时,最新的OpenSSL包是:4459777 Feb 11 16:34:23 2013 openssl-1.0.1e.tar.gz (MD5) (SHA1) (PGP sign) [LATEST]

这里需要强调的是,读者未必需要完全按照笔者的步骤编译OpenSSL库,这里的部分次序是可以互换的。

在完成所有上述5步后,我们就可以解压缩OpenSSL包,在对它进行修改便可以编译了。在解压缩后,所有的源代码放在openssl-1.0.1e目录下,在此目录下,有两个文件INSTALL.W32, INSTALL.W64需要被关注。打开其中的任何一个文件,你会看到如何编译OpenSSL的各个步骤。这里,笔者将会再啰嗦一下。

1)打开VS Studio命令行工具,如图1所示。若编译64位OpenSSL库,请打开Visual Studio x64 Win64 Command Prompt,反之亦然。

图1

2)配置编译文件及安装目录;

编译Win32:perl Configure VC-WIN32 --prefix=c:\some\openssl\dir

编译Win64:perl Configure VC-WIN64A

“c:\some\openssl\dir”目录可以改成任何你希望的安装目录

3)搭建编译环境:

ms\do_nasm

ms\do_ms

对于64位编译,将ms\do_ms替换成ms\do_win64a

4)编译OpenSSL

nmake -f ms\ntdll.mak

5)安装编译生成的库到“c:\some\openssl\dir”

nmake -f ms\ntdll.mak install

执行后搞定了吗?若没有,是不是遗忘的中间的某个步骤?

【思考题】

1)在Win64编译中,有VC-WIN64I配置选项,它表示什么?

2)如果不想使用汇编代码,那么应该如何处理呢?



我相信,细心的读者在学习本篇博客后,在结合OpenSSL中的配置文件,一定会很快获得答案。这里笔者买个乖,希望能够对读者深入理解有个帮助!
原文转自:http://g.csdn.net/5261536
...全文
2201 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
nutxzycftqg 2014-02-20
  • 打赏
  • 举报
回复
必须顶
楊松坤 2014-02-19
  • 打赏
  • 举报
回复
顶一个QQ:125004485
beyondcj 2014-02-14
  • 打赏
  • 举报
回复
nutxzycftqg 2014-02-14
  • 打赏
  • 举报
回复
辛苦楼主分享,学习中
遥此比拟 2014-02-14
  • 打赏
  • 举报
回复
jfcszzkozrg 2014-02-13
  • 打赏
  • 举报
回复
引用 5 楼 clever101 的回复:
SSL是Secure Socket Layer(安全套接层协议)的缩写,可以在Internet上提供秘密性传输。Netscape公司在推出第一个Web浏览器的同时,提出了SSL协议标准。其目标是保证两个应用间通信的保密性和可靠性,可在服务器端和用户端同时实现支持。已成为Internet上保密通讯的工业标准。安全套接层协议能使用户/服务器应用之间的通信不被攻击者窃听,并且始终对服务器进行认证,还可选择对用户进行认证。SSL协议要求建立在可靠的传输层协议(TCP)之上。SSL协议的优势在于它是与应用层协议独立无关的,高层的应用层协议(例如:HTTP,FTP,TELNET等)能透明地建立于SSL协议之上。SSL协议在应用层协议通信之前就已经完成加密算法、通信密钥的协商及服务器认证工作。在此之后应用层协议所传送的数据都会被加密,从而保证通信的私密性。通过以上叙述,SSL协议提供的安全信道有以下三个特性: 1、数据的保密性 信息加密就是把明码的输入文件用加密算法转换成加密的文件以实现数据的保密。加密的过程需要用到密钥来加密数据然后再解密。没有了密钥,就无法解开加密的数据。数据加密之后,只有密钥要用一个安全的方法传送。加密过的数据可以公开地传送。 2、数据的完整性 加密也能保证数据的一致性。例如:消息验证码(MAC),能够校验用户提供的加密信息,接收者可以用MAC来校验加密数据,保证数据在传输过程中没有被篡改过。 3、安全验证 加密的另外一个用途是用来作为个人的标识,用户的密钥可以作为他的安全验证的标识。SSL是利用公开密钥的加密技术(RSA)来作为用户端与服务器端在传送机密资料时的加密通讯协定。 OpenSSL包含一个命令行工具用来完成OpenSSL库中的所有功能,更好的是,它可能已经安装到你的系统中了。 OpenSSL是一个强大的安全套接字层密码库,Apache使用它加密HTTPS,OpenSSH使用它加密SSH,但是,你不应该只将其作为一个库来使用,它还是一个多用途的、跨平台的密码工具。
  • 打赏
  • 举报
回复
clever101 2014-02-11
  • 打赏
  • 举报
回复
SSL是Secure Socket Layer(安全套接层协议)的缩写,可以在Internet上提供秘密性传输。Netscape公司在推出第一个Web浏览器的同时,提出了SSL协议标准。其目标是保证两个应用间通信的保密性和可靠性,可在服务器端和用户端同时实现支持。已成为Internet上保密通讯的工业标准。安全套接层协议能使用户/服务器应用之间的通信不被攻击者窃听,并且始终对服务器进行认证,还可选择对用户进行认证。SSL协议要求建立在可靠的传输层协议(TCP)之上。SSL协议的优势在于它是与应用层协议独立无关的,高层的应用层协议(例如:HTTP,FTP,TELNET等)能透明地建立于SSL协议之上。SSL协议在应用层协议通信之前就已经完成加密算法、通信密钥的协商及服务器认证工作。在此之后应用层协议所传送的数据都会被加密,从而保证通信的私密性。通过以上叙述,SSL协议提供的安全信道有以下三个特性: 1、数据的保密性 信息加密就是把明码的输入文件用加密算法转换成加密的文件以实现数据的保密。加密的过程需要用到密钥来加密数据然后再解密。没有了密钥,就无法解开加密的数据。数据加密之后,只有密钥要用一个安全的方法传送。加密过的数据可以公开地传送。 2、数据的完整性 加密也能保证数据的一致性。例如:消息验证码(MAC),能够校验用户提供的加密信息,接收者可以用MAC来校验加密数据,保证数据在传输过程中没有被篡改过。 3、安全验证 加密的另外一个用途是用来作为个人的标识,用户的密钥可以作为他的安全验证的标识。SSL是利用公开密钥的加密技术(RSA)来作为用户端与服务器端在传送机密资料时的加密通讯协定。 OpenSSL包含一个命令行工具用来完成OpenSSL库中的所有功能,更好的是,它可能已经安装到你的系统中了。 OpenSSL是一个强大的安全套接字层密码库,Apache使用它加密HTTPS,OpenSSH使用它加密SSH,但是,你不应该只将其作为一个库来使用,它还是一个多用途的、跨平台的密码工具。
huwenhu2007 2014-02-11
  • 打赏
  • 举报
回复
kwdhwyhs 2014-02-11
  • 打赏
  • 举报
回复
nzmbzdn 2014-01-02
  • 打赏
  • 举报
回复
nzmbzdn 2014-01-02
  • 打赏
  • 举报
回复
很好,很强大,值得学习

567

社区成员

发帖
与我相关
我的任务
社区描述
英特尔® 边缘计算,聚焦于边缘计算、AI、IoT等领域,为开发者提供丰富的开发资源、创新技术、解决方案与行业活动。
社区管理员
  • 英特尔技术社区
  • shere_lin
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧