使 JDK 支持 TLS_RSA_WITH_AES_256_CBC_SHA256 加密套件

3 篇文章 0 订阅

 最近,需要写一个支持 TLS 加密通讯的转发程序。

    采用 Netty 框架。

    客户端一方提出,需要使用采用 TLS_RSA_WITH_AES_256_CBC_SHA256 的 ciphersuite 进行加密。

    于是,在 Netty 中设置,

[java]  view plain  copy
  1. private final String[] CIPHERSUITES = {"TLS_RSA_WITH_AES_256_CBC_SHA256"} ;  
  2.                ........  
  3.   
  4.     SSLEngine engine = context.createSSLEngine() ;  
  5.                ........  
  6.     engine.setEnabledCipherSuites(CIPHERSUITES);  

      以上代码运行,会出现以下的异常:


[java]  view plain  copy
  1. [WARN][2016-03-31 14:26:34,259][io.netty.channel.ChannelInitializer]Failed to initialize a channel. Closing: [id: 0xa2bfcce4, /0:0:0:0:0:0:0:1:61998 => /0:0:0:0:0:0:0:1:4443]  
  2. java.lang.IllegalArgumentException: Cannot support TLS_RSA_WITH_AES_256_CBC_SHA256 with currently installed providers  
  3.     at sun.security.ssl.CipherSuiteList.<init>(CipherSuiteList.java:92)  
  4.     at sun.security.ssl.SSLEngineImpl.setEnabledCipherSuites(SSLEngineImpl.java:2038)  
  5.     at com.ratta.service.TLSChannelInitializer.initChannel(TLSChannelInitializer.java:65)  
  6.     at com.ratta.service.TLSChannelInitializer.initChannel(TLSChannelInitializer.java:1)  
  7.     at io.netty.channel.ChannelInitializer.channelRegistered(ChannelInitializer.java:69)  
  8.     at io.netty.channel.ChannelHandlerInvokerUtil.invokeChannelRegisteredNow(ChannelHandlerInvokerUtil.java:32)  
  9.     at io.netty.channel.DefaultChannelHandlerInvoker.invokeChannelRegistered(DefaultChannelHandlerInvoker.java:50)  
  10.     at io.netty.channel.PausableChannelEventExecutor.invokeChannelRegistered(PausableChannelEventExecutor.java:56)  
  11.     at io.netty.channel.AbstractChannelHandlerContext.fireChannelRegistered(AbstractChannelHandlerContext.java:345)  
  12.     at io.netty.channel.DefaultChannelPipeline.fireChannelRegistered(DefaultChannelPipeline.java:843)  
  13.     at io.netty.channel.AbstractChannel$AbstractUnsafe.register0(AbstractChannel.java:519)  
  14.     at io.netty.channel.AbstractChannel$AbstractUnsafe.access$100(AbstractChannel.java:422)  
  15.     at io.netty.channel.AbstractChannel$AbstractUnsafe$1.run(AbstractChannel.java:492)  
  16.     at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:328)  
  17.     at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:354)  
  18.     at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:116)  
  19.     at io.netty.util.internal.chmv8.ForkJoinTask$RunnableExecuteAction.exec(ForkJoinTask.java:1412)  
  20.     at io.netty.util.internal.chmv8.ForkJoinTask.doExec(ForkJoinTask.java:280)  
  21.     at io.netty.util.internal.chmv8.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:877)  
  22.     at io.netty.util.internal.chmv8.ForkJoinPool.scan(ForkJoinPool.java:1706)  
  23.     at io.netty.util.internal.chmv8.ForkJoinPool.runWorker(ForkJoinPool.java:1661)  
  24.     at io.netty.util.internal.chmv8.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:126)  

        经过查询相关资料,可以通过以下办法解决问题。

   1.       

 到  http://www.oracle.com/technetwork/java/javase/downloads/jce-6-download-429243.html

        下载 JDK 1.6 对应的 JCE 包。

 到  http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html

        下载 JDK 1.7 对应的 JCE 包。

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

        下载  JDK 1.8 对应的 JCE 包。

          

    2. 

        将 JCE 包解压,得到两个 local_policy.jar 和 US_export_policy.jar 两个 JAR 包。

    3. 

        将 local_policy.jar 和 US_export_policy.jar 替换到 %JAVA_HOME%/jre/lib/security 目录下面。覆盖下面的两个原本的 jar。

    4.

        重启程序或者重启服务器。



        问题已解决。


转载自:http://blog.csdn.net/troylemon/article/details/51025929

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值