openssl 生成自签证书及查看证书细节
转自: https://www.cnblogs.com/threegun/p/7130985.html
生成X509格式的CA自签名证书
# openssl req -new -x509 -keyout ca.key -out ca.crt
生成服务端的私钥(key文件)及csr文件
# openssl genrsa -des3 -out server.key 1024
# openssl req -new -key server.key -out server.csr
生成客户端的私钥(key文件)及csr文件
# openssl genrsa -des3 -out client.key 1024
# openssl req -new -key client.key -out client.csr
用生成的CA的证书为刚才生成的server.csr,client.csr文件签名
# openssl ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key
# openssl ca -in client.csr -out client.crt -cert ca.crt -keyfile ca.key
生成p12格式证书
# openssl pkcs12 -export -inkey client.key -in client.crt -out client.pfx
# openssl pkcs12 -export -inkey server.key -in server.crt -out server.pfx
生成pem格式证书
有时需要用到pem格式的证书,可以用以下方式合并证书文件(crt)和私钥文件(key)来生成
# cat client.crt client.key> client.pem
# cat server.crt server.key > server.pem
PFX文件转换为X509证书文件和RSA密钥文件
# openssl pkcs12 -in server.pfx -nodes -out server.pem
# openssl rsa -in server.pem -out server2.key
# openssl x509 -in server.pem -out server2.crt
PEM--DER/CER(BASE64--DER编码的转换)
# openssl x509 -outform der -in server.pem -out server.cer
这样生成服务端证书:ca.crt, server.key, server.crt, server.pem, server.pfx,
客户端证书:ca.crt, client.key, client.crt, client.pem, client.pfx
openssl x509部分命令
打印出证书的内容:
openssl x509 -in cert.pem -noout -text
打印出证书的系列号
openssl x509 -in cert.pem -noout -serial
打印出证书的拥有者名字
openssl x509 -in cert.pem -noout -subject
以RFC2253规定的格式打印出证书的拥有者名字
openssl x509 -in cert.pem -noout -subject -nameopt RFC2253
在支持UTF8的终端一行过打印出证书的拥有者名字
openssl x509 -in cert.pem -noout -subject -nameopt oneline -nameopt -escmsb
打印出证书的MD5特征参数
openssl x509 -in cert.pem -noout -fingerprint
打印出证书的SHA特征参数
openssl x509 -sha1 -in cert.pem -noout -fingerprint
把PEM格式的证书转化成DER格式
openssl x509 -in cert.pem -inform PEM -out cert.der -outform DER
把一个证书转化成CSR
openssl x509 -x509toreq -in cert.pem -out req.pem -signkey key.pem
给一个CSR进行处理,颁发字签名证书,增加CA扩展项
openssl x509 -req -in careq.pem -extfile openssl.cnf -extensions v3_ca -signkey key.pem -out cacert.pem
给一个CSR签名,增加用户证书扩展项
openssl x509 -req -in req.pem -extfile openssl.cnf -extensions v3_usr -CA cacert.pem -CAkey key.pem -CAcreateserial
查看csr文件细节:
openssl req -in my.csr -noout -text
转自:https://www.cnblogs.com/gradven/p/5353256.html
1.首先要生成服务器端的私钥(key文件):
命令:
openssl genrsa -des3 -out server.key 1024
运行时会提示输入密码,此密码用于加密key文件(参数des3便是指加密算法,当然也可以选用其他你认为安全的算法.),以后每当需读取此文件(通过openssl提供的命令或API)都需输入口令
2. 对服务端生成CSR和key
命令:
openssl req -new -key server.key -out server.csr -config /etc/pki/tls/openssl.cnf
生成Certificate Signing Request(CSR),生成的csr文件交给CA签名后形成服务端自己的证书.屏幕上将有提示,依照其指示一步一步输入要求的个人信息即可.
3.对客户端也作同样的命令生成key及csr文件:
命令:
openssl genrsa -des3 -out client.key 1024
openssl req -new -key client.key -out client.csr -config /etc/pki/tls/openssl.cnf
4.CSR文件必须有CA的签名才可形成证书.可将此文件发送到verisign等地方由它验证,需要交费用,这里说下怎么自己做CA。
命令:
openssl req -new -x509 -keyout ca.key -out ca.crt -config /etc/pki/tls/openssl.cnf
5.用生成的CA的证书为刚才生成的server.csr,client.csr文件签名:
命令:
openssl ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key -config /etc/pki/tls/openssl.cnf
openssl ca -in client.csr -out client.crt -cert ca.crt -keyfile ca.key -config /etc/pki/tls/openssl.cnf
遇到的问题:
如果提示没有/etc/pki/CA/index.txt 或者serial文件,那么就按照路径新建文件即可。
3078239980:error:0D066096:asn1 encoding routines:a2i_ASN1_INTEGER:short line:f_int.c:215:
提示error while loading serial number,一般是因为serial文件中没有赋初值
解决办法
[root@test1 ~]#cd /etc/pki/CA
[root@test1 CA]# echo "00" >serial
[root@test1 CA]# cat serial
00
还有一个问题在CA签名时,最后出现failed to update database错误
遇到这个错误,只需要清空/etc/pki/CA/index.txt的内容再签发就可以成功了。
修改CA的一些配置文件
vi /etc/pki/tls/openssl.cnf
:
default_days = 3650 修改证书有效期