I-jetty 移植及Https 配置使用

工作中遇到一个需求, 需要在局域网内架设一个服务器,把手机端的操作APK打包到盒子中,安卓平台和IOS平台的用户都可以通过局域网来下载操作软件. 安卓端的实现比较简单, 通过Http 协议就可以了,但是Ios的安装协议必须通过Https来实现.

1.为了能过是够使用80端口, 需要修改安卓系统源码: java/net/Socket.java, 默认是限制1024以下的端口为系统保留, 修改这个值为 小于80的任何值.

2.Htpps 协议的使用需要有经过正规的证书厂商认证的证书, 这里只要使用最简单的证书就可以了,该这书可以到”沃通(https://www.wosign.com/)”的网站上去申请有效期为3年的SSL证书. 免费的很快就能拿到, 大概半个小时,需要提供域名.通过域名的认证后才能获取针对该域名签名的SSL 证书.证书和域名是捆绑在一起的. 得到的证书解压缩后是一个文件夹:
解压后的文件夹内容:

3.沃通提供的SSL签名针对不同的服务器和语言,我们可以使用的是提供给java 语言的,最接近的是 for Tomcat.zip ,解压该文件, 得到一个 xxx.jks 的文件,这个就是加密的证书文件.但是这种格式的证书不能直接配置到 Android 系统中, Android 系统只支持 bks 类型的加密文件.下一步就是要把 得到的 xxx.jks 文件转换为 xxx.bks 文件.

3.1: 替换JDK1.6中的两个压缩包:
1.环境JDK1.6
下载地址: http://download.csdn.net/detail/sfhong2008/9469474
解决jce_policy-6.zip将里面的local_policy.jar和US_export_policy.jar复制并覆盖%JAVA_HOME%/jre/lib/security下的local_policy.jar和US_export_policy.jar


bcprov-ext-jdk16-146.jar
bcprov-jdk16-146.jar
两个jar包放到 C:\Program Files\Java\jdk1.6.0_24\jre\lib\ext
修改 C:\Program Files\Java\jdk1.6.0_24\jre\lib\security\java.security文件, 添加一下代码:

这里写图片描述

security.provider.10=org.bouncycastle.jce.provider.BouncyCastleProvider
这里写图片描述

4.证书格式转换:
4.1 将解压得到的test.jks证书复制到桌面:
这里写图片描述

4.2打开CMD 界面, 执行keytool 命令转换证书格式:
keytool -importkeystore -srckeystore “C:\Documents and Settings\Administrator\桌面\test.jks” -destkeystore test.bks -srcstoretype JKS -deststoretype BKS -srcstorepass 123456abcABC -deststorepass 123456abcABC -provider org.bouncycastle.jce.provider.BouncyCastleProvider

注意: 整条命令是一行的, 只是在网页上显示自动换行了,将命令复制到文本编辑器,把换行的空格删除掉,还原成一行,在复制到控制台执行

需要修改的位置:
“C:\Documents and Settings\Administrator\桌面\test.jks” : jks 证书存放的位置,建议放到桌面
test.bks: 转换后的证书名, 目录使用默认的位置即可
123456abcABC: 证书的密码(申请证书的时候填写的)

这里写图片描述

转换命令执行成功后,CMD控制台会显示成功导入别名1项. 转换后的证书被存放在了以下位置:
这里写图片描述

5.I-Jetty配置:
SslContextFactory sslContextFactory = new SslContextFactory();
sslContextFactory.setKeyStore(_keystoreFile);
sslContextFactory.setTrustStore(_truststoreFile);
sslContextFactory.setKeyStorePassword(_keystorePassword);
sslContextFactory.setKeyManagerPassword(_keymgrPassword);
sslContextFactory.setKeyStoreType(“bks”);

            sslContextFactory.setTrustStorePassword(_truststorePassword);
sslContextFactory.setTrustStoreType("bks");
// sslContextFactory.setNeedClientAuth(false);
sslContextFactory.addExcludeCipherSuites(new String[]{"TLS_DHE_DSS_WITH_AES_128_CBC_SHA",

“TLS_DHE_RSA_WITH_AES_128_CBC_SHA”,
“TLS_RSA_WITH_AES_128_CBC_SHA”,
“TLS_DHE_DSS_WITH_AES_256_CBC_SHA”,
“TLS_DHE_RSA_WITH_AES_256_CBC_SHA”,
“TLS_RSA_WITH_AES_256_CBC_SHA”,
“SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA”,
“SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA”}
);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值