如何注册社会保障卡金融账号考试帮APP账号?求详细的注册过程~

用OpenSSL命令行生成证书文件
1.首先要生成服务器端的私钥(key文件):
openssl genrsa -des3 -out server.key 1024
运行时会提示输入密码,此密码用于加密key文件(参数des3便是指加密算法,当然也可以选用其他你认为安全的算法.),以后每当需读取此文件(通过openssl提供的命令或API)都需输入口令.如果觉得不方便,也可以去除这个口令,但一定要采取其他的保护措施!
去除key文件口令的命令:
openssl rsa -in server.key -out server.key
2.设置证书请求(csr文件)
openssl req -new -key server.key -out server.csr -f
生成Certificate Signing Request(CSR),生成的csr文件交给CA签名后形成服务端自己的证书.屏幕上将有提示,依照其指示一步一步输入要求的个人信息即可.
后面的-config 可以不加,也可以像&/etc/sbin/opensslcnf&加载路径。
然后需要输入下列信息:
Country Name: cn 两个字母的国家代号
State or Province Name: An Hui 省份名称
Locality Name: Bengbu 城市名称
Organization Name: Family Network 公司名称
Organizational Unit Name: Home 部门名称
Common Name: Chen Yang 你的姓名
Email Address:
生成 ca.crt 文件,将文件属性改为400,并放在安全的地方
3.生成客户端的公钥:
openssl genrsa -des3 -out client.key 1024
openssl req -new -key client.key -out client.csr -f
4.自签发CA签名。CSR文件必须有CA的签名才可形成证书.可将此文件发送到verisign等地方由它验证,要交一大笔钱。
&openssl req -new -x509 -keyout ca.key -out ca.crt -f
5.用生成的CA的证书为刚才生成的server.csr,client.csr文件签名:
Openssl ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key -f
Openssl ca -in client.csr -out client.crt -cert ca.crt -keyfile ca.key -f
client使用的文件有:ca.crt,client.crt,client.key
server使用的文件有:ca.crt,server.crt,server.key
大体步骤就是这些,也可以利用某些工具
有一个工具可以使用:http://www.openssl.org/contrib/ssl.ca-0.1.tar.gz& 步骤参见
生成密钥也可用keytool,生成私钥文件(.key)和签名请求文件(.csr),openssl签发数字证书,网址http://www.blogjava.net/duanzhimin528/archive//324182.html
以下是自己理解的,不对的请留言,我好改正。
简单点理解就是创建私钥,通过私钥生成证书请求文件,自己或机构认证,签署证书,拷贝到服务器配置文件中生效。
&&&&&&&& 也可以服务器和客服端都认证,这就是某些密钥要生成两遍的原因,这样更安全,有点像支付宝安全插件。
openssl是加密程序的集合体,
apache产生http,及网页的浏览,你也可以用mini-http及https
mod-ssl是apache的插件,但是独立发行,他里面有一个sign.sh,在phg.contrib目录中,对openssl生成的私钥进行加密,也可用openssl自带的一个CA.sh来签证书。
顺便说一句openssl还是很强大的加密工具,相对密码学有深入理解的可以好好看看源代码。
本来是解决mini-http安装后,为什么不要输入密码就直接看到网页的问题,看了一天只弄清楚这个。mini-http问题求前辈指教。
阅读(...) 评论()您的浏览器已经禁用了脚本,这会严重影响您正常使用本站的功能,请开启!
当前位置: &
openssl命令
OpenSSL是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。在OpenSSL被曝出现严重安全漏洞后,发现多数通过SSL协议加密的网站使用名为OpenSSL的开源软件包。由于这是互联网应用最广泛的安全传输方法,被网银、在线支付、电商网站、门户网站、电子邮件等重要网站广泛使用,所以该漏洞影响范围广大。
OpenSSL有两种运行模式:交互模式和批处理模式。
直接输入openssl回车进入交互模式,输入带命令选项的openssl进入批处理模式。
OpenSSL整个软件包大概可以分成三个主要的功能部分:密码算法库、SSL协议库以及应用程序。OpenSSL的目录结构自然也是围绕这三个功能部分进行规划的。&
对称加密算法
OpenSSL一共提供了8种对称加密算法,其中7种是分组加密算法,仅有的一种流加密算法是RC4。这7种分组加密算法分别是AES、DES、Blowfish、CAST、IDEA、RC2、RC5,都支持电子密码本模式(ECB)、加密分组链接模式(CBC)、加密反馈模式(CFB)和输出反馈模式(OFB)四种常用的分组密码加密模式。其中,AES使用的加密反馈模式(CFB)和输出反馈模式(OFB)分组长度是128位,其它算法使用的则是64位。事实上,DES算法里面不仅仅是常用的DES算法,还支持三个密钥和两个密钥3DES算法。&
非对称加密算法
OpenSSL一共实现了4种非对称加密算法,包括DH算法、RSA算法、DSA算法和椭圆曲线算法(EC)。DH算法一般用户密钥交换。RSA算法既可以用于密钥交换,也可以用于数字签名,当然,如果你能够忍受其缓慢的速度,那么也可以用于数据加密。DSA算法则一般只用于数字签名。&
信息摘要算法
OpenSSL实现了5种信息摘要算法,分别是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算法计算文件.txt的哈西值,输出到stdout:
# openssl dgst -sha1 file.txt
用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 :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 89D4BFAA3DBFFD030A314B29
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加密.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
最近更新的命令
在Linux命令大全(man.linuxde.net)可以查询您所需要的Linux命令教程和相关实例。如果您觉得本站内容对您有所帮助,请推荐给更多需要帮助的人。利用openSSL命令行来生成服务器和客户端证书(*)
我的图书馆
利用openSSL命令行来生成服务器和客户端证书(*)
一)双向认证:
客户端向服务器发送消息,首先把消息用客户端证书加密然后连同时把客户端证书一起发送到服务器端,
服务器接到消息后用首先用客户端证书把消息解密,然后用服务器私钥把消息加密,把服务器证书和消息一起发送到客户端,
客户端用发来的服务器证书对消息进行解密,然后用服务器的证书对消息加密,然后在用客户端的证书对消息在进行一次加密,连同加密消息和客户端证书一起发送到服务器端,
到服务器端首先用客户端传来的证书对消息进行解密,确保消息是这个客户发来的,然后用服务器端的私钥对消息在进行解密这个便得到了明文数据。
单向认证:
客户端向服务器发送消息,
服务器接到消息后,用服务器端的密钥库中的私钥对数据进行加密,然后把加密后的数据和服务器端的公钥一起发送到客户端,
客户端用服务器发送来的公钥对数据解密,然后在用传到客户端的服务器公钥对数据加密传给服务器端,服务器用私钥对数据进行解密,
这就完成了客户端和服务器之间通信的安全问题,但是单向认证没有验证客户端的合法性。
在OpenSSL的安装目录下的misc目录下,运行脚本sudo&./CA.sh&-newCA。运行完后会生成一个demoCA的目录,里面存放了CA的证书和私钥。在serial文件中写入第一个序列号“01”二)openssl生成私钥文件(.key)和签名请求文件(.csr),以及签发数字证书
操作目录是openssl/bin(没办法改不了环境变量,如果你可以改的话,就不用在这个目录下工作了),为了方便把f也复制到了这个目录下来。文件名都是以自己使用的来说:
1.首先要生成服务器端的私钥(key文件):
openssl genrsa -des3 -out server/server.key 2048
运行时会提示输入密码,此密码用于加密key文件(参数des3便是指加密算法,当然也可以选用其他你认为安全的算法.),以后每当需读取此文件(通过openssl提供的命令或API)都需输入口令.如果觉得不方便,也可以去除这个口令,但一定要采取其他的保护措施!
去除key文件口令的命令:
openssl rsa -in server/server.key -out server/server.key也可以直接用不需要PIN的命令:openssl genrsa -out server/server.key 2048
2.openssl req -new -key server/server.key -out server/server.csr -f
生成Certificate Signing Request(CSR),生成的csr文件交给CA签名后形成服务端自己的证书.屏幕上将有提示,依照其指示一步一步输入要求的个人信息即可.
3.对客户端也作同样的命令生成key及csr文件:
openssl genrsa& -out client/client.key 2048
openssl req -new -key client/client.key -out client/client.csr -f
4.CSR文件必须有CA的签名才可形成证书.可将此文件发送到verisign等地方由它验证,也可自己生成CA证书:
openssl req -new -x509 -keyout ca.key -out ca.crt -f同样这里需要输key的PIN,去除key文件口令的命令:
openssl rsa -in ca.key -out ca.key
5.用生成的CA的证书为刚才生成的server.csr,client.csr文件签名:
openssl ca -in server/server.csr -out server/server.crt -cert ca.crt -keyfile ca.key -f
openssl ca -in client/client.csr -out client/client.crt -cert ca.crt -keyfile ca.key -f
现在我们所需的全部文件便生成了.
client使用的文件有:ca.crt,client.crt,client.key
server使用的文件有:ca.crt,server.crt,server.key
.crt文件和.key可以合到一个文件里面,本人把2个文件合成了一个.pem文件(直接拷贝过去就行了)
---------------------------------------------------
合并证书文件(crt)和私钥文件(key):
#cat client.crt client.key & client.pem
#cat server.crt server.key & server.pem
TA的最新馆藏OpenSSL(9)
本文主要介绍OpenSSL 摘要计算命令。
用什么摘要算法指令代替时,默认使用该算法,但也可以指定其他算法。
使用指令 openssl dgst -
dgst指令 可以用其他摘要算法指令(如md4\md5\sha1…)代替,含义一样
计算摘要值
未指定特定摘要算法时,默认使用md5算法。
openssl dgst [-算法名称] [-其他选项] inputfile
支持的摘要算法:
-md5:默认选项,用md5算法进行摘要。
-md4:用md4算法进行摘要。
-mdc2:用mdc2算法进行摘要。
-sha1:用sha1算法进行摘要。
-sha:用sha算法进行摘要。
-sha224:用sha算法进行摘要。
-ripemd160:用ripemd160算法进行摘要。
-dss1:用dss1算法进行摘要。
-dss1:用whirlpool算法进行摘要。
其他选项含义
-out file:输出到指定文件
-c:打印出两个哈希结果的时候用冒号来分隔开。仅仅设置了[-hex]的时候有效。
-r:用coreutils格式来输出摘要值。
-rand file:产生随机数种子的文件(没发现产生实际效果)。
-d:打印出BIO调试信息值。
-hex:显示ASCII编码的十六进制摘要结果,默认选项。
-binary:以二进制的形式来显示摘要结果值。
签名的一般过程:先对数据进行摘要计算,然后对摘要值用私钥进行签名。
RSA密钥签名验签
1.这里演示以RSA私钥签名为例。因此先生成RSA密钥对。
openssl genrsa -out rsa_private.key
(省略参数设置,使用默认值,模数:1024)
由公钥导出私钥。
openssl rsa -in rsa_private.key -pubout -out rsa_public.key
用RSA私钥对SHA1计算得到的摘要值签名。
openssl dgst -sign rsa_private.key -sha1
-out sha1_rsa_file.sign file.txt
用相应的公钥和相同的摘要算法进行验签,否则会失败。
openssl dgst -verify rsa_public.key -sha1 -signature sha1_rsa_file.sign file.txt
也可以使用相同的私钥和相同的摘要算法进行验证。
DSA密钥对签名验签
1.生成DSA参数
openssl dsaparam -out dsa.param 1024
2.由DSA参数产生DSA私钥
openssl gendsa -out dsa_private.key dsa.param
3.由DSA私钥生成DSA公钥
openssl dsa -in dsa_private.key -out dsa_public.key -pubout
4.用DSA私钥对SHA384计算的摘要值进行签名。
openssl dgst -sign dsa_private.key -sha384 -out sha384_dsa.sign file.txt
DSA签名对于某些摘要算法不匹配,详见下图。
5.用相应的公钥和摘要算法进行验签
openssl dgst -verify dsa_public.key -sha384 -signature sha384_dsa.sign file.txt
6.用相同的私钥和摘要算法验签
openssl dgst -prverify dsa_private.key -sha384 -signature sha384_dsa.sign file.txt
DSA在每次签名时,使用了随机数k,如果对同一消息进行多次签名,签名结果是不同的,所以DSA是一种随机式数字签名。
HMAC是密钥相关的哈希运算消息认证码,HMAC运算利用哈希算法,以一个密钥和一个消息为输入,生成一个消息摘要作为输出。
openssl dgst -md5 -hmac "asfdsdfsg" file.txt
同系列文章:
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:3913次
排名:千里之外
原创:55篇
(10)(17)(14)(12)(1)(2)(2)1、信息摘要和数字签名概述
信息摘要:对数据进行处理,得到一段固定长度的结果,其特点输入:
1、输出长度固定。即输出长度和输入长度无关。
2、不可逆。即由输出数据理论上不能推导出输入数据
4、对输入数据敏感。当输入数据变化极小时,输出数据也会发生明显的变化
5、防碰撞。即不同的数据数据得到相同输出数据的可能性极低。
由于信息摘要有上述特点,一般保证数据的完整性,对一个大文件进行摘要运算,得到其摘要值。通过网络或者其他渠道传输后,通过验证其摘要值,确定大文件本身有没有发生变化。
数字签名:数字签名其实分成两步,首先对原始文件进行摘要运算,得到摘要值,然后使用公开密钥算法中的私钥对摘要值进行加密。其签名和验证过程如下图所示
有数字签名的过程可以知道,对发送信息进行数字签名,可以保证数字签名的完整性、真实性、不可抵赖性。即接收者可以确认消息的来源、消息的真实,发送者不可以抵赖自己发送的消息,与现实生活中签名的作用大致相同。
2、摘要算法和数字签名相关指令及用法
目前openssl提供的摘要算法有md4、md5、ripemd160、sha、sha1、sha224、sha256、sha512、sha384、wirlpool。可以通过openssl dgst -命令查看。
上面我们已经提到了,数字签名分为摘要和加密两部分。在openssl提供的指令中,并没有区分两者。而是在摘要算法指令中包含了签名和校验参数。例如我们适用openssl md5 -命令可以看到它提供的选项有签名和验证等参数。
在openssl中单独使用摘要算法指令完成摘要或者签名操作,也可以通过dgst完成相同的操作。在签名的时候多数使用RSA私钥或者DSA私钥,当使用RSA私钥的时候,我们可以使用单独的摘要算法指令指定摘要算法进行签名,但当使用DSA使用签名的时候,就必须使用dgst指令,因为使用DSA签名的时候必须使用DSA自身的摘要算法,而openssl没有为它提供相应的指令。
/*有明文文件file.txt和RSA密钥RSA.pem*/
xlzh@cmos:~/test$ ls
/*使用md5指令指定sha1算法,对file.txt进行签名,生成签名文件sign1.txt*/
xlzh@cmos:~/test$ openssl md5 -sha1 -sign RSA.pem -out sign1.txt file.txt
/*使用md5指令指定sha1算法,对file.txt进行签名,生成签名文件sign1.txt*/
xlzh@cmos:~/test$ openssl dgst -sha1 -sign RSA.pem -out sign2.txt file.txt
/*两个签名文件一样,说明两个指令完成相同的功能*/
xlzh@cmos:~/test$ diff sign1.txt sign2.txt
可以看到md5和dgst完成相同的功能。不过让人纠结的是使用md5进行签名的时候可以指定其他摘要算法,笔者觉得太别扭了。所以建议做摘要和签名验证时使用dgst指令,忘记其他&&
dgst指令用法介绍如下
xlzh@cmos:~/test$ openssl dgst -
unknown option '-'
options are
to output the digest with separating colons
//输出的摘要信息以分号隔离,和-hex同时使用
to output the digest in coreutils format
//指定输出的格式
to output debug info
//输出BIO调试信息
output as hex dump
//以16进制打印输出结果
output in binary form
//输出二进制结果
set the HMAC key to arg
//指定hmac的key
-non-fips-allow allow use of non FIPS digest
//允许使用不符合fips标准的摘要算法
sign digest using private key in file
//执行签名操作,后面指定私钥文件
-verify file
verify a signature using public key in file
//执行验证操作,后面指定公钥文件,与prverfify不能同时使用
-prverify file
verify a signature using private key in file
//执行验证操作,后面指定密钥文件,与verfify不能同时使用
-keyform arg
key file format (PEM or ENGINE)
//指定密钥文件格式,pem或者engine
-out filename
output to filename rather than stdout
//指定输出文件,默认标准输出
-signature file signature to verify
//指定签名文件,在验证签名时使用
-sigopt nm:v
signature parameter
//签名参数
create hashed MAC with key
//制作一个hmac 使用key
-mac algorithm
create MAC (not neccessarily HMAC)
//制作一个mac
-macopt nm:v
MAC algorithm parameters or key
//mac算法参数或者key
use engine e, possibly a hardware device.
//使用硬件或者三方加密库
to use the md4 message digest algorithm
//摘要算法使用md4
to use the md5 message digest algorithm
//摘要算法使用md5
-ripemd160
to use the ripemd160 message digest algorithm
//摘要算法使用ripemd160
to use the sha message digest algorithm
//摘要算法使用sha
to use the sha1 message digest algorithm
//摘要算法使用sha1
to use the sha224 message digest algorithm
//摘要算法使用sha223
to use the sha256 message digest algorithm
//摘要算法使用sha256
to use the sha384 message digest algorithm
//摘要算法使用sha384
to use the sha512 message digest algorithm
//摘要算法使用sha512
-whirlpool
to use the whirlpool message digest algorithm
//摘要算法使用whirlpool
3、dgst使用示例
1、仅做摘要运算而不做签名操作
/*对file.txt文件使用sha1算法进行hash运算*/
xlzh@cmos:~/test$ openssl dgst -sha1 file.txt
SHA1(file.txt)= c994aec2aba
/*指定&non-fips-allow参数,与fips标准有关,尚待研究*/
xlzh@cmos:~/test$ openssl dgst &sha1 &non-fips-allow file.txt
SHA1(file.txt)= c994aec2aba
/*指定-d参数,打印调试消息*/
xlzh@cmos:~/test$ openssl dgst -sha1 -d file.txt
BIO[]:ctrl(6) - FILE pointer
BIO[]:ctrl return 0
BIO[]:ctrl(108) - FILE pointer
BIO[]:ctrl return 1
BIO[]:read(0,8192) - FILE pointer
BIO[]:read return 37
BIO[]:read(0,8192) - FILE pointer
BIO[]:read return 0
SHA1(file.txt)= c994aec2aba
BIO[]:ctrl(1) - FILE pointer
BIO[]:ctrl return 0
BIO[]:Free - FILE pointer
/*指定-c -hex参数,以16进制打印结果*/
xlzh@cmos:~/test$ openssl dgst -sha1 -c -hex file.txt
SHA1(file.txt)= c9:94:ae:c2:a9:00:72:21:a9:b9:11:3b:8a:b6:0a:60:14:47:40:c9
/*指定-r参数,输出结果如下所示,然并卵&&*/
xlzh@cmos:~/test$ openssl dgst -sha1 -r file.txt
c994aec2aba *file.txt
/*指定-binary参数,输入结果为二进制*/
xlzh@cmos:~/test$ openssl dgst -sha1 -binary file.txt
??&r!??;??
`G@xlzh@cmos:~/test$
2、使用RSA密钥进行签名验证操作
/*摘要算法选取sha256,密钥RSA密钥,对file.txt进行签名*/
xlzh@cmos:~/test$ openssl dgst -sign RSA.pem -sha256 -out sign.txt file.txt
/*使用RSA密钥验证签名(prverify参数),验证成功*/
xlzh@cmos:~/test$ openssl dgst -prverify RSA.pem -sha256 -signature sign.txt file.txt
Verified OKt
/*从密钥中提取公钥*/
xlzh@cmos:~/test$ openssl rsa -in RSA.pem -out pub.pem -pubout
writing RSA key
/*使用RSA公钥验证签名(verify参数),验证成功*/
xlzh@cmos:~/test$ openssl dgst -verify pub.pem -sha256 -signature sign.txt file.txt
Verified OK
3、使用DSA密钥进行签名验证操作
/*使用DSA算法,摘要算法sha256,对file.txt进行签名*/
xlzh@cmos:~/test$ openssl dgst -sign DSA.pem -sha256 -out sign.txt file.txt
/*使用DSA密钥验证签名*/
xlzh@cmos:~/test$ openssl dgst -prverify DSA.pem -sha256 -signature sign.txt file.txt
Verified OK
/*使用DSA算法,摘要算法dss1,对file.txt进行签名*/
xlzh@cmos:~/test$ openssl dgst -sign DSA.pem -dss1 -out sign1.txt file.txt
/*使用DSA密钥验证签名*/
xlzh@cmos:~/test$ openssl dgst -prverify DSA.pem -dss1 -signature sign1.txt file.txt
Verified OK
/*提取公钥*/
xlzh@cmos:~/test$ openssl dsa -in DSA.pem -out pub.pem -pubout
read DSA key
writing DSA key
/*使用DSA公钥验证签名*/
xlzh@cmos:~/test$ openssl dgst -verify pub.pem -dss1 -signature sign1.txt file.txt
Verified OK
/*使用DSA公钥验证签名*/
xlzh@cmos:~/test$ openssl dgst -verify pub.pem -sha256 -signature sign.txt file.txt
Verified OK
xlzh@cmos:~/test$
根据dgst man手册的定义,如果使用DSA算法进行签名验证,必须使用dss1摘要算法,但是本实验证明使用其他摘要算法也可以签名验证。此处不明白,希望大牛指点&&
4、HMAC的使用
MAC 消息认证码,构造方法可以基于hash,也可以基于对称加密算法,HMAC是基于hash的消息认证码。数据和密钥作为输入,摘要信息作为输出,常用于认证。
xlzh@cmos:~/test$ openssl dgst
-sha256 -hmac 123456
HMAC-SHA256(file.txt)= b8eac9b58fde06f4738dceb4fb1fc47b4dfa
例如用户登录服务器
1、服务器给客户端发送一个随机数
2、客户端使用随机数作为密钥和用户密码做HMAC,结果发送给服务器
3、服务器去除存储的用户密码,也是用随机数与用户密码做HMAC,根据HMAC结果是否一样确认用户身份。
4、遗留问题
dgst中sigopt、mac、macopt参数的含义即使用方法,因为doc都没给出具体例子,待研究openssl源码后进行补充
为什么使用DSA签名的时候可以选择其他hash算法(man 手册说只能使用dss1)
还有dgst的hmac和hmac参数,没错,你没看错,它的确提供了两个完全一样的参数,给出的解释还不一样,还是研究源码去吧.
可恶的openssl&&
阅读(...) 评论()

我要回帖

更多关于 怎么注销京东金融账号 的文章

 

随机推荐