Linux 中的 Openssl命令及实例代码

Linux 中的 Openssl命令及实例代码

OpenSSL是一个强大的安全套接字层密码库,它包括主要的密码算法、公共密钥和证书封装管理功能以及SSL协议,并为测试或其他目的提供丰富的应用程序。

openssl命令的格式是“openssl命令-选项参数”。命令段有很多种命令,这些命令需要依赖OpenSSL命令才能执行,所以被称为伪命令。每个伪命令都有自己的功能,大多数命令可以通过man命令直接检查命令的用法和功能。

OpenSSL

是一个强大的安全套接字层密码库,包括主要的密码算法、公共密钥和证书封装管理功能以及SSL协议,并提供丰富的应用程序用于测试或其他目的。OpenSSL被曝出存在严重安全漏洞后,发现绝大多数采用SSL协议加密的网站都使用了名为OpenSSL的开源软件包。由于这是互联网上使用最广泛的安全传输方式,因此被网上银行、网上支付、电子商务网站、门户网站、电子邮件等重要网站广泛使用。所以漏洞的影响范围很广。

OpenSSL有两种操作模式:交互模式和批处理模式。

直接输入openssl进入交互模式,用命令选项输入openssl进入批处理模式。

OpenSSL软件包可以分为三个主要功能部分:密码算法库、SSL协议库和应用程序。OpenSSL的目录结构自然是围绕这三个功能部分来规划的。

对称加密算法

OpenSSL提供了八种对称加密算法,其中七种是块加密算法,唯一的流加密算法是RC4。这七种分组加密算法分别是AES、DES、Blowfish、CAST、IDEA、RC2、RC5,它们都支持四种常见的分组密码加密模式:电子码本模式(ECB)、加密分组链接模式(CBC)、加密反馈模式(CFB)和输出反馈模式(OFB)。其中,AES使用的加密反馈模式(CFB)和输出反馈模式(OFB)的分组长度为128位,其他算法使用64位。实际上,DES算法不仅是常用的DES算法,还支持三密钥和两密钥的3DES算法。

非对称加密算法

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

信息摘要算法

OpenSSL实现了五种信息摘要算法,即MD2、MD5、MDC2、SHA(SHA1)和RIPEMD。实际上,SHA算法包括SHA和SHA1信息摘要算法。此外,OpenSSL还实现了DSS标准中规定的两种信息摘要算法DSS和DSS1。

密钥和证书管理

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

首先,OpenSSL实现了ASN.1的证书和密钥相关标准,为证书、公钥、私钥、证书请求和CRL数据对象提供DER、PEM和BASE64的编解码功能。OpenSSL提供了生成各种公钥对和对称密钥的方法、函数和应用程序,还提供了公钥和私钥的DER编码和解码函数。实现了私钥PKCS#12和PKCS#8的编译码功能。OpenSSL为标准中的私有密钥提供了加密保护,从而可以安全地存储和分发密钥。

在此基础上,OpenSSL实现了证书的X.509标准编解码、PKCS#12格式编解码和PKCS#7编解码功能。它还提供了一个支持证书管理功能的文本数据库,包括证书密钥生成、请求生成、证书颁发、撤销和验证。

OpenSSL提供的CA应用其实就是一个小型的证书管理中心(CA),实现了证书颁发的全过程和证书管理的大部分机制。

例子

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

用SHA1算法计算file.txt的哈希值,输出到stdout:

# openssl dgst -sha1 file.txt

用SHA1算法计算文件file.txt的哈西值,输出到文件digest.txt:

# OpenSSL sha1-out摘要。txt文件。文本文件(textfile)

用DSS1(SHA1)算法为文件file.txt签名,输出到文件dsasign.bin。签名的私人密钥必须为目录系统代理(目录系统代理)算法产生的,保存在文件dsakey.pem中。

# OpenSSL dgst-dss1-sign dsakey。PEM-out DSA标志。bin文件。文本文件(textfile)

用dss1算法验证file.txt的数字签名dsasign.bin,验证的私人密钥为目录系统代理(目录系统代理)算法产生的文件dsakey.pem。

# OpenSSL dgst-dss1-pr验证dsakey。签名DSA签名。bin文件。文本文件(textfile)

用sha1算法为文件file.txt签名,输出到文件rsasign.bin,签名的私人密钥为南非共和国(南非共和国)算法产生的文件rsaprivate.pem。

# OpenSSL sha1-签名RSA private。PEM-out RSA符号。bin文件。文本文件(textfile)

# 用sha1算法验证file.txt的数字签名rsasign.bin,验证的公开密钥为南非共和国(南非共和国)算法生成的rsapublic.pem。

# OpenSSL sha1-验证RSA public。PEM-签名rsasign.bin file.txt

