MINA/Netty 自签发证书TLS加密

MINA/Netty 自签发证书TLS加密

SSL/TLS概念以及应用

SSL/TLS 维基百科

JSEE

openssl

keytool

证书创建过程

  1. 创建服务器证书
1
keytool -genkey -alias serverkey -keyalg RSA -keystore serverkey.jks -keysize 2048

2.从服务端证书导出 server.cer

1
keytool -export -alias serverkey -keystore serverkey.jks -file server.cer

3.创建客户端jks clientkey.jks

1
keytool -genkey -alias clientkey -keyalg RSA -keystore clientkey.jks -keysize 2048

4.从客户端导出cer client.cer

1
keytool -export -alias clientkey -keystore clientkey.jks -file client.cer

5.把server.cer 导入到clienttrust.jks

1
keytool -import -alias serverkey -keystore clienttrust.jks -file server.cer

6.把client.cer 导入到servertrust.jks

1
keytool -import -alias clientkey -keystore servertrust.jks -file client.cer

Android app 证书转换

7.转换clientkey.jks为clientkey.bks( 使用Portec工具使用文档)

8.转换clienttrust.jks 为 clienttrust.bks(同步骤7)

注:也可以在不使用Portecle工具的情况下使用BC命令行,参照这篇netty 双向SSL/TLS双向认证

BC库注意事项

/Library/Java/JavaVirtualMachines/jdk1.8.0_111.jdk/Contents/Home/jre/lib/security

该路径下配置Java.security文本 更改RSA 适配相应size、配置bc库

Android支持的协议以及版本

Algorithm Supported API Levels
Default 10+
SSL 10+
SSLv3 10-25
TLS 1+
TLSv1 10+
TLSv1.1 16+
TLSv1.2 16+

Android SSL/TLS support

遇到的问题

java.lang.IllegalArgumentException

1
2
org.apache.mina.util.DefaultExceptionMonitor(1806): Caused by: java.lang.IllegalArgumentException: TLS_ECDH_ECDSA_WITH_RC4_128_SHA is not supported.

相应问题参照 Google Android “Cipher suites”

参考

mina 官方文档

Java Secure Socket Extension (JSSE) Reference Guide

Netty使用JSSE实现SSLSocket通信

portecle使用文档

KEYTOOL和PORTECLE介绍

portecle使用教学视频

openssl

Google Dev Android Https/SSL

Google Dev Android SSLContext参考

示例

Server and Client example

Android example


MINA/Netty 自签发证书TLS加密
http://example.com/2017/12/26/program/MINA-Netty 自签发证书TLS加密/
作者
hao88
发布于
2017年12月26日
许可协议