• Toncat-OpenSSL双向认证配置(iOS)


    OpenSSL生成证书

    要生成证书的目录下建立几个文件和文件夹,有
    ./demoCA/ 
    ./demoCA/newcerts/ 
    ./demoCA/private/ 
    ./demoCA/index.txt (空文件,生成证书时会将数据记录写入)
    ./demoCA/serial (在serial文件中写入第一个序列号“01”,在生成证书时会以此递增)

    openssl中有如下后缀名的文件

    .key格式:私有的密钥
    .csr格式:证书签名请求(证书请求文件),含有公钥信息,certificate signing request的缩写
    .crt格式:证书文件,certificate的缩写
    .crl格式:证书吊销列表,Certificate Revocation List的缩写
    .pem格式:用于导出,导入证书时候的证书的格式,有证书开头,结尾的格式
     
    常用证书协议
    x509v3: IETF的证书标准
    x.500:目录的标准
    SCEP:  简单证书申请协议,用http来进行申请,数据有PKCS#7封装,数据其实格式也是PKCS#10的
    PKCS#7:  是封装数据的标准,可以放置证书和一些请求信息
    PKCS#10:  用于离线证书申请的证书申请的数据格式,注意数据包是使用PKCS#7封装这个数据
    PKCS#12:  用于一个单一文件中交换公共和私有对象,就是公钥,私钥和证书,这些信息进行打包,加密放在存储目录中,CISCO放在NVRAM中,用户可以导出,以防证书服务器挂掉可以进行相应恢复。思科是.p12,微软是.pfx


    步骤:
    生成CA私钥--》生成CA证书请求--》自签名得到根证书(CA给自已颁发的证书)
    生成私钥--》生成证书请求--》通过CA签名得到证书

    1.生成X509格式的CA自签名证书 
    req -new -x509 -keyout ca.key -out ca.crt

    rsa -in ca.key -out ca.key.unsecure //生成一个不需要口令保护的私钥,不推荐,可以于去除密码

    2.生成服务端的私钥(key文件)及csr 文件
    genrsa -des3 -out server.key 1024 

    req -new -key server.key -out server.csr

    3.生成客户端的私钥(key文件)及csr文件 
    genrsa -des3 -out client.key 1024 
    req -new -key client.key -out client.csr

    4.用生成的CA的证书为刚才生成的server.csr,client.csr文件签名 
    ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key 
    ca -in client.csr -out client.crt -cert ca.crt -keyfile ca.key

    【注意】

    *进行CA签名获取证书时,需要注意国家、省、单位需要与CA证书相同,否则会报错

    *进行CA签名获取证书时,如果信息完全和已有证书信息相同会报错,即不能生成相同的证书,报错信息为:

    failed to update database
    TXT_DB error number 2

    *如出现:unable to access the ./demoCA/newcerts directory
    这时可找到配置文件,一般是openssl.cnf,修改配置文件项为你生成证书的路径(修改配置文件时可能出现权限问题,用sudo chmod 777 openssl.cn获取权限)

    [ CA_default ]

    dir  = 你的路径

    5. 生成p12格式证书 (思科是.p12,微软是.pfx)
    pkcs12 -export -inkey client.key -in client.crt -out client.pfx 
    pkcs12 -export -inkey server.key -in server.crt -out server.pfx
    说明:-in 为欲转换为p12文件的证书文件,-inkey为与转换为p12文件的证书私钥文件,-passin 为私钥文件密码,-out为p12文件,-passout为p12文件打开密码

    jks是JAVA的keytools证书工具支持的证书私钥格式。
    pfx是微软支持的私钥格式。

    ca证书生成jks文件

    genrsa -out ca.pem 1024 

    req -new -out ca.csr -key ca.pem
    x509 -req -in ca.csr -out ca.cer -signkey ca.key -CAcreateserial -days 3650
    退出openssl,然后
    keytool -import -v -trustcacerts -storepass 123456 -alias root -file ca.cer -keystore ca.jks

    6.生成pem格式证书 
    有时需要用到pem格式的证书,可以用以下方式合并证书文件(crt)和私钥文件(key)来生成 
    cat client.crt client.key> client.pem 
    cat server.crt server.key > server.pem 

    7.PFX文件转换为X509证书文件和RSA密钥文件 
    pkcs12 -in server.pfx -nodes -out server.pem 
    rsa -in server.pem -out server2.key 
    x509 -in server.pem -out server2.crt

    8. 其他相关命令
    rsa -noout -text -in ca.key //查看私钥

    Tomcat 配置

    打开Tomcat/conf/server.xml文件,找到并修改以下代码:

     <Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol" SSLEnabled="true"
            maxThreads="150" scheme="https" schemeecure="true"
            keystoreType="PKCS12" keystoreFile="证书存放路径/server.pfx" keystorePass="password"
    
            truststoreType="JKS" truststoreFile="证书存放路径/ca.jks" truststorePass="password" 
            clientAuth="true" sslProtocol="TLS" />

     clientAuth是否启用客户端验证,也可以说是否是双向认证

  • 相关阅读:
    (0.12)elasticsearch分布式集群原理(ES7.9)
    (0.9)elasticsearch分布式集群概念
    mysql分库分表【转】
    (0.11)elasticsearch常用查询,REST API的基本约定,ES增删查改
    mysql全日志自动化脚本
    Java虚拟机--类加载的过程
    Java虚拟机--运行时数据区域
    新题型|结构不良题
    恒等变形的是与非
    分形图与二阶数列
  • 原文地址:https://www.cnblogs.com/liuliuliu/p/4538240.html
Copyright © 2020-2023  润新知