1, 直接生成私钥和证书
openssl req -new -x509 -keyout ca.key -out ca.crt
# 生产一个新的根证书和私钥
然后 进行认证
openssl genrsa -out client.key # 生成客户端私钥
openssl req -new -key client.key -out client.csr # 生成客户端证书认证申请
openssl ca -in client.csr -out client.cer -cert ca.cer -keyfile ca.key -config openssl.cnf
# 用第一步的根证书和私钥 对客户端申请签名, 最终生成的证书就是客户端证书
2, 先生成私钥 private.key
用私钥生成自签名的证书,
openssl genrsa -out mypvk.pem # 生成私钥
openssl req -new -keymypvk.pem -out rootCA.csr #申请生成证书
openssl ca -selfsign -in rootCA.csr # 字签名生成根证书
其他的用法
从证书中提取公钥(pubkey)
openssl x509 -in ca.crt -inform PEM -out ca.der -outform DER
显示公钥跟证书信息:
openssl x509 -in ca.crt -pubkey
生成rsa密钥
openssl genrsa -des3 -out prikey.pem
去除掉密钥文件保护密码
openssl rsa -in prikey.pem -out prikey.pem
分离出公钥
openssl rsa -in prikey.pem -pubout -out pubkey.pem(获取证书中的公钥 openssl req -in myreq.pem -out -pubkey.pem)
对文件进行签名
open rsautl -sign -inkey prikey.pem -in a.txt -out sig.dat
验证签名
openssl rsautl -verify -inkey prikey.pem -in sig.dat
用公钥对文件加密
openssl rsautl -encrypt -pubin -inkey pubkey.pem -in a.text -out b.text
用私钥解密
openssl rsautl -decrypt -inkey prikey.pem -in b.text
用证书中的公钥加密
opensll rsautl -encrypt -certin -inkey cert1.pem -in a.txt
或者
生成一个没有加密的ca私钥
openssl genrsa -out ca.key.pem 1024
生成ca对应的csr文件
openssl req -new -key ca.key.pem -out ca.csr
自签名
openssl x509 -in ca.csr -out ca.cer -req -signkey ca.key.pem -days 7300 -extensions v3_ca
生成DER格式的私钥
openssl pkcs8 -topk8 -inform PEM -outform DER -in ca.key.pem -out ca.private.der -nocrypt
读取证书的内容,显示在屏幕上
openssl x509 -in server.cer -noout -subject -nameopt RFC2253
将der格式的证书转成pem格式
openssl x509 -inform PEM -outform DER -in server.der -out server.pem
查看SSL加密通信过程
ssldump -a -A -H -i en0
-A -H 显示SSL记录层头,-a显示TCP连接状态
openssl客服端:
openssl s_client -connect mail.prefetch.net:443 -state -nbio
参考:
http://prefetch.net/articles/debuggingssl.html