2、对称加密应用例子

对称加密应用例子,用DES3算法的加拿大广播公司模式加密文件明文. doc加密结果输出到文件密文。斌。

# OpenSSL enc-des 3-salt-明文。文档输出密文。箱子

用DES3算法的OFB模式解密文件密文。bin,提供的口令为裤子,输出到文件明文. doc。注意:因为模式不同,该命令不能对以上的文件进行解密。

# openssl enc -des-ede3-ofb -d -in密文。出仓明文。doc -pass通行证:裤子

用河豚的中心纤维体模式加密明文. doc口令从环境变量密码中取,输出到文件密文。斌。

# OpenSSL BF-CFB-盐-明文。文档输出密文。bin-传递环境:密码

给文件密文。箱子用base64编码,输出到文件base64.txt。

# openssl base64英寸密文

用RC5算法的加拿大广播公司模式加密文件明文. doc输出到文件密文。垃圾桶,盐,钥匙和初始化向量在命令行指定。

# OpenSSL rc5-明文。文档输出密文。bin-S c 62 CB 1d 49 f 158 ADC-iv e 9 edaca 1 BD 7090 c 6-K 89d 4b 1678d 604 FAA 3d bffd 030 a 314 b 29

3、Diffie-Hellman应用例子

使用生成因子2和随机的1024位的素数产生迪菲-赫尔曼参数,输出保存到文件dhparam.pem

# OpenSSL dhparam-out dhparam。PEM-2 1024

从dhparam.pem中读取迪菲-地狱参数,以C代码的形式,输出到标准输出。

# OpenSSL dhparam-in dhparam。PEM-noout-C

4、DSA应用例子应用例子

生成1024位目录系统代理(目录系统代理)参数集,并输出到文件dsaparam.pem。

# OpenSSL DSA参数-out DSA参数。PEM 1024

使用参数文件dsaparam.pem生成目录系统代理(目录系统代理)私钥匙,采用3DES加密后输出到文件dsaprivatekey.pem

# OpenSSL gendsa-out DSA私钥。PEM-des 3 DSA参数。PrivacyEnhancedMail增强的私密电子邮件

使用私钥匙dsaprivatekey.pem生成公钥匙,输出到dsapublickey.pem

# OpenSSL DSA-in DSA私钥。PEM-pub out out dsapublickey。PrivacyEnhancedMail增强的私密电子邮件

从dsaprivatekey.pem中读取私钥匙,解密并输入新口令进行加密,然后写回文件dsaprivatekey.pem

# OpenSSL DSA-in DSA私钥。PEM-out DSA私钥。PEM-des 3-passin

5、RSA应用例子

产生1024位南非共和国(南非共和国)私匙,用3DES加密它,口令为裤子,输出到文件rsaprivatekey.pem

# OpenSSL gen RSA-out RSA私钥。PEM-pass out通行证:pants-des 3 1024

从文件rsaprivatekey.pem读取私匙,用口令裤子解密,生成的公钥匙输出到文件rsapublickey.pem

# OpenSSL RSA-in rsaprivatekey。PEM-passin pass:pants-pub out-out rsapubckey。PrivacyEnhancedMail增强的私密电子邮件

用公钥匙rsapublickey.pem加密文件plain.txt,输出到文件cipher.txt

# OpenSSL RSA utl-encrypt-pubin-inkey RSA公钥。PEM-in平原。txt-out密码。文本文件(textfile)

使用私钥匙rsaprivatekey.pem解密密文cipher.txt,输出到文件平原。文本文件(textfile)

# OpenSSL RSA utl-decrypt-in key RSA私钥。密码。txt-out plain。文本文件(textfile)

用私钥匙rsaprivatekey.pem给文件平原。文本文件(textfile)签名,输出到文件签名。箱子

# OpenSSL rsautl-sign-inkey rsaprivatekey。PEM-in平原。txt输出签名。箱子

用公钥匙rsapublickey.pem验证签名签名. bin输出到文件平原。文本文件(textfile)

# OpenSSL RSA utl-verify-pubin-inkey RSA公钥。PEM-in签名。滨外平原

从X.509证书文件cert.pem中获取公钥,用3DES加密mail.txt,输出到文件mail.enc

# OpenSSL smime-encrypt-in mail . txt-des 3-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-in key key . PEM-out mail . txt

Cert.pem是X.509证书文件,mail.txt是用私钥pem和pem签名的。证书包含在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

总结

以上是边肖介绍的Linux中的Openssl命令和示例代码。希望对你有帮助。如果您有任何问题,请给我留言,边肖将及时回复您。非常感谢您对我们网站的支持!

Linux 中的 Openssl命令及实例代码