• 记录一次安卓双向认证


    刚开始使用 openssl 生成证书给客户端用时,某些版本的手机提示 verify chain faild,

    找不到原因、随放弃

    后来发现除了openssl还有keytool

    于是参考了以下三篇文章

    生成交换证书

    转keystore到pfx

    通过pkf和cer导出key,pem文件

    1.生成客户端keystore

    keytool -genkeypair -alias client -keyalg RSA -validity 3650 -keypass 123456 -storepass 123456 -keystore client.jks
    

    2.生成服务端keystore

    keytool -genkeypair -alias server -keyalg RSA -validity 3650 -keypass 123456 -storepass 123456 -keystore server.keystore
    //注意:CN必须与IP地址匹配,否则需要修改host
    

    3.导出客户端证书

    keytool -export -alias client -file client.cer -keystore client.jks -storepass 123456 
    

    4.导出服务端证书

    keytool -export -alias server -file server.cer -keystore server.keystore -storepass 123456 
    

    5.重点:证书交换

    将客户端证书导入服务端keystore中,再将服务端证书导入客户端keystore中, 一个keystore可以导入多个证书,生成证书列表。
    生成客户端信任证书库(由服务端证书生成的证书库):
        keytool -import -v -alias server -file server.cer -keystore truststore.jks -storepass 123456 
    将客户端证书导入到服务器证书库(使得服务器信任客户端证书):
        keytool -import -v -alias client -file client.cer -keystore server.keystore -storepass 123456 
    

    6.生成Android识别的BKS库文件

    用Portecle工具转成bks格式,最新版本是1.10。
    下载链接:https://sourceforge.net/projects/portecle/
    运行protecle.jar将client.jks和truststore.jks分别转换成client.bks和truststore.bks,然后放到android客户端的assert目录下
     
    >File -> open Keystore File -> 选择证书库文件 -> 输入密码 -> Tools -> change keystore type -> BKS -> save keystore as -> 保存即可
     
    这个操作很简单,如果不懂可自行百度。
     
    我在Windows下生成BKS的时候会报错失败,后来我换到CentOS用OpenJDK1.7立马成功了,如果在这步失败的同学可以换到Linux或Mac下操作,
    将生成的BKS拷贝回Windows即可。
    
  • 相关阅读:
    mysql5.7编译安装
    web服务部署工具使用介绍
    Clang Static Analyzer
    MySQL中character set与collation
    Linux 编译运行查找头文件和库的顺序
    git入门及使用记录
    CentOS7通过yum安装gdb8 gcc8 g++8的方法
    win10子系统设置开机启动ssh服务
    STL中map的使用
    C++逆序输出字符串
  • 原文地址:https://www.cnblogs.com/lisq/p/10154647.html
Copyright © 2020-2023  润新知