You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JDK 1.8.0_121中如何按密钥大小约束禁用RSA 1024算法?

如何通过密钥大小约束禁用RSA 1024算法?

环境

  • Java版本:1.8.0_121

场景

已创建采用RSA 1024的证书,启用SSL后网站可正常通过HTTPS访问,现在需要禁用网站对RSA 1024算法的支持。

已尝试的操作

  • 修改jdk.certpath.disabledAlgorithms=RSA keySize < 2048:浏览器访问网站仍正常,RSA 1024未被禁用
  • 修改jdk.certpath.disabledAlgorithms=RSA:浏览器访问网站失败,RSA被完全禁用,抛出以下错误:
javax.net.ssl.SSLHandshakeException: no cipher suites in common 
at sun.security.ssl.Handshaker.checkThrown(Handshaker.java:1478) 
at sun.security.ssl.SSLEngineImpl.checkTaskThrown(SSLEngineImpl.java:535) 
at sun.security.ssl.SSLEngineImpl.writeAppRecord(SSLEngineImpl.java:1214) 
at sun.security.ssl.SSLEngineImpl.wrap(SSLEngineImpl.java:1186) 
at javax.net.ssl.SSLEngine.wrap(SSLEngine.java:469) 
at org.apache.tomcat.util.net.SecureNioChannel.handshakeWrap(SecureNioChannel.java:424) 
at org.apache.tomcat.util.net.SecureNioChannel.handshake(SecureNioChannel.java:205) 
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1411) 
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 
at java.lang.Thread.run(Thread.java:745)

问题分析

你之前修改的jdk.certpath.disabledAlgorithms参数,作用是限制证书路径验证过程中使用的算法,并不是用来控制SSL/TLS握手时允许使用的密钥交换算法的,所以只改这个参数无法达到禁用RSA 1024的目的。

正确解决方案

要通过密钥大小约束禁用RSA 1024,需要修改Java安全配置中的jdk.tls.disabledAlgorithms参数:

  1. 找到Java安装目录下的安全配置文件:JAVA_HOME/jre/lib/security/java.security(如果是JDK 9+,路径是JAVA_HOME/conf/security/java.security)
  2. 找到jdk.tls.disabledAlgorithms配置项,添加RSA keySize < 2048到该配置的值中,示例:
    jdk.tls.disabledAlgorithms=SSLv3, TLSv1, TLSv1.1, RSA keySize < 2048
    
    (注意保留原有已禁用的算法,不要直接覆盖)
  3. 重启你的Web服务器(比如Tomcat),让配置生效
  4. 验证:使用浏览器或SSL检测工具访问网站,此时RSA 1024的证书应该无法完成握手,网站会提示SSL错误;如果换成RSA 2048及以上的证书,网站可正常访问。

额外说明

  • 如果你的应用有自定义的SSL配置(比如Tomcat的server.xml中指定了 cipher suites),需要确保自定义的 cipher suites列表中不包含使用RSA 1024的套件
  • 修改Java安全配置后,会影响所有使用该JVM运行的应用,如果你只想针对单个应用生效,可以通过JVM启动参数指定自定义的安全配置文件:
    -Djava.security.properties=/path/to/custom/java.security
    

内容的提问来源于stack exchange,提问作者Hhovhann

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 10:07:24