终极解决: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。


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


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


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




目录
相关文章
|
安全 数据建模 应用服务中间件
SSL证书怎么获得?获得后如何安装到服务器?
在当今互联网时代,SSL证书是保障网站安全的重要工具,实现HTTPS加密和身份认证,防止数据劫持或篡改,提升SEO效果。获取SSL证书需选择可信的CA机构、选择证书类型、生成CSR、验证域名及企业信息并获取证书。安装SSL证书到服务器(如Nginx)涉及上传证书文件、配置Nginx并重启服务。具体步骤可参考详细教程。 简介:SSL证书对网站安全至关重要,涵盖获取与安装流程,包括选择CA、生成CSR、验证信息、配置服务器等关键步骤。
|
弹性计算 应用服务中间件 网络安全
ECS服务器使用:SSL证书安装、配置和问题定位指南
本文简要介绍了SSL证书的生成与部署方法,包括使用OpenSSL生成自签名证书和从CA获取证书的步骤,以及在Apache和Nginx服务器上的配置方法。此外,还提供了测试证书是否生效的方法和常见问题的解决策略,帮助确保证书正确安装并解决调试过程中可能遇到的问题。
1653 0
|
域名解析 安全 网络安全
阿里云服务器WordPress环境上安装SSL证书
阿里云服务器WordPress环境上安装SSL证书
|
Swift iOS开发
iOS Swift使用Alamofire请求本地服务器报错-1002
iOS Swift使用Alamofire请求本地服务器报错-1002
524 1
|
应用服务中间件 网络安全 nginx
运维专题.Docker+Nginx服务器的SSL证书安装
运维专题.Docker+Nginx服务器的SSL证书安装
1446 3
|
安全 网络协议 网络安全
SSL(Secure Sockets Layer)是一种安全协议,用于在客户端和服务器之间建立加密的通信通道。
SSL(Secure Sockets Layer)是一种安全协议,用于在客户端和服务器之间建立加密的通信通道。
|
网络安全
嗯… 无法访问此页面43.139.210.211 花了太长时间进行响应,无法连接宝塔,是服务器内的宝塔面板开启了ssl的验证,但是没有绑定证书,所以被拦截,关闭宝塔面板的ssl访问认证恢复正常
嗯… 无法访问此页面43.139.210.211 花了太长时间进行响应,无法连接宝塔,是服务器内的宝塔面板开启了ssl的验证,但是没有绑定证书,所以被拦截,关闭宝塔面板的ssl访问认证恢复正常
|
人工智能 网络安全 开发工具
视觉智能开放平台操作报错合集之服务部署在pdd的服务器,调用报错:The SSL connection could not be established,该如何解决
在使用视觉智能开放平台时,可能会遇到各种错误和问题。虽然具体的错误代码和消息会因平台而异,但以下是一些常见错误类型及其可能的原因和解决策略的概述,包括但不限于:1. 认证错误、2. 请求参数错误、3. 资源超限、4. 图像质量问题、5. 服务不可用、6. 模型不支持的场景、7. 网络连接问题,这有助于快速定位和解决问题。
823 0
|
前端开发 小程序 应用服务中间件
在服务器上正确配置域名https证书(ssl)及为什么不推荐使用宝塔申请免费ssl证书
在服务器上正确配置域名https证书(ssl)及为什么不推荐使用宝塔申请免费ssl证书
853 4
|
Linux 数据库 iOS开发
超级签名源码/超级签/ios分发/签名端本地linux服务器完成签名
该系统完全在linux下运行,不存在使用第三方收费工具,市面上很多系统都是使用的是第三方收费系统,例如:某心签名工具,某测侠等,不开源而且需要每年交费,这种系统只是在这些工具的基础上套了一层壳。请需要系统的放大你们的眼睛。
424 0