Openssl安装及使用
一 软件
Windows下需要用到的软件
• C++编译器
编译器就是将“高级语言”翻译为“机器语言(低级语言)”的程序。一个现代编译器的主要工作流程:源代码 (source code) → 预处理器 (preprocessor) → 编译器 (compiler) → 汇编程序 (assembler) → 目标代码 (object code) → 链接器 (Linker) → 可执行程序 (executables)。 c++编译器是一个与标准化C++高度兼容的编译环境。这点对于编译可移植的代码十分重要。编译器对不同的CPU会进行不同的优化。
• ActivePerl
一个perl脚本解释器。其包含了包括有 Perl for Win32、Perl for ISAPI、PerlScript、Perl Package Manager四套开发工具程序,可以让你编写出适用于unix,windows,linux系统的CGI程序来。安装的只是perl的一个解释程序啦,外观上也不会发生什么变化,你在windows的cmd界面里输入perl -v可查看你所安装的版本。在你编译perl程序时会用到它。
法、常用的密钥和证书封装管理功能以及SSL协议,并提供了丰富的应用程序供测试或其它目的使用。
• MASM 8.0
• MASM是微软公司开发的汇编开发环境,拥有可视化的开发界面,使开发人员不必再使用DOS环境进行汇编的开发,编译速度快,支持80x86汇编以及Win32Asm是Windows下开发汇编的利器。它与windows平台的磨合程度非常好,但是在其他平台上就有所限制,使OpenSSL
OpenSSL是一个强大的安全套接字层密码库,Apache使用它加密HTTPS,OpenSSH使用它加密SSH,它还是一个多用途的、跨平台的密码工具。
OpenSSL整个软件包大概可以分成三个主要的功能部分:密码算法库、SSL协议库以及应用程序。OpenSSL的目录结构自然也是围绕这三个功能部分进行规划的。作为一个基于密码学的安全开发包,OpenSSL提供的功能相当强大和全面,囊括了主要的密码算用MASM的开发人员必须在windows下进行开发。8.0版本在编译OpenSSL的时候不容易出错。
• 用winrar解压缩MASMSetup.exe得到:setup.exe继续用winrarNASM.EXE和nasmw.exe非必要软件是其他方式的编译,如需要可放于内存或系统Path中。
Linux下需要用到的软件
Linux下只用到openssl软件
二 软件安装
Windows下安装解压缩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 拷贝到工作目录,即可正常使用。
• mspdb60.dll
mspdb60.dll是Microsoft Visual Studio编程数据库支持相关文件。该控件可以保证link.exe的运行,放于内存或系统Path中,Windows XP/WIN7系统,则复制到C:WindowsSystem32目录下。
• 常规方式安装好Perl和VC++6.0,首先要保证系统Path中必要程序的存在,ml.exe(ml.err),cl.exe,link.exe,nmake.exe和perl.exe等,运行perl.exe确保Perl安装成功(将这些软件的所在文件地址放到系统环境变量path中,如perl.exe在D:\\perl\\下,path=xxxxxx\\xxx; D:\\perl\\;就ok了)
2、perl Configure VC-WIN32 -DOPENSSL_USE_IPV6=0
禁用IPV6,避免出现NMAKE : fatal error U1077: 'cl' : return code '0x2'错误
3、运行“CMD”命令,进入MS-DOS,在perl安装目录的eg文件夹下确认Perl是否正常安装了:
cd C:\\Perl\\eg
在该目录下执行:perl example.pl
若结果显示“Hello from ActivePerl!”,则说明Perl安装成功,可以开始使用Perl
的相关命令来进行OpenSSL的安装了
4、初始化VC++6.0 环境变量
找到vc++ 6.0的安装目录下的\\VC98\\Bin\\执行如下的命令:
cd C:\\Program Files\\Microsoft Visual Studio\\VC98\\Bin
VCVARS32.BAT
5、正式开始安装OpenSSL(需进入到OpenSSL所在目录)
⑴执行Configure命令(配置编译参数,对编译环境进行基本的配置):
perl Configure VC-WIN32
⑵生成配置文件
运行ms\\do_ms命令
如果需要其他方式进行编译,则分别运行:
ms\\do_masm
ms\\do_nasm
⑶开始进行编译
nmake -f ms\\ntdll.mak
其中可能出现各种错误,可参照以下情况进行相关的处理:
http://blog.csdn.net/zhangyang0402/archive/2010/05/09/5573188.aspx
http://blog.csdn.net/zhangyang0402/archive/2010/05/10/5576259.aspx
http://www.khgl.cn/html/03/n-2134203.html
⑷进行测试
nmake -f ms\\ntdll.mak test
如果出现以上提示(\"passed all tests\")则说明成功
注意:如果编译成功,最后的输出结果都在out32dll目录下:包括可执行文件、两个dll和两个lib文件: libeay32.dll,libeay32.lib,ssleay32.dll,ssleay32.lib,openssl.exe;把他们放到PATH环境变量对应的一个目录里就可以了。
Linux下安装
官网下载程序http://www.openssl.org/
gunzip -d openssl.0.9.6.tar.gz (也可以从网上下载下来再解压)
tar -xf openssl.0.9.6.tar.gz(解压缩文件)
mv openssl.0.9.6 openssl (将openssl.0.9.6文件夹下的内容移动到openssl文件夹下)
cd openssl (进入openssl文件夹)
./config --prefix=XXXXX --openssldir=XXXXXXXX (安装openssl,这里prefix是你想安装openssl的地方, openssldir就是你tar开的openssl源码的地方。需要输入两次密码
Openssl可以将这个文件中公钥提取出来:
Openssl rsa –in private.key –pubout –out private_pub.key
生成CSR文件 Generate the CSR
openssl req -config c:\\openssl\\bin\\openssl.cnf -new -key private.key -out private.csr(注意:windows下要加-config c:\\openssl\\bin\\openssl.cnf linux下不用加这个代码)
接着还要填写包括国家(中国添CN)、省份、所在城市、单位名称、单位部门名称(可以不填直接回车)。除国家缩写必须填CN外,其余都可以是英文或中文。
其后还要输入要申请SSL证书的域名,如果需要为www.domain.com申请SSL证书就不能只输入domain.com。SSL证书是严格绑定域名的。
最后是Email、口令(challenge password)和公司名称,建议不要输入,直接回车即可。
或者
生成私钥:
make
make
openssl rsa -in private.pem -out public.pem -pubout
查看密钥信息:
openssl rsa -noout -text -in privatekey_test.pem
加密解密文件
用生成的公钥加密test
make install
三 openssl命令
生成私钥
openssl genrsa -des3 –out private.key 2048
输入后
openssl genrsa -out private.pem 2048(无密码的)
生成公钥:文件hello.txt:
openssl rsautl -encrypt -in hello.txt -inkey public.key -pubin -out hello.en
用生成的方A:
生成私钥:
OpenSSL> genrsa -passout pass:123456 -out apri.pem 1024
生成公钥:
OpenSSL> rsa -passin pass:123456 -pubout -in apri.pem -out apub.pem
用B的公钥加密数据:
OpenSSL> rsautl -encrypt -pubin -inkey bpub.pem -in data.txt -out edata.txt
计算数据的消息摘要:
OpenSSL> dgst -sha1 -out md.txt data.txt
用A的私钥给消息摘要签名私钥解密文件hello.en:
openssl rsautl -decrypt -in hello.txt -inkey private.key -out hello1.txt
计算数据的消息摘要:
openssl dgst -sha1 -out md.txt hello.txt
用私钥给消息摘要签名:
openssl rOpenSSL> rsa -passin pass:654321 -pubout -in bpri.pem bpub.pem
用B的私钥解密数据:
OpenSSL> rsautl -decrypt -inkey bpri.pem -in edata.txt -out data.txt
计算data.txt的信息摘要:
OpenSSL> dgst -sha1 -out ms2.txt data.txt
-out
用A的公钥解密数字签名:
OpenSSL> rsautl -verify -pubin -inkey apub.pem -in signature.bin -out ms3.txt
最后比较:ms2.txt 和ms3.txtsautl -sign -inkey private.pem -in md.txt -out signature.bin
四 实例
一、发送:
OpenSSL>ad6910d33d5f96cbd7b9b3378107b8b04ba1c138
五 遇到的问题及解决方法
• 在linux下安装openssl,从网页直接下载openssl.0.9.6.tar.gz存在什么地方?
openssl.0.9.6.tar.gz存放在/home/user(此处是用户名)/下载.
• 在linux下如何进入root?
命令:sudo –i然后会提示输入密码。
• Linux下openssl安装到了社么地方?
Linux下程序一般装生成公钥:
内容完全相同:
SHA1(data.txt)= 安装地址是自己选择的。
• 如何生成带密码的密钥?
openssl genrsa -des3 –out private.key 2048(带-des3的就是需要密码的)。
• 加密解密文件的问题、
• -安装图文详解http://www.linuxidc.com/Linux/2011-01/31229.htm
《OpenSSL 与网络信息安全——基在/usr文件夹下,这里注意./config --prefix=XXXXX --openssldir=XXXXXXXX rsautl -sign -inkey apri.pem -in md.txt -out signature.bin
将edata.txt和signature.bin发送给接收方B
二、接收方B
生成私钥:
OpenSSL> genrsa -passout pass:654321 -out bpri.pem 1024
• 础、结构和指令》王志海 中国OpenSSL 专业论坛
OpenSSL命令行工具验encrypt只能用公钥加密,-decrypt只能用私钥解密,只能用公钥加密文件私钥解密文件,否则会解密出错,私钥可以用来对信息摘要签名。
6. 生成CSR文件问题?
在windows下命令一定要带-config c:\\openssl\\bin\\openssl.cnf(openssl.cnf所在的位置)Linux下可以不带这个。
• windows下运行cmd输入openssl提示命令不存在?
在out32dll目录下:包括可执行文件、两个dll和两个lib文件: libeay32.dll,libeay32.lib,ssleay32.dll,ssleay32.lib,openssl.exe;把他们放到PATH环境变量对应的一个目录里就可以了。
参考文献:
• Windows环境中OpenSSL的安装
http://download.csdn.net/download/douhui2002/2873355
• Linux下OpenSSL 证数字签名
http://blog.chinaunix.net/uid-27875-id-3063665.html
因篇幅问题不能全部显示,请点此查看更多更全内容