windows下OpenSSL的使用

OpenSSL的使用

一、打开openssl

二、名词解释

  • 什么是CA?
    CA就相当于一个认证机构,只要经过这个机构签名的证书我们就可以当做是可信任的。我们的浏览器中,已经被写入了默认的CA根证书。
  • 什么是证书?
    证书就是将我们的公钥和相关信息写入一个文件,CA用它们的私钥对我们的公钥和相关信息进行签名后,将签名信息也写入这个文件后生成的一个文件。
  • 证书格式(是一种标准):
    x509 这种证书只有公钥,不包含私钥。
    pcks#7 这种主要是用于签名或者加密。
    pcks#12 这种含有私钥,同时也含有公钥,但是有口令保护。
  • 编码方式:
    .pem 后缀的证书都是base64编码
    .der 后缀的证书都是二进制格式
  • 证书:
    .csr 后缀的文件是用于向ca申请签名的请求文件
    .crt .cer 后缀的文件都是证书文件(编码方式不一定,有可能是.pem,也有可能是.der)
  • 私钥:
    .key 后缀的文件是私钥文件

三、查看OpenSSL版本和编译参数

命令行输入:

version -a 

Snipaste_2021-08-12_16-48-11.png

四、RSA密钥操作

1、生成RSA私钥:

genrsa -out rsa_private_key.pem 1024

Snipaste_2021-08-12_16-52-11.png

生成一个名为rsa_private_key.pem文件,用写字板或记事本打开即可,该文件在bin目录下,其中1024是私钥的长度,也可以生成2048等其他长度的私钥。
(注:OpenSSL 使用 PEM 文件格式存储证书和密钥。PEM 实质上是 Base64 编码的二进制内容,再加上开始和结束行,如证书文件的
-----BEGIN CERTIFICATE----- 和 -----END CERTIFICATE-----)

Snipaste_2021-08-12_16-53-28.png

打开rsa_private_key.pem文件,内容如下:

Snipaste_2021-08-12_16-54-01.png

begin和end之间的为密钥

若运行时没有使用管理员身份打开,会出现 “ unable to write ‘random state’ ”错误

2、查看私钥内容

rsa -in rsa_private_key.pem -text -noout

Snipaste_2021-08-12_16-55-46.png

3、利用私钥生成公钥:

rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem

Snipaste_2021-08-12_16-59-07.png

4、查看公钥内容

  • 读取公钥内容:
rsa -pubin -in rsa_public_key.pem 

Snipaste_2021-08-12_16-59-07.png

  • 以文本格式输出公钥内容:
rsa -pubin -in rsa_public_key.pem -text

Snipaste_2021-08-12_16-59-58.png

  • 不输出公钥内容
rsa -pubin -in rsa_public_key.pem -text -noout

Snipaste_2021-08-12_16-55-46.png

五、使用OpenSSL进行文件的加解密

使用OpenSSL命令行进行文件加解密主要有两种方式

1、使用密码方式加密或者解密文件(直接对文件进行加解密)

  • 加密一个文件
 enc -e -aes256 -in sudo.txt -out back.txt

(sudo.txt是加密前的文件,back.txt是加密后的文件,也可以加密Zip、doc等其他形式的文件)
解释: enc 表示对文件进行对称加密或解密, -e 表示对一个文件进行加密操作,-aes256 表示使用 aes256 算法进行加密,也可以是base64等加密方式,-in 表示需要被加密的文件,-out 表示加密之后生成的新文件。加密过程中会要求输入一个加密密码,重复输入两次即可完成对文件的加密。注意:输入密码的时候屏幕上没有任何显示,回车,会提示再次输入。输完后回车。

Snipaste_2021-08-12_17-05-46.png

  • 解密一个文件
 enc -d -aes256 -in back.txt -out data.txt

(back.txt是加密的文件,data.txt是解密之后的文件)
解释: enc 表示对文件进行对称加密或解密, -d 表示对文件进行解密操作,-aes256 表示使用 aes256 算法进行解密,-in 表示需要被解密的文件,-out 表示解密之后生成的新文件,解密一个文件的时候会要求输入加密文件时设置的密码才能进行解密。

Snipaste_2021-08-12_17-07-39.png

2、使用密钥方式加密或者解密文件(先生成密钥,再加密)
(文件为上文生成的含有密钥的.pem文件)

  • 使用 rsa_public_key.pem 公钥加密一个文件 (data.txt 为原始文件,test.txt 为加密之后的文件)
rsautl -encrypt -inkey rsa_public_key.pem -pubin -in data.txt -out test.txt

Snipaste_2021-08-12_17-09-34.png

  • 使用 rsa_private_key.pem 私钥解密一个文件 (back.txt 为加密的文件,demo.txt 为解密之后的文件)
rsautl -decrypt -inkey  rsa_private_key.pem -in test.txt -out demo.txt

Snipaste_2021-08-12_17-12-33.png

posted @ 2021-09-17 13:46  Tame-complexity  阅读(866)  评论(0编辑  收藏  举报