Windows安装使用Openssl

什么是OpenSSL?

OpenSSL是用于安全通信的著名开源密码学工具包,包括主要的密码算法、常见密码和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。

OpenSSL整个软件包大概可以分成三个主要的功能部分:密码算法库SSL协议库以及应用程序。OpenSSL的目录结构自然也是围绕这三个功能部分进行规划的。


官方源下载地址: https://www.openssl.org/source/

OpenSSL特征:
1. SSL客户端和服务端特征
2. 美国联邦政府NIST FIPS 140-2一级评估确认
3. TLS,下一代SSL协议
4. X.509密钥和证书的生成
5. X.509证书权力
6. S/MIME加密
7. 文件加密和粉碎
8. 打乱UNIX密码
9. 9个不同的商业密码硬件设备
10. 密码性能测试
11. 36个命令
12. 6个消息摘要算法
13. 9个密码算法
14. 多个加密协议

1. Openssl更多描述

OpenSSL有两种运行模式:交互模式和批处理模式。
直接输入openssl回车进入交互模式,输入带命令选项的openssl进入批处理模式。

对称加密算法

OpenSSL一共提供了8种对称加密算法,其中7种是分组加密算法,仅有的一种流加密算法是RC4。这7种分组加密算法分别是AESDESBlowfishCASTIDEARC2RC5,都支持电子密码本模式(ECB)、加密分组链接模式(CBC)、加密反馈模式(CFB)和输出反馈模式(OFB)四种常用的分组密码加密模式。其中,AES使用的加密反馈模式(CFB)和输出反馈模式(OFB)分组长度是128位,其它算法使用的则是64位。事实上,DES算法里面不仅仅是常用的DES算法,还支持三个密钥和两个密钥3DES算法。

非对称加密算法

OpenSSL一共实现了4种非对称加密算法,包括DH算法、RSA算法、DSA算法和椭圆曲线算法(EC)。DH算法一般用户密钥交换。RSA算法既可以用于密钥交换,也可以用于数字签名,当然,如果你能够忍受其缓慢的速度,那么也可以用于数据加密。DSA算法则一般只用于数字签名。

信息摘要算法

OpenSSL实现了5种信息摘要算法,分别是MD2MD5MDC2SHA(SHA1)RIPEMD。SHA算法事实上包括了SHA和SHA1两种信息摘要算法,此外,OpenSSL还实现了DSS标准中规定的两种信息摘要算法DSSDSS1

密钥和证书管理

密钥和证书管理是PKI的一个重要组成部分,OpenSSL为之提供了丰富的功能,支持多种标准。

首先,OpenSSL实现了ASN.1的证书和密钥相关标准,提供了对证书、公钥、私钥、证书请求以及CRL等数据对象的DERPEMBASE64的编解码功能。OpenSSL提供了产生各种公开密钥对和对称密钥的方法、函数和应用程序,同时提供了对公钥和私钥的DER编解码功能。并实现了私钥的PKCS#12PKCS#8的编解码功能。OpenSSL在标准中提供了对私钥的加密保护功能,使得密钥可以安全地进行存储和分发。

在此基础上,OpenSSL实现了对证书的X.509标准编解码、PKCS#12格式的编解码以及PKCS#7的编解码功能。并提供了一种文本数据库,支持证书的管理功能,包括证书密钥产生、请求产生、证书签发、吊销和验证等功能。

事实上,OpenSSL提供的CA应用程序就是一个小型的证书管理中心(CA),实现了证书签发的整个流程和证书管理的大部分机制。


2. Windows直接下载安装

请下载版本1.1.1系列,这个是最新的稳定版本,这也是openssl长期支持(LTS)的版本。

OpenSSL官网没有提供windows版本的安装包,可以选择其他开源平台提供的工具。

  1. slproweb
  2. oomake

一般在安装openssl之前还需要Visual Studio的一些插件,该地址中也提供了相关插件的下载。如下图即为Openssl的安装及其Visual Studio插件在下载网页的截图。
Windows安装使用Openssl_第1张图片

安装步骤和使用方法如下:

1. 选择32位或者64位合适的版本下载,例如Win64OpenSSL_Light-1_0_2h.exe

Windows安装使用Openssl_第2张图片
​​

2. 设置环境变量,例如工具安装在C:\OpenSSL-Win64,则将C:\OpenSSL-Win64\bin;复制到Path中

