速记:安卓Netty部署SSL/TLS和避坑指南
Posted 666小奇
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了速记:安卓Netty部署SSL/TLS和避坑指南相关的知识,希望对你有一定的参考价值。
速记:安卓Netty部署SSL/TLS和避坑指南
先按照 https://blog.csdn.net/russle/article/details/99086684 方法操作
第一步 生成服务器端私钥和证书仓库命令
keytool -genkey -alias mySrvAlias1 -keysize 2048 -validity 365 -keyalg RSA -dname “CN=localhost” -keypass skeypass123 -storepass sstorepass456 -keystore yqServer.jks
-alias 别名
-keysize 2048 密钥长度2048位(这个长度的密钥目前可认为无法被暴力破解)
-validity 365 证书有效期365天,测试中365就高了,实际生产中我们会冲认证机构获取证书,有效期比较长
-keyalg RSA 使用RSA非对称加密算法
-dname "CN=localhost" 设置Common Name为localhost
-keypass skeypass123 密钥的访问密码为skeypass123
-storepass sstorepass456 密钥库的访问密码为sstorepass456
-keystore sChat.jks 指定生成的密钥库文件为sChata.jks
避坑:
在安卓运行时会出现如下错误:javax.net.ssl.SSLException: Received fatal alert: certificate_unknown
此时检测一下证书文件是否正常被读取,如果是放在assets下,建议先导出再加载
还会遇到如下错误 java.security.KeyStoreException: JKS not found
由于android无法直接使用 jks 格式的证书,所以需要转换为 bks 格式
参考:https://blog.csdn.net/u014361525/article/details/117835614
工具 Portecle 下载
https://jaist.dl.sourceforge.net/project/portecle/v1.11/portecle-1.11.zip
最后还有SunX509 TrustManagerFactory not available错误
将KeyManagerFactory.getInstance("SunX509");
换成TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
以上是关于速记:安卓Netty部署SSL/TLS和避坑指南的主要内容,如果未能解决你的问题,请参考以下文章