OpenSSL中的一些概念

一、角色

  1. CA机构:负责证书验证和签发机构,客户端和服务端都绝对信任他,相当于裁判员,他拥有自己的公私钥对和证书;

1.因他所持有的证书是用来签发和验证客户端和服务端的证书的,在这个过程中起到了证书衍生者的作用,所以称为根证书;
2.根证书通常需要保存在需要执行验证的地方的,比如浏览器所在的pc或手机,一般是由操作系统厂商Windows、Android内置打包的。
3.如果我们采用【自签】证书的方式,此时CA机构的角色就由我们自己担当,相当于自己当裁判,但裁判的公私钥对和证书生成过程仍不可少。

  1. 服务端:需要自己的公私钥对和证书,公私钥在本地生成,然后提交自己的公钥和身份信息到CA机构申请证书。
  2. 客户端:需要自己的公私钥对和证书,公私钥在本地生成,然后提交自己的公钥和身份信息到CA机构申请证书。

如果是单向认证,比如纯浏览器应用,浏览器方就不需要证书;
一些系统性接入接口往往需要双向证书,比如支付SDK,客户端需要申请证书。

二、证书生成过程:

  1. 自签CA证书(自我授予裁判身份)
#生成根证书私钥(pem文件)                                         
openssl genrsa -out cakey.pem 2048                                       
#生成根证书签发申请文件(csr文件)                                      
openssl req -new -key cakey.pem -out ca.csr -subj "/C=CN/ST=myprovince/L=mycity/O=myorganization/OU=mygroup/CN=myCA"
#自签发根证书(cer文件)                     
openssl x509 -req -days 365 -sha1 -extensions v3_ca -signkey cakey.pem -in ca.csr -out  cacert.pem     
  1. 服务端私钥和证书
#生成服务端私钥                                            
openssl genrsa -out key.pem 2048
#生成证书请求文件
openssl req -new -key key.pem -out server.csr -subj "/C=CN/ST=myprovince/L=mycity/O=myorganization/OU=mygroup/CN=myServer"
#使用根证书签发服务端证书                          
openssl x509 -req -days 365 -sha1 -extensions v3_req -CA ../CA/cacert.pem -CAkey ../CA/cakey.pem -CAserial ca.srl -CAcreateserial -in server.csr -out cert.pem
#使用CA证书验证server端证书                                      
openssl verify -CAfile ../CA/cacert.pem  cert.pem
  1. 客户端私钥和证书(双向认证才需要)
#生成客户端私钥                                   
openssl genrsa  -out key.pem 2048
#生成证书请求文件
openssl req -new -key key.pem -out client.csr -subj "/C=CN/ST=myprovince/L=mycity/O=myorganization/OU=mygroup/CN=myClient"
#使用根证书签发客户端证书
openssl x509 -req -days 365 -sha1 -extensions v3_req -CA  ../CA/cacert.pem -CAkey ../CA/cakey.pem  -CAserial ../server-cert/ca.srl -in client.csr -out cert.pem
#使用CA证书验证客户端证书
openssl verify -CAfile ../CA/cacert.pem  cert.pem  

三、浏览器提示自签名证书不可信问题

这是由于自签名所用的CA机构不在浏览器的受信名单中,所以不信任。
将CA根证书安装到浏览器本地的受信CA机构中即可。
还有可能是域名映射问题,需要修改浏览器本地hosts文件,将服务端域名映射到服务端ip上。

猜你喜欢

转载自www.cnblogs.com/JaxYoun/p/12672517.html
今日推荐