赞
踩
本地测试RSA非对称加密功能时,需要用到签名证书。本文记录作者使用openssl本地生成证书的步骤,并没有深入研究openssl,难免会有错误,欢迎指出!!!
生成证书标准流程:
1、生成私钥(.key)
2、用私钥生成证书请求(.csr)
3、将证书请求文件(.csr)提交给证书颁发机构(CA),CA会对提交的证书请求中的所有信息生成一个摘要,然后使用CA根证书对应的私钥进行加密,这就是所谓的“签名”操作,完成签名后就会得到真正的签发证书(.cer或.crt)
openssl genrsa -out private.key 2048
openssl req -new -key private.key -out private.csr -subj "/C=CN/ST=shanghai/L=shanghai/O=example/OU=it/CN=domain1/CN=domain2"
可以看到标准CA签发流程是用CA机构的私钥去签名。而自签名证书是用自己的私钥签署自己的证书请求,生成自签名SSL证书。
注意:自签名证书不会被浏览器信任,只能用于内部或测试用途。如果你需要一个可被浏览器信任的证书,你需要从受信任的证书颁发机构(CA)获取签名证书。
openssl x509 -req -in private.csr -out private.crt -signkey private.key -days 365
生成的证书格式默认是 PEM,即 Privacy Enhanced Mail,它是 Base64 编码的 ASCII 码文件,常用于存储证书和密钥。PEM 格式的证书通常以 -BEGIN CERTIFICATE- 开始,以 -END CERTIFICATE- 结束,如图:
如果我们把3.2生成自签名证书(ca.crt)和私钥(ca.key)当作私有的CA机构,然后签署其他的证书签名请求,生成私有CA签名的证书,这个过程,可以理解为是私有CA签发证书。
CA签名证书命令:
openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -days 365
生成 私钥(.key) 和 证书签名请求(.csr) 可以用一条命令实现:
openssl req -new -newkey rsa:2048 -nodes -keyout my.key -out my.csr -subj "/C=CN/ST=shanghai/L=shanghai/O=example/OU=it/CN=domain1/CN=domain2"
生成 私钥(.key) 和 证书签名请求(.csr) 再生成 签名证书(.crt)可以用一条命令实现:
openssl req -x509 -newkey rsa:2048 -nodes -keyout my.key -out my.crt -days 3650 -subj "/C=CN/ST=shanghai/L=shanghai/O=example/OU=it/CN=domain1/CN=domain2"
使用私钥生成对应的公钥:
openssl rsa -in private.key -pubout -out public.pub
从证书中提取公钥:
openssl x509 -pubkey -noout -in private.crt > public_key.pem
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。