概述
Openssl生成ssl证书的流程
SSL证书用于在客户端浏览器和Web服务器之间建立一条SSL安全通道(Secure Socket Layer)。SSL安全协议主要用来提供对用户和服务器的认证;对传送的数据进行加密和隐藏;确保数据在传送中不被改变,即数据的完整性,现已成为该领域中全球化的标准。通过服务器端和客户端安装证书可以激活SSL协议,实现数据信息在客户端和服务器之间的加密传输,防止以后的数据信息的泄露。保证了双方传递信息的安全性,而且用户可以通过服务器证书验证他所访问的网站是否是真实可靠。SSL网站不同于一般的Web站点,它使用“HTTPS”协议。
x509证书链
x509证书一般会用到三类文件,key、csr和crt。
key是私用密钥,openssl格式,通常是rsa算法。
csr是证书请求文件,用于申请证书。在制作csr文件的时候,必须使用自己的私钥来签署申请,还可以设定一个密钥。
crt是CA认证后的证书文件(windows下面的csr,其实是crt),签署人用自己的key给你签署的凭证。
签发流程
1.首先要有一个CA根证书,然后用CA根证书来签发用户证书。
2. 用户进行证书申请:一般先生成一个私钥,然后用私钥生成证书请求(证书请求里应含有公钥信息),再利用证书服务器的CA根证书来签发证书。
证书类型
(1)自签名证书(一般用于顶级证书、根证书): 证书的名称和认证机构的名称相同.
(2)根证书:根证书是CA认证中心给自己颁发的证书,是信任链的起始点。任何安装CA根证书的服务器都意味着对这个CA认证中心是信任的。
(3)数字证书则是由证书认证机构(CA)对证书申请者真实身份验证之后,用CA的根证书对申请人的一些基本信息以及申请人的公钥进行签名(相当于加盖发证书机构的公章)后形成的一个数字文件。数字证书包含证书中所标识的实体的公钥(就是说你的证书里有你的公钥),由于证书将公钥与特定的个人匹配,并且该证书的真实性由颁发机构保证(就是说可以让大家相信你的证书是真的),因此,数字证书为如何找到用户的公钥并知道它是否有效这一问题提供了解决方案。
后缀名文件
.key格式:私有的密钥
.csr格式:证书签名请求(证书请求文件),含有公钥信息,certificate signing request的缩写
.crt格式:证书文件,certificate的缩写
.crl格式:证书吊销列表,Certificate Revocation List的缩写
.pem格式:用于导出,导入证书时候的证书的格式,有证书开头,结尾的格式
使用Openssl生成CA根证书
生成CA私钥(.key)–>生成CA证书请求(.csr)–>自签名得到根证书(.crt)(CA给自已颁发的证书)。
#Generate CA private key
openssl genrsa -out ca.key 2048 # Generate CSR
openssl req -new -key ca.key -out ca.csr
# Generate Self Signed certificate(CA 根证书)
openssl x509 -req -days 365 -in ca.csr -signkey ca.key -out ca.crt
客户端或服务器端证书的生成
生成私钥(.key)–>生成证书请求(.csr)–>用CA根证书签名得到证书(.crt)
服务器端用户证书:
# private key
$openssl genrsa -des3 -out server.key 1024
# generate csr
$openssl req -new -key server.key -out server.csr
# generate certificate
$openssl ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key
客户端用户证书:
$openssl genrsa -des3 -out client.key 1024
$openssl req -new -key client.key -out client.csr
$openssl ca -in client.csr -out client.crt -cert ca.crt -keyfile ca.key
生成pem格式证书:
用到pem格式证书时,合并证书文件(crt)和私钥文件(key)来生成
$cat client.crt client.key> client.pem
$cat server.crt server.key > server.pem
此时得到:
服务端证书:ca.crt, server.key, server.crt, server.pem
客户端证书:ca.crt, client.key, client.crt, client.pem
附:openssl基本操作
密钥操作:
生成RSA私钥(无加密)
openssl genrsa -out rsa_private.key 2048
生成RSA公钥
openssl rsa -in rsa_private.key -pubout -out rsa_public.key
查看私钥明细(-pubin参数查看公钥明细)
openssl rsa -in rsa_private.key -noout -text
生成证书操作:
生成 RSA 私钥和自签名证书:
req是证书请求的子命令,-newkey rsa:2048 -keyout private_key.pem表示生成私钥(PKCS8格式),-nodes 表示私钥不加密,若不带参数将提示输入密码;-x509表示输出证书,-days365 为有效期,此后根据提示输入证书拥有者信息;若执行自动输入,可使用-subj选项;
openssl req -newkey rsa:2048 -nodes -keyout rsa_private.key -x509 -days 365 -out cert.crt
使用已有RSA 私钥生成自签名证书:
-new 指生成证书请求,加上-x509 表示直接输出证书,-key 指定私钥文件
openssl req -new -x509 -days 365 -key rsa_private.key -out cert.crt
使用 CA 证书及CA密钥对请求签发证书进行签发,生成 x509证书
openssl x509 -req -days 3650 -in server.csr -CA ca.crt -CAkey ca.key -passin pass:111111 -CAcreateserial -out server.crt
查看证书明细
openssl x509 -in cert.crt -noout -text
转换证书编码格式
openssl x509 -in cert.cer -inform DER -outform PEM -out cert.pem
查看CSR的细节
openssl req -noout -text -in server.csr
最后
以上就是现实冰棍为你收集整理的Openssl生成证书Openssl生成ssl证书的流程的全部内容,希望文章能够帮你解决Openssl生成证书Openssl生成ssl证书的流程所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复