• 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上。

  • 相关阅读:
    Android 4.0新增Space及GridLayout初谈
    phpweb文件上传下载
    文件上传下载
    php大文件上传
    word图片上传到服务器
    文件中心支持上传下载
    文件管理系统开源
    ueditor word图片上传
    web超大文件上传
    java大视频上传实现
  • 原文地址:https://www.cnblogs.com/JaxYoun/p/12672517.html
Copyright © 2020-2023  润新知