openssl生成自签名证书

1,019 阅读1分钟

复制原始配置文件到tmp下面备用

cp /etc/pki/tls/openssl.cnf /tmp/openssl.cnf

修改/tmp/openssl.cnf配置文件

  1. [ req ]   的配置段(没有则新增该配置段)
req_extensions = v3_req
  1.  [v3_req] 的配置段(没有则新增该配置段)
basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
subjectAltName = @alt_names
  1.  [ alt_names ] 的配置段(没有则新增该配置段)
[ alt_names ]
DNS.1 = baidu.com
DNS.2 = www.baidu.cn
DNS.3 = www.baidu.com.cn
DNS.4 = dwz.cn
DNS.5 = *.baidu.com


  1. 修改[ CA_default ]下的如下配置
database	= /usr/local/haproxy/etc/certs/index.txt 
private_key	= /usr/local/haproxy/etc/certs/baidu.ovz.rootca.key

baidu.ovz.rootca.key为根证书

根证书的生成

一 ) 首先创建CA根证书

  1. 生成RSA private key 给CA (3 DES 加密, PEM 格式):

$ openssl genrsa -out baidu.ovz.rootca.key 2048

  1. 产生一个X509结构,PEM格式的自签名证书(当然也可以由CA机构签名)

$ openssl req -sha256 -new -x509 -days 36500 -key baidu.ovz.rootca.key -out baidu.ovz.rootca.crt

  1. 查看该根证书的详细内容

$ openssl x509 -noout -text -in baidu.ovz.rootca.crt

  1. 验证证书有效性

$ openssl verify -CAfile baidu.ovz.rootca.crt baidu.ovz.rootca.crt

第一个为根证书,第二个为需要验证的子证书,由于是自签名,相当于自己给自己颁发的证书。

生成.key 和 .csr


openssl req -new -nodes -keyout baidu.com.key -out baidu.com.csr -config /tmp/openssl.cnf -subj '/C=CN/ST=Shanghai/L=Xuhui/O=@Baidu/OU=OVZ/CN=*.baidu.com/emailAddress=***@qq.com'

生成.crt

openssl ca -policy policy_anything -out baidu.com.crt -config /tmp/openssl.cnf -extensions v3_req -infiles baidu.com.csr  

// openssl verify -CAfile baidu.ovz.rootca.crt bceit.com.crt 验证crt证书

生成.pem

cat baidu.com.crt baidu.com.key > baidu.com.pem
// openssl x509 -noout -text -in baidu.com.pem 查看.pem详情

参考文献

blog.csdn.net/weixin_3438…