openssl命令概述

什么是openSSL?

openSSL是一个开放源代码的SSL协议的产品实现,它采用C语言作为开发语言,具备了跨系统的性能,支持linux、windows、mac等多种平台。openSSL最早的版本在1995年发布,1998年后开始由openSSL项目组维护和开发。目前,openSSL已经得到了广泛的应用,许多类型的软件中的安全部分都使用了openSSL的库,如Apache服务器、linux安全模块等。

 

 

 接下来具体介绍openSSL中几条具体指令。可以分为3类:标准命令、消息摘要命令、密码命令。

 

标准命令

openSSL gendsa指令概述

 

 一、指令说明

Gendsa指令功能简单,由DSA参数产生DSA的一对密钥。DSA参数可以用dsaparam来产生。

二、指令语法

 

 三、指令参数

【out outfile】

输出特定文件,本指令中输出的文件是DSA的一对密钥。

【passout val】

给输出的文件设置密码,此处不同于对称算法加密,对称算法是对私钥结果进行加密,这里是对文件加密,然后输出文件密码词源。

【rand val】

将文件加载到随机数生成器中,是随机种子。

【writerand outfile】

将随机数据写到指定文件。

【*】

使用任何受支持的密码加密输出。

【engine val】

使用机器,可能是某种硬件设备。

四、示例

先生成DSA参数,后生成DSA密钥:

 

 

 

 

openSSL gendh指令概述

一、指令说明

本命令用于生成DH参数。(目前在linux中无法使用该指令,gendh与dh指令可能已经失效,取而代之的是openssl dhparam指令。Dhparam指令用于生成和管理DH文件)

二、指令语法

-out file:输出结果到file指定的文件,如果不指定,结果显示在屏幕上

-2:将2作为生成值,此处为默认值

-5:将5作为生成值

-rand:指定随机数文件

-engine e:采用engine生成

三、示例

 

 

 

openSSL genpkey指令概述

一、指令说明

Openssl genpkey指令用于产生各种密钥(RSA、DSA、DH、EC等)的私钥值。

二、指令语法

三、指令参数

 

 

【out outdile】

 

指定输出文件。如果没有设置,则为标准输出。

 

【outform PEM|DER】

 

指定输出格式,一般为PEM和DER。

 

【pass val】

 

输出文件口令保护存放方式。

 

【paramfile infile】

 

参数文件。产生私钥的参数值。一些公钥算法可以根据这些参数产生一个私钥。如果想这样产生密钥,则必须设置此选项。参数值来决定是否使用公钥算法。如果用了此选项,该选项必须在-pkeyopt之前。

 

【algorithm val】

 

公钥算法,可以用RSA、DSA以及DH。如果用了此选项,该选项必须在-pkeyopt之前。

 

【pkeyopt val】

 

设置公钥算法的选项值。

 

【genparam】

 

产生一系列参数来代替私钥值。如果用了此选项,该选项必须在-algorithm alg 、-pkeyopt 以及-paramfile file之前。

 

【text】

 

打印消息值。

 

【*】

 

用于加密密钥的密码。

 

【engine val】

 

使用机器,可能是某种硬件设备。

 

 

 四、示例

1. 用常规参数值产生一个RSA私钥值。

 

 

2. 用AES算法对输出的私钥文件进行加密,密钥为“hello”。

 

3. 产生一个1024位的DSA密钥参数值。

 

 

 

消息摘要命令

openSSL sha1指令概述

 

一、指令说明

Openssl dgst命令的主要功能是,计算信息摘要(哈希),给文件生成数字签名以及验证数字签名。Dgst下的主要选项中有sha1命令,sha1库是一种哈希算法,用以生成结果为160bit的数据摘要,即20个字节。

摘要的意思是,抽象为任意大小的数据为固定长度数据,结果是由于全部原始数据经过计算得出,逆推则无法计算除准确结果。

摘要的特性:单向性、映射收敛性、不可篡改性、标准可验证性。由于这些特性,sha哈希被广泛用于软件工程中。例如git软件版本管理工具,就是使用sha1算法计算文件和切片的指纹值。Bitcoin,使用sha256作为数据验证依据。

二、指令参数

【list】

列出摘要。

【c】

分别打印摘要。

【r】

以coreutils软件包中格式打印摘要。

【out outfile】

输出指定文件。

【passin val】

输入文件密码词源。

【sign val】

使用私钥对摘要进行签名。

【verify val】

使用公钥验证签名。

【prverify val】

使用私钥验证签名。

【signature infile】

带签名的文件,用来验证。

【keyform format】

密钥文件格式(PEM或ENGINE)。

【hex】

以十六进制存储。

【binary】

以二进制型式打印。

【d/debug】

打印错误处。

【fips-fingerprint】

使用openSSL-FIPS fingerprint中使用的密钥计算HMAC。

【hmac val】

使用密钥创建哈希MAC。

【mac val】

创建MAC。

【sigopt val】

n:v形式或密钥的签名参数。

【macopt val】

n:v形式或密钥的MAC算法参数。

【*】

任何支持的摘要。

【rand val】

将文件加载到随机数生成器中。

【writerand outfile】

将随机数据写入指定文件。

【engine val】

使用机器,可能是某种硬件设备。

【engine_impl】

也可以使用-engine提供的引擎进行摘要操作。

三、示例

 

 

 

 

 

 

密码命令

 

 

camellia-256-cbc、camellia-256-ecb,cast

一、描述

在密码学中,camellia是块密码的意思。Camellia算法每块的长度为128位元,密钥长度则可以使用128、192或256位元。具有与AES同等级的安全强度及运算量。这里所描述的两条命令是密钥长度为256位元时两种不同的加密解密模式。

CBC模式:CBC模式的全称是Cipher Block Chaining模式(密文分组链接模式),之所以叫这个名字,是因为密文分组像链条一样相互连接在一起。在CBC模式中,首先将明文分组与前一个密文分组进行XOR运算,然后再进行加密。

ECB模式:ECB模式只进行了加密,而CBC模式则在加密之前进行了一次XOR。

Cast 加密算法是一种类似于DES的置换组合网路(Substitution-Permutation Network,SPN)加密系统,对于微分密码分析、线性密码分析、密码相关分析具有较好的抵抗力。

 

 

 

 二、用法

Openssl enc命令,是用对称加密指令作为enc指令的参数,例如:

 

 openssl提供了N多的对称加密算法指令,enc就是把这些N多的对称的加密算法指令统一集成到enc指令中。当用户使用时,只需使用enc,指定加密算法,就是完成单独的加密算法指令完成的操作。这里的3条命令就对应着3种不同的加密算法。

三、示例

 

 

 

posted @ 2020-10-18 22:05  shihaolin  阅读(1840)  评论(1)    收藏  举报