OpenSSL 使用 RSA

openssl使用RSA

OpenSSL中有RSA的一些经常使用指令,使用它就能够玩转RSA。 其实主要用到三个命令:算法

genrsa: 生成并输入一个RSA密匙
rsautl: 使用RSA密匙进行加密,解密,签名和验证等运算
rsa:   处理RSA密匙的格式转换等问题
复制代码
  • 使用genrsa生成私钥
长度为1024 bit
openssl genrsa -out private.pem 1024
复制代码

  • 从私钥中提取公钥
openssl rsa -in private.pem -pubout -out public.pem
复制代码

此时生成了两个文件 private.pem public.pembash

  • 将私钥转换为明文
openssl rsa -in private.pem -text -out private.txt
复制代码
  • 经过公钥加密数据,私钥解密数据
加密:openssl rsautl -encrypt -in msg.txt -inkey public.pem -pubin -out enc.txt
解密:openssl rsautl -decrypt -in enc.txt -inkey private.pem -out dec.txt
复制代码

  • 经过私钥加密数据,公钥解密数据
加密:openssl rsautl -sign -in msg.txt -inkey private.pem -out enc.txt
解密:openssl rsautl -verify -in enc.txt -inkey public.pem -pubin -out dec.txt
复制代码

HTTPS证书的生成步骤

使用https的同志都知道,https是加密传输数据的。那么就须要一个加密证书,下面咱们来看看证书的生成步骤。加密

// 从刚才生成的证书中提取一个csr(请求证书文件)文件。
openssl req -new -key private.pem -out rsacert.csr
复制代码

当你输入这行命令时会提示你填入一下信息:spa

Country Name (2 letter code): // 城市名称 
State or Province Name (full name): // 省名称
Locality Name (eg, city): // 城市名称
Organization Name (eg, company): // 公司名称
Organizational Unit Name (eg, section): // 组织名称
Common Name (eg, fully qualified host name):// host name
Email Address []: // email
A challenge password []: // 密码
复制代码

这样csr就生成了。就能够那这个csr去请求证书了。就能够去请求签名。 实际上,证书颁发机构也是这样作的,只不过他们具备权威性。在1983年9月12日麻省理工学院在美国为RSA算法申请了专利,因此咱们使用是须要付费的,实际上咱们拿着csr就是权威机构请求证书了。那么具体是怎么作的了。

// 拿着 rsacert.csr 签名一个 rsacert.crt 证书
openssl x509 -req -days 3650 -in rsacert.csr -signkey private.pem -out rsacert.crt
复制代码

https协议就是使用 rsacert.crt 证书来加密。 可是 rsacert.crt 是不能直接拿来使用的,最终仍是须要一次转换;code

openssl x509 -outform der -in rsacert.crt -out rsacert.der
rsacert.der: 文件主要包含一个公钥和一些信息
复制代码

最终须要生产一个 p12,是 rsacert.der 对应的私钥orm

openssl pkcs12 -export -out p.p12 -inkey private.pem -in rsacert.crt
输入两次密码,就生成了p12
复制代码

而后咱们就能够用 p12,来作请求了。cdn

相关文章
相关标签/搜索