终极解决:iOS 与 Java 服务器之间 SSL 握手失败的解决:Cipher Suites

简介: iOS 与 Java 服务器之间 SSL 握手失败的解决:Cipher Suites太阳火神的美丽人生 (http://blog.csdn.net/opengl_es)本文遵循“署名-非商业用途-保持一致”创作公用协议转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS、Android、Html5、Arduino、pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作。

iOS 与 Java 服务器之间 SSL 握手失败的解决:Cipher Suites

太阳火神的美丽人生 (http://blog.csdn.net/opengl_es)

本文遵循“署名-非商业用途-保持一致”创作公用协议

转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS、Android、Html5、Arduino、pcDuino否则,出自本博客的文章拒绝转载或再转载,谢谢合作。


终极解决:

------------------

iOS 与 Java 服务器通讯建立 SSL 通道过程中,Java 服务器先报异常,然后把异常最后捕获点,返回给 iOS 客户端,但 Java 服务器端确有一个掩盖的事实异常,那就是找不到 Cipher Suites,由此字面意思,就清楚地知道,是 Java 服务器没有找到可用于 iOS 客户端要求的加密套件。


之前解决,其实也是误解,实际上是那台服务器上具有完整的加密套件而已。


这要追溯到 JDK 的安全机制包:local_policy.jar、US_export_policy.jar

Mac 下,10.10.2 默认未安装或禁用了升级前版本的 JDK,故从 Oracle 官网下载安装 JDK 1.8 后的位置:

/Library/Java/JavaVirtualMachines/1.6.0_65-b14-462.jdk/Contents/Home/lib/security

Windows 64 位 JDK 下的位置:

C:\Program Files\Java\jdk1.6.0_45\jre\lib\security

Windows 64 位 JRE 下的位置:

C:\Program Files\Java\jre6\lib\security


在 Oracle 官网搜 JCE (Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy),就会找到最新版本 JDK1.7 和 JDK1.8 对应的包,解压出来,就包含了 local_policy.jar、US_export_policy.jar 两个包,替换上面对应版本 JDK 该包位置下的文件即可。


有时会不好用,需要重启电脑,清空 Eclipse 工作空间等等,但一定会好用。


JDK 1.6 版对应的 JCE 在 CSDN 下载频道,可以搜到,目前 Oracle 官网能下载到 JDK 1.7、1.8 对应的 JCE,在 JDK 下载页下方仔细找 Java Cryptography Extension


------------------

好久没填坑了,不过这回这个感觉非常有必要填一填,因为我的猜测,终于验证了,虽然不是我印证的,那更需要好好记一记,这个Cipher Suites 后面的事情,太不可思议了。


不可思议,这牵扯到美国对华软件出口限制。。。。。。类似的情况


http://www.brieftools.info/article/62392

http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html


-------------------

先挖个坑,有机会填,没机会填也属正常,毕竟地球表面也布满了坑,只不过我们叫盆地或高山而已。


Cipher Suites :加密套件?也许这么翻译也不准确,不过 SSL 官方有说明,一组 RSA、3DES 或 MD5,也或者其它对称或非对称加密算法的组合。


SSL 拨手开篇即道:HelloClient,同时带着相关设置,其中就包含着这个 Cipher Suites 的名字。

iOS 和 Java 所支持的加密套件并不完全一样,可能有个交集,但实际获得到的 Java 的套件,在 iOS 上虽然都有,不过并不是都可用,可能有些是 Mac 的吧。

所以当 iOS 向 Java 服务器请求 SSL 通道建立时,HelloClient 发出后,带着的设置中,就有加密套件名称,Java 服务端通过该名称查找其支持的套件中是否存在,如果不存在,那么就报错了 not found cipher suites in common。


这句英文一直没搞清是干啥的,不过一直知道是服务端报的异常,而网上把国内国外都翻了个底儿朝天,也没人就此问题有一个很好的解答。


那么,看到这里基本应该明白了。


后续有时间,把过程整理出来,最好是带图的,格式化得很好的,俺自个儿也稀汗有美感的文章,不过时间总是那么着急,回头再说吧。




目录
相关文章
|
1月前
|
网络安全 Apache
Apache服务器安装SSL证书
Apache服务器安装SSL证书
30 0
|
2月前
|
存储 监控 Java
【深度挖掘Java性能调优】「底层技术原理体系」深入探索Java服务器性能监控Metrics框架的实现原理分析(Counter篇)
【深度挖掘Java性能调优】「底层技术原理体系」深入探索Java服务器性能监控Metrics框架的实现原理分析(Counter篇)
31 0
|
3月前
|
域名解析 应用服务中间件 Linux
【服务器】使用域名解析服务器的IP地址并配置SSL证书
【服务器】使用域名解析服务器的IP地址并配置SSL证书
516 0
|
2月前
|
监控 算法 Java
【深度挖掘Java性能调优】「底层技术原理体系」深入探索Java服务器性能监控Metrics框架的实现原理分析(Gauge和Histogram篇)
【深度挖掘Java性能调优】「底层技术原理体系」深入探索Java服务器性能监控Metrics框架的实现原理分析(Gauge和Histogram篇)
36 0
|
3天前
|
网络协议 Dubbo Java
【网络编程】理解客户端和服务器并使用Java提供的api实现回显服务器
【网络编程】理解客户端和服务器并使用Java提供的api实现回显服务器
9 0
|
4天前
|
关系型数据库 MySQL Java
通过使用阿里云服务器,搭建Java程序的运行环境
通过使用阿里云服务器,搭建Java程序的运行环境
|
4天前
|
网络协议 Ubuntu Java
如何使用MCSM搭建我的世界Java版服务器并实现远程联机游戏
如何使用MCSM搭建我的世界Java版服务器并实现远程联机游戏
18 0
|
10天前
|
Java
如何解决使用若依前后端分离打包部署到服务器上后主包无法找到从包中的文件的问题?如何在 Java 代码中访问 jar 包中的资源文件?
如何解决使用若依前后端分离打包部署到服务器上后主包无法找到从包中的文件的问题?如何在 Java 代码中访问 jar 包中的资源文件?
47 0
|
18天前
|
Java 应用服务中间件 PHP
企业Java应用服务器之JBoss7.1与Apahce整合
企业Java应用服务器之JBoss7.1与Apahce整合
|
19天前
|
弹性计算 安全 Java
阿里云服务器配置、(xshell)远程连接、搭建环境、设置安全组、域名备案、申请ssl证书
以下是内容的摘要: 在阿里云购买服务器并进行基本配置的步骤如下: 1. **准备工作**: - 注册阿里云账号:访问阿里云官网并注册新账号,输入用户名、手机号和验证码。 - 实名认证:在个人中心进行实名认证,建议选择企业实名,因为个人实名可能无法索取企业发票。