一般支持的https的网站基本都是CA机构颁发的证书,默认情况下是可以信任
如果是自己生成的证书,就要自己配置一下
单向认证配置:
客服端配置
需要的证书 xxx.cer
1,可以将证书文档copy到安卓工程目录下只要能读取到就行, 比如放在assets文件夹下
或者使用 keytool -printcert -rfc -file xxx.cer获得证书的字符串形式.
2,配置到对应的网络请求工具
WebServer服务端配置
1,生成证书
keytool -genkey -alias app_server -keyalg RSA -keystore app_server.jks -validity 3600 -storepass 123456
执行命令即可生成一个证书请求文件app_server.jks,密钥库口令为:123456.
2,用app_server.jks来签发证书
keytool -export -alias app_server -file app_server.cer -keystore app_server.jks -storepass 123456
可生成包含公钥的证书 app_server.cer 这个给客户端配置要用
3,配置Tomcat
配置tomcat/conf/sever.xml
Service标签中,加入
<Connector
SSLEnabled="true"
acceptCount="100"
clientAuth="false"
disableUploadTimeout="true"
enableLookups="true"
keystoreFile="刚生成的xxx.jks路径"
keystorePass="对应的密钥"
maxSpareThreads="75"
maxThreads="200"
minSpareThreads="5" port="8443"
protocol="org.apache.coyote.http11.Http11NioProtocol"
scheme="https"
secure="true"
sslProtocol="TLS"
/>
双向证书验证
客户端:
1,需要配置服务端给的xxx.cer文件
2,同时和单向一样要再生成一套 xxx.cer, xxx.jks文件并且要配置 xxx.jks文件
但是xxx.jks是java默认支持的,android并不支持,所以要使用工具进行转换成bks格式的证书文件
服务端:
1,keytool -import -alias app_client -file app_client.cer -keystore app_client_for_sever.jks
执行命令将 xxx.cer添加到 xxx.jks当中
2,在Connector标签,添加些属性.其他属性与前面一致
<Connector
clientAuth="true"
truststoreFile="/path/xxx.jks"
/>
参考:
http://blog.csdn.net/lmj623565791/article/details/48129405