Windows安装使用Openssl_第3张图片

3. 打开命令行程序cmd(以管理员身份运行),进入2_www.domain.com.key、1_www.domain.com_cert.crt所在目录,运行以下命令·

openssl pkcs12 -export -out www.domain.com.pfx -inkey 2_www.domain.com.key -in 1_www.domain.com_cert.crt

例如key和crt文件保存在 D:\ ,运行情况如下:
Windows安装使用Openssl_第4张图片
Ps:Export Password不需要可以直接回车不进行输入。(如果没有设置密码)

4. 则在 D:\ 已生成www.domain.com.pfx 文件,可以继续完成在IIS管理器中的证书安装。

2. 自己编译Openssl

此过程比较复杂,需要先安装perl、vs等软件,然后才能编译openssl。
相关网站:https://www.cnblogs.com/lpxblog/p/5382653.html

1. 下载并安装perl:

  • 下载路径: http://www.activestate.com/activeperl/downloads/
  • 安装与配置:

直接运行安装文件(例如:ActivePerl-5.16.3.1604-MSWin32-x86-298023.msi)即可完成安装;安装过程将自动完成环境变量的配置(安装完成之后,可以在系统环境变量里看到perl的bin目录(例如: C:\Program Files\perl\site\bin;)已经被加入进来),无需再手工配置;如果没有就需要自行配置一下。

  • 测试安装是否成功:

进入perl安装目录的eg文件夹,执行“perl example.pl”若显示“Hello from ActivePerl!”,则说明Perl安装成功。
Windows安装使用Openssl_第5张图片

Perl安装成功之后就可以开始使用Perl的相关命令来进行OpenSSL的安装了。


…还在写中,其实就是搬运,排版…


3. 案例代码

1. 消息摘要算法应用例子

  • 用SHA1算法计算文件file.txt的哈西值,输出到stdout:
# openssl dgst -sha1 file.tx
  • 用SHA1算法计算文件file.txt的哈西值,输出到文件digest.txt:
 #  openssl sha1 -out digest.txt file.txt
  • 用DSS1(SHA1)算法为文件file.txt签名,输出到文件dsasign.bin。签名的private key必须为DSA算法产生的,保存在文件dsakey.pem中。
# openssl dgst -dss1 -sign dsakey.pem -out dsasign.bin file.txt
  • 用dss1算法验证file.txt的数字签名dsasign.bin,验证的private key为DSA算法产生的文件dsakey.pem。
# openssl dgst -dss1 -prverify dsakey.pem -signature dsasign.bin file.txt
  • 用sha1算法为文件file.txt签名,输出到文件rsasign.bin,签名的private key为RSA算法产生的文件rsaprivate.pem。
# openssl sha1 -sign rsaprivate.pem -out rsasign.bin file.txt
  • 用sha1算法验证file.txt的数字签名rsasign.bin,验证的public key为RSA算法生成的rsapublic.pem。
# openssl sha1 -verify rsapublic.pem -signature rsasign.bin file.txt

2. 对称加密应用例子

  • 对称加密应用例子,用DES3算法的CBC模式加密文件plaintext.doc,加密结果输出到文件ciphertext.bin。
# openssl enc -des3 -salt -in plaintext.doc -out ciphertext.bin
  • 用DES3算法的OFB模式解密文件ciphertext.bin,提供的口令为trousers,输出到文件plaintext.doc。注意:因为模式不同,该命令不能对以上的文件进行解密。
# openssl enc -des-ede3-ofb -d -in ciphertext.bin -out plaintext.doc -pass pass:trousers
  • 用Blowfish的CFB模式加密plaintext.doc,口令从环境变量PASSWORD中取,输出到文件ciphertext.bin。
# openssl bf-cfb -salt -in plaintext.doc -out ciphertext.bin -pass env:PASSWORD
  • 给文件ciphertext.bin用base64编码,输出到文件base64.txt。
# openssl base64 -in ciphertext.bin -out base64.txt
  • 用RC5算法的CBC模式加密文件plaintext.doc,输出到文件ciphertext.bin,salt、key和初始化向量(iv)在命令行指定。
# openssl rc5 -in plaintext.doc -out ciphertext.bin -S C62CB1D49F158ADC -iv E9EDACA1BD7090C6 -K 89D4B1678D604FAA3DBFFD030A314B29

