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.pem
- 将私钥转换为明文
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
复制代码
当你输入这行命令时会提示你填入一下信息:
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 []: // 密码
复制代码
// 拿着 rsacert.csr 签名一个 rsacert.crt 证书
openssl x509 -req -days 3650 -in rsacert.csr -signkey private.pem -out rsacert.crt
复制代码
https协议就是使用 rsacert.crt 证书来加密。 但是 rsacert.crt 是不能直接拿来使用的,最终还是需要一次转换;
openssl x509 -outform der -in rsacert.crt -out rsacert.der
rsacert.der: 文件主要包含一个公钥和一些信息
复制代码
最终需要生产一个 p12,是 rsacert.der 对应的私钥
openssl pkcs12 -export -out p.p12 -inkey private.pem -in rsacert.crt
输入两次密码,就生成了p12
复制代码
然后我们就可以用 p12,来做请求了。