搭建CA服务器的两种方式
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