3. Diffie-Hellman应用例子

  • 使用生成因子2和随机的1024-bit的素数产生D0ffie-Hellman参数,输出保存到文件dhparam.pem
# openssl dhparam -out dhparam.pem -2 1024
  • 从dhparam.pem中读取Diffie-Hell参数,以C代码的形式,输出到stdout。
# openssl dhparam -in dhparam.pem -noout -C

4. DSA应用例子应用例子

  • 生成1024位DSA参数集,并输出到文件dsaparam.pem。
# openssl dsaparam -out dsaparam.pem 1024
  • 使用参数文件dsaparam.pem生成DSA私钥匙,采用3DES加密后输出到文件dsaprivatekey.pem
# openssl gendsa -out dsaprivatekey.pem -des3 dsaparam.pem
  • 使用私钥匙dsaprivatekey.pem生成公钥匙,输出到dsapublickey.pem
# openssl dsa -in dsaprivatekey.pem -pubout -out dsapublickey.pem
  • 从dsaprivatekey.pem中读取私钥匙,解密并输入新口令进行加密,然后写回文件dsaprivatekey.pem
# openssl dsa -in dsaprivatekey.pem -out dsaprivatekey.pem -des3 -passin

5. RSA应用例子

  • 产生1024位RSA私匙,用3DES加密它,口令为trousers,输出到文件rsaprivatekey.pem
# openssl genrsa -out rsaprivatekey.pem -passout pass:trousers -des3 1024
  • 从文件rsaprivatekey.pem读取私匙,用口令trousers解密,生成的公钥匙输出到文件rsapublickey.pem
# openssl rsa -in rsaprivatekey.pem -passin pass:trousers -pubout -out rsapubckey.pem
  • 用公钥匙rsapublickey.pem加密文件plain.txt,输出到文件cipher.txt
# openssl rsautl -encrypt -pubin -inkey rsapublickey.pem -in plain.txt -out cipher.txt
  • 使用私钥匙rsaprivatekey.pem解密密文cipher.txt,输出到文件plain.txt
# openssl rsautl -decrypt -inkey rsaprivatekey.pem -in cipher.txt -out plain.txt
  • 用私钥匙rsaprivatekey.pem给文件plain.txt签名,输出到文件signature.bin
# openssl rsautl -sign -inkey rsaprivatekey.pem -in plain.txt -out signature.bin
  • 用公钥匙rsapublickey.pem验证签名signature.bin,输出到文件plain.txt
# openssl rsautl -verify -pubin -inkey rsapublickey.pem -in signature.bin -out plain
  • 从X.509证书文件cert.pem中获取公钥匙,用3DES加密mail.txt,输出到文件mail.enc
# openssl smime -encrypt -in mail.txt -des3 -out mail.enc cert.pem
  • 从X.509证书文件cert.pem中获取接收人的公钥匙,用私钥匙key.pem解密S/MIME消息mail.enc,结果输出到文件mail.txt
# openssl smime -decrypt -in mail.enc -recip cert.pem -inkey key.pem -out mail.txt
  • cert.pem为X.509证书文件,用私匙key,pem为mail.txt签名,证书被包含在S/MIME消息中,输出到文件mail.sgn
# openssl smime -sign -in mail.txt -signer cert.pem -inkey key.pem -out mail.sgn
  • 验证S/MIME消息mail.sgn,输出到文件mail.txt,签名者的证书应该作为S/MIME消息的一部分包含在mail.sgn中
# openssl smime -verify -in mail.sgn -out mail.txt



这里写图片描述

Hello ,I am 李本心明


首先谢谢大家的支持,其次如果你碰到什么其他问题的话,欢迎来 我自己的一个 讨论群559666429来(扫扫下面二维码或者点击群链接 Unity3D[ 交流&副业]CLUB ),大家一起找答案,共同进步 同时欢迎各大需求商入住,发布自己的需求,给群内伙伴提供副职,赚取外快。对了,资源的话,要在群公告里面找。

由于工作生活太忙了,对于大家的帮助时间已经没有之前那么充裕了。如果有志同道合的朋友,可以接受无偿的帮助别人,可以单独联系我,一块经营一下。
如果你有更好的经营方式也来练习我,加我QQ

Windows安装使用Openssl_第6张图片

你可能感兴趣的:(网络,服务器,Openssl,算法,密码学,开源密码)