引用http://blog.chinaunix.net/uid-20479991-id-216269.html
Windows7系统下安装OpenSSL攻略
发表于1年前(2012-08-20 16:29) 阅读(3626) | 评论(2) 2人收藏此文章, 我要收藏
赞0
OpenSSL
前提:安装了vc++6.0(配置时用到其中工具)、ActivePerl 、openssl-1.0.1c.zip
过程:
一、准备:下载并安装perl,解压openssl-1.0.1c
二、运行“cmd”,cd改变目录到openssl-1.0.1c源码所在目录
三、执行" perl Configure VC-WIN32 --prefix=c:/openssl-1.0.1c" 目的是指定OpenSSL编译好后的安装路径。
四、运行“ms\do_ms”
五、运行“nmake -f ms\ntdll.mak”
所遇问题
1、此时出现“nmake不是内部或者外部命令或者.bat文件” 的情况
解决方法:nmake.exe的文件,这个文件应该位于C:\Program Files\Microsoft Visual Studio\VC98\Bin目录中,配置环境变量即可。操作:右键单击我的电脑-->属性-->高级-->环境变量--系统变量(找到path)-->编辑,将C:\Program Files\Microsoft Visual Studio\VC98\Bin加到未尾(注意要和前一个路径用";"隔开,并以";"结束;最后要提醒一点,一定要重启机器,新的path才会生效;
2、 此时以为问题解决,重新执行命令“nmake -f ms\ntdll.mak”发现弹出警告框,标题为cl.exe提示缺少mspdb60.dll。
解决缺少mspdb60.dll问题将目录\Common\MSDev98\Bin下的mspdb60.dll文件,复制到C:\Program Files\Microsoft Visual Studio\VC98\BIN下,VC6.0即可正常运行。
3、此时以为问题解决,重新运行“nmake -f ms\ntdll.mak”命令,发现出现问题,
“ms\uplink.c(11) : fatal error C1083: Cannot open include file: 'windows.h': No such file or directory NMAKE : fatal error U1077: 'cl' : return code '0x2' Stop.错误的时候”
解决:先运行vcvars32命令,vcvars32.bat用于设置VC命令行编译的环境变量。
重新运行“nmake -f ms\ntdll.mak”命令,大功告成。执行通过
4、检查下是否成功,执行命令:“nmake -f ms\ntdll.mak test”。
六、运行“nmake -f ms\ntdll.mak install”安装编译后的OpenSSL到指定目录。
七、查看安装结果C:\openssl-0.9.8.e下包含了三个文件夹Bin、include、lib。bin下包括openssl.exe(openssl指令程序)、ssleay32.dll(ssl协议动态库)、libeay32.dll(密码算法库)。lib下包括libeay32.lib,ssleay32.lib。Include目录包括了OpenSSL开发设计的头文件。
至此,OpenSSL在windows下编译完成了。
最后一步编译时可能出现错误:“NMAKE : fatal error U1077: 'ml' : return code '0x1' Stop.”,产生这种错误的可能原因是vc6的bin目录下没有ml.exe这个文件。该文件包含在MASM程序中。我的解决办法是到网上下载了一个MASM程序( http://www.masm32.com/masmdl.htm),安装上之后把ml.exe拷贝到VC6的bin目录下即可解决。
若仍未解决:
解决方法:
google几次,也没找到解决方法。仔细分析出错信息,原来是MASM的版本过低, 我安装的MASM32中
C:/masm32/bin>ml
Microsoft (R) Macro Assembler Version 6.14.8444
Copyright (C) Microsoft Corp 1981-1997. All rights reserv
版本是 6.14.8444,而错误提示中推荐8.00 or later ,所以只好下载MASM的高版本.这里安装MASM8.0
MASM8.0可以从微软网站自由获取,地址如下:
http://www.microsoft.com/downloads/details.aspx?familyid=7A1C9DA0-0510-44A2-B042-7EF370530C64&displaylang=en
获取后,得到的是安装包MASMSetup.exe,没有装VC2005的话,无法安装,解决方法如下:
用winrar解压缩MASMSetup.exe得到:setup.exe
继续用winrar解压缩setup.exe 得到:vc_masm1.cab
继续用winrar解压缩vc_masm1.cab得到:FL_ml_exe__..... (很长的文件名,省略),将这个文件重命名为ml.exe
测试得到的ml.exe , 应该显示: Microsoft (R) Macro Assembler Version 8.00.50727.104
将ml.exe 拷贝到你的工作目录,即可正常使用。
将生成的ml.exe拷贝到C:/masm32/bin目录下,将原来的ml.exe覆盖即可。
针对我试验了这么多次总会出现错误,又搜集了网友的意见把环境变量重新设置一下。
set path=%path%;c:/openssl-1.0.1c/;c:/masm32/bin
编译动态库: nmake -f ms\ntdll.mak
编译静态库: nmake -f ms\nt.mak
测试动态库: nmake -f ms\ntdll.mak test
测试静态库: nmake -f ms\nt.mak test
安装动态库: nmake -f ms\ntdll.mak install
安装静态库: nmake -f ms\nt.mak install
3. 如何使用openssl?
a) library path -> C:\devdiv\openssl-0.9.8i\out32
b) include path -> C:\devdiv\openssl-0.9.8i\include
c) 库文件 -> libeay32.lib, ssleay32.lib
4. 配置文件在哪里?
C:\devdiv\openssl-0.9.8i\apps\openssl.cnf
5. 关于key:
key一般分为public key和private key,在openssl中,private key中包含了public key的信息,所以public key不需要单独创建. 如何创建一个RSA key?
openssl.exe genrsa -des3 -out privatekey.pem 2048 (需要添加密码保护)
openssl.exe genrsa -out privatekey.pem 2048
6. 关于certificates(证书文件), 如何创建一个证书呢?
一般流程是:
a. 创建一个private key
b. 创建一个certificate signing request(证书请求), 这个需要a#中创建的private key.因为证书中需要包含public key,
创建的priavate key中有这些信息.
(openssl.exe req -new -key privatekey.pem-out cacert.csr)
c. 把创建好的证书请求拿到CA(certificate authority)证书认证机构审批.
7. 如何做一个自签名的证书呢?
openssl.exe req -new -x509 -key privatekey.pem -out cacert.pem -days 1095
(Note: privatekey.pem需要自己创建)
参考博客: http://kb.cnblogs.com/a/2320065/
http://finebree.blog.163.com/blog/static/878793552008102474254280/
http://blog.csdn.net/derryzhang/article/details/6430446
http://www.cppblog.com/woomsg/archive/2008/11/03/64508.html
分享到: 0赞
声明:OSCHINA 博客文章版权属于作者,受法律保护。未经作者同意不得转载。
« 上一篇下一篇 »
开源中国-程序员在线工具:API文档大全(120+) JS在线编辑演示 二维码 更多>>
评论2
1楼:杨_静 发表于 2012-08-22 00:27 回复此评论
Creating library out32dll/libeay32.lib and object out32dll/libeay32.exp
cryptlib.obj : error LNK2001: unresolved external symbol _OPENSSL_ia32_cpuid
out32dll/libeay32.dll : fatal error LNK1120: 1 unresolved externals
NMAKE : fatal error U1077: 'link' : return code '0x460'
Stop.
F:/openssl-0.9.8g>
可以看到在生成dll的链接库时,发生了错误。单又前进了一步。
修改do_ms文件如下:
perl util/mkfiles.pl >MINFO
perl util/mk1mf.pl debug no-asm VC-WIN32 >ms/nt.mak
perl util/mk1mf.pl debug dll no-asm VC-WIN32 >ms/ntdll.mak
perl util/mk1mf.pl debug no-asm VC-CE >ms/ce.mak
perl util/mk1mf.pl debug dll no-asm VC-CE >ms/cedll.mak
perl util/mkdef.pl 32 libeay > ms/libeay32.def
perl util/mkdef.pl 32 ssleay > ms/ssleay32.def
其余的按照上一篇的步骤,就OK了
结果在,F:/openssl-0.9.8g/out32dll.dbg ,里面
F:/openssl-0.9.8g/out32dll.dbg>dir
驱动器 F 中的卷是 STUDY
卷的序列号是 A876-D489
F:/openssl-0.9.8g/out32dll.dbg 的目录
2008-05-30 21:06 <DIR> .
2008-05-30 21:06 <DIR> ..
2008-05-30 21:10 1,265,724 libeay32.dll
2008-05-30 21:10 664,738 libeay32.lib
2008-05-30 21:10 451,495 libeay32.exp
2008-05-30 21:10 902,144 libeay32.pdb
2008-05-30 21:11 254,012 ssleay32.dll
2008-05-30 21:11 52,408 ssleay32.lib
2008-05-30 21:11 35,323 ssleay32.exp
2008-05-30 21:11 312,320 ssleay32.pdb
2008-05-30 21:11 16,443 md2test.exe
2008-05-30 21:11 115,712 md2test.pdb
2008-05-30 21:11 16,443 md4test.exe
2008-05-30 21:11 115,712 md4test.pdb
2008-05-30 21:11 16,443 md5test.exe
2008-05-30 21:11 115,712 md5test.pdb
2008-05-30 21:11 16,443 shatest.exe
2008-05-30 21:11 115,712 shatest.pdb
2008-05-30 21:11 16,444 sha1test.exe
2008-05-30 21:11 115,712 sha1test.pdb
2008-05-30 21:11 16,443 sha256t.exe
2008-05-30 21:11 115,712 sha256t.pdb
2008-05-30 21:11 16,443 sha512t.exe
2008-05-30 21:11 115,712 sha512t.pdb
2008-05-30 21:11 16,444 hmactest.exe
2008-05-30 21:11 115,712 hmactest.pdb
2008-05-30 21:11 16,443 rmdtest.exe
2008-05-30 21:11 115,712 rmdtest.pdb
2008-05-30 21:11 24,635 destest.exe
2008-05-30 21:11 123,904 destest.pdb
2008-05-30 21:11 16,443 rc2test.exe
2008-05-30 21:11 115,712 rc2test.pdb
2008-05-30 21:11 16,443 rc4test.exe
2008-05-30 21:11 115,712 rc4test.pdb
2008-05-30 21:11 16,444 ideatest.exe
2008-05-30 21:11 115,712 ideatest.pdb
2008-05-30 21:11 20,538 bftest.exe
2008-05-30 21:11 115,712 bftest.pdb
2008-05-30 21:11 16,444 casttest.exe
2008-05-30 21:11 115,712 casttest.pdb
2008-05-30 21:11 32,826 bntest.exe
2008-05-30 21:11 140,288 bntest.pdb
2008-05-30 21:11 16,443 exptest.exe
2008-05-30 21:11 123,904 exptest.pdb
2008-05-30 21:11 16,444 rsa_test.exe
2008-05-30 21:11 123,904 rsa_test.pdb
2008-05-30 21:11 16,443 dsatest.exe
2008-05-30 21:11 123,904 dsatest.pdb
2008-05-30 21:11 16,442 dhtest.exe
2008-05-30 21:11 123,904 dhtest.pdb
2008-05-30 21:11 77,882 ectest.exe
2008-05-30 21:11 148,480 ectest.pdb
2008-05-30 21:11 16,444 ecdhtest.exe
2008-05-30 21:11 132,096 ecdhtest.pdb
2008-05-30 21:12 20,541 ecdsatest.exe
2008-05-30 21:12 132,096 ecdsatest.pdb
2008-05-30 21:12 16,444 randtest.exe
2008-05-30 21:12 115,712 randtest.pdb
2008-05-30 21:12 20,540 evp_test.exe
2008-05-30 21:12 132,096 evp_test.pdb
2008-05-30 21:12 16,446 enginetest.exe
2008-05-30 21:12 123,904 enginetest.pdb
2008-05-30 21:12 36,923 ssltest.exe
2008-05-30 21:12 173,056 ssltest.pdb
2008-05-30 21:12 335,931 openssl.exe
2008-05-30 21:12 656,384 openssl.pdb
64 个文件 8,830,449 字节
2 个目录 7,698,620,416 可用字节
注意绿色的文件,所需要的。
注:以上的编译均是完整的编译,没有去掉其他的功能,所以文件可能多些。
至于Openssl的用法,资料很多。我也上传了一些FDF。和大家共同学习
最后,感谢感谢江南技术研究所赵春平的《openssl编程》,很不错在网上自己下。
最后一点:修改之后为什么会成功,我还没有弄明白。望知道的大虾指点一下。谢谢
2楼:杨_静 发表于 2012-08-22 00:29 回复此评论
http://blog.csdn.net/kafeiwu2003/article/details/3933051