您当前的位置: 首页 >  ssl

暂无认证

  • 0浏览

    0关注

    92582博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

SSL基础:6:使用openssl进行签名和验证

发布时间:2019-12-10 05:28:51 ,浏览量:0

在这里插入图片描述 这篇文章将通过一个具体的例子来说明使用OpenSSL数字签名与验证的过程。

场景: liumiao有一封写给Michael的信(txt文件),他把内容和一个签名文件放在一起寄给Machael,签名文件用于说明这个文件是liumiao提供的。

写信&对信的内容进行签名 事前准备

准备名为messages的文件,其中保存着liumiao写给Michael的内容。

[root@liumiaocn ~]# mkdir sign
[root@liumiaocn ~]# cd sign
[root@liumiaocn sign]# echo -n "Hello ,this is greetings from liumiao" >messages
[root@liumiaocn sign]# cat messages 
Hello ,this is greetings from liumiao[root@liumiaocn sign]# 
[root@liumiaocn sign]#
生成签名用的私钥

因为需要使用私钥进行签名,所以这里首先生成一个私钥文件

[root@liumiaocn sign]# ls
messages
[root@liumiaocn sign]# openssl genrsa -out rsa_key.private
Generating RSA private key, 2048 bit long modulus (2 primes)
..+++++
...............+++++
e is 65537 (0x010001)
[root@liumiaocn sign]# ls
messages  rsa_key.private
[root@liumiaocn sign]#
使用私钥文件对messages文件进行签名

使用刚刚生成的私钥文件使用md5算法对messages文件进行签名,签名后生成一个名为messages.sign的签名文件

[root@liumiaocn sign]# openssl dgst -md5 -out messages.sign -sign rsa_key.private messages 
[root@liumiaocn sign]# ls
messages  messages.sign  rsa_key.private
[root@liumiaocn sign]#
验证签名 验证方式1: 使用私钥来验证签名文件

Michael收到信和签名文件之后,如果Michael也有私钥的话,可以使用私钥来验证签名文件,执行示例如下所示:

[root@liumiaocn sign]# openssl dgst -md5 -prverify rsa_key.private -signature messages.sign messages
Verified OK
[root@liumiaocn sign]#
验证方式2: 使用公钥来验证签名

由于私钥的特殊性,注定不能得到广泛传播,而从私钥中生成的公钥进行签名的验证更加符合实际的使用情况。首先从私钥生成一个公钥:

[root@liumiaocn sign]# openssl rsa -pubout -in rsa_key.private -out rsa_key.public
writing RSA key
[root@liumiaocn sign]# ls
messages  messages.sign  rsa_key.private  rsa_key.public
[root@liumiaocn sign]# cat rsa_key.public 
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA6XPTRGxvZK3RYgVjJ4XV
W8PO0AJUJsoEmdrVO/WG5nuKtbDtyInNAjwN0saHi+3CAWr2A9u8k6j3Mopag1Pw
Sh8SDhmE3y1bI1xL/5x4pm0+ZVtfa0ReyyNOX4IQUSYJe6IyS29y/5eMc970gmig
7VMgfr1KpV4oR4b5bmWXbNIOKORoorbhmtmLt+SPwuqO5EWJlwC6AT4p1JB1B8xB
pfjz2dRRL4u16SxPfZeID6xDMIq14KBgCNVv9FdSw+6KSsWY3lj7nOGeoqJ3eW02
aD40wnezDLXounaNngDu62AItVdooglUlBNCqvYfpCEownrW1LRBh8hpOl6xf3PI
9QIDAQAB
-----END PUBLIC KEY-----
[root@liumiaocn sign]#

Michael获得此公钥则是比较简单和正常的事情,然后结合messages文件和签名文件即可进行签名的验证了,执行示例如下所示

[root@liumiaocn sign]# openssl dgst -md5 -verify rsa_key.public -signature messages.sign messages
Verified OK
[root@liumiaocn sign]#
关注
打赏
1653961664
查看更多评论
立即登录/注册

微信扫码登录

0.5897s