共计 6294 个字符,预计需要花费 16 分钟才能阅读完成。
1、DSA 算法概述
DSA 算法是美国的国家标准数字签名算法,它只能用户数字签名,而不能用户数据加密和密钥交换。
DSA 与 RSA 的生成方式不同,RSA 是使用 openssl 提供的指令一次性的生成密钥(包括公钥),而通常情况下,DSA 是先生成 DSA 的密钥参数,然后根据密钥参数生成 DSA 密钥(包括公钥),密钥参数决定了 DSA 密钥的长度,而且一个密钥参数可以生成多对 DSA 密钥对。
DSA 生成的密钥参数是 p、q 和 g,如果要使用一个 DSA 密钥,需要首先共享其密钥参数。关于 DSA 加密的原理,请自行查阅。
2、DSA 算法相关指令及用法
openssl 中 DSA 算法指令主要有三个,分别是
指令 | 功能 |
dsaparam | 生成、处理 DSA 密钥参数,也可以直接生成 DSA 密钥 |
dsa | 处理 DSA 密钥格式的转换 |
gendsa | 根据 DSA 密钥参数生成一个 DSA 密钥 |
从上表可以看到,dsa 和 gendsa 和 RSA 相关指令中的 rsa 和 genrsa 用法相似,但是 DSA 相关指令中没有提供签名和验证操作的 dsautl 指令,所以如果需要使用 DSA 进行签名和验证,需要借助 dgst 指令,该指令在后续章节中介绍。
2.1 dsaparam 指令说明
dsaparam 主要用户生成密钥参数,也可以生成 DSA 密钥其用法如下
其参数与 RSA 相关指令的参数类似,不再一一说明,下面以实例的方式说明其用法
1、生成密钥参数并查看其各个参数值
/*明文查看密钥参数的值*/ | |
linuxidc | :~/test$ openssl dsaparam -in DSAP.pem -text -noout
2、密钥参数格式间的转换
/*pem 格式的密钥参数转为 der 格式*/ | |
linuxidc@linuxidc:~/test$ openssl dsaparam -in DSAP.pem -out DSAP.der -outform der | |
/*der 格式的密钥参数转为 pem 格式*/ | |
linuxidc@linuxidc:~/test$ openssl dsaparam -in DSAP.der -inform der -out R_DSAP.pem | |
linuxidc@linuxidc:~/test$ diff DSAP.pem R_DSAP.pem |
3、直接生成 DSA 密钥
2.1 gendsa 指令说明
gendsa 指令功能简单,即利用输入的密钥参数生成 DSA 密钥
示例如下:
1、根据密钥参数生成密钥
2.1 dsa 指令说明
dsa 和 rsa 指令功能及其类似,如下
示例如下:
1、加密密钥和解密密钥
2、提取 DSA 的公钥
linuxidc@linuxidc:~/test$ openssl dsa -in DSA.pem -out pub.pem -pubout | |
read DSA key | |
writing DSA key |
3、小结
可以看到,DSA 和 RSA 的指令非常相似,熟悉了其中一种,另外一种也很容易上手。而且 openssl 提供的指令虽多,但参数来来回回就那么多,在多数情况下不同指令的相同参数含义大概一样。
到此为止,介绍了对称加密算法指令,非对称加密算法 RSA 和 DSA 相关指令,这些都是一些基础指令,在实际应用中,我们使用 openssl 做的大多数是与 CA 有关的签名、验证、加密、解密等。所以接下来要写的是和实际应用相关的内容,比如证书自签名、二级证书签发、终端证书签发、证书验证等内容。
更多 OpenSSL 相关内容可以查看以下的有用链接:
使用 OpenSSL 命令行构建 CA 及证书 http://www.linuxidc.com/Linux/2015-10/124682.htm
Ubuntu 安装 OpenSSL http://www.linuxidc.com/Linux/2015-10/124001.htm
通过 OpenSSL 提供 FTP+SSL/TLS 认证功能,并实现安全数据传输 http://www.linuxidc.com/Linux/2013-05/84986.htm
Linux 下使用 OpenSSL 生成证书 http://www.linuxidc.com/Linux/2015-05/117034.htm
利用 OpenSSL 签署多域名证书 http://www.linuxidc.com/Linux/2014-10/108222.htm
在 OpenSSL 中添加自定义加密算法 http://www.linuxidc.com/Linux/2015-08/121749.htm
OpenSSL 的详细介绍:请点这里
OpenSSL 的下载地址:请点这里
本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-04/130493.htm
