对大小为1024位的密钥RSA进行Java算法约束检查失败
使用:-keyalg RSA-keysize 2048生成java密钥库后 以及使用以下配置java.security策略:对大小为1024位的密钥RSA进行Java算法约束检查失败,java,ssl,keystore,Java,Ssl,Keystore,使用:-keyalg RSA-keysize 2048生成java密钥库后 以及使用以下配置java.security策略: jdk.tls.disabledAlgorithms=SSLv3, RC4, DES, MD5withRSA, DH keySize < 1024, EC keySize < 224, 3DES_EDE_CBC, RSA keySize < 2048 然后,我用以下方法验证上述内容: openssl s_client -showcerts -conne
jdk.tls.disabledAlgorithms=SSLv3, RC4, DES, MD5withRSA, DH keySize < 1024, EC keySize < 224, 3DES_EDE_CBC, RSA keySize < 2048
然后,我用以下方法验证上述内容:
openssl s_client -showcerts -connect localhost:443
这表明:
New, TLSv1/SSLv3, Cipher is ECDHE-RSA-AES256-GCM-SHA384
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
Protocol : TLSv1.2
我还通过以下方式查看密钥库:
keytool -list -v -keystore star_domain_name.com.jks
这表明:
Certificate fingerprints:
MD5: 67:4C:04:90:35:etc...etc...
SHA1: AD:C8:06:74:3A:F1:72:etc...etc...
SHA256: C5:D6:81:3B:C1:F7:CE:2D:43:91:06:E9:9etc...etc...
Signature algorithm name: SHA256withRSA
Subject Public Key Algorithm: 2048-bit RSA key
我到处都能看到2048位RSA密钥。
但是,当我想在java spring引导应用程序中使用java密钥库时,它总是抱怨:
- 原因:java.security.cert.CertPathValidator异常:对大小为1024位的密钥RSA的算法约束检查失败
- 原因:java.security.cert.CertificateException:证书不符合算法约束
ssl.key-store: /opt/cert_path/star_domain_name.com.jks
ssl.enabled: true
ssl.key-store-password: the_password_etc...
ssl.key-store-type: PKCS12
ssl.key-alias: tomcat
jdk.jar.disabledAlgorithms=MD2, MD5, RSA keySize < 1024, DSA keySize < 1024
只要我编辑java.security文件,并从中删除RSA keySize<2048,然后重新启动应用程序,一切都会正常工作
这是因为我没有导入已签名的域证书,并且密钥库为空吗?我对此表示怀疑
虽然我清楚地将策略文件和java密钥库配置为2048位,但为什么应用程序会抱怨
java.security文件还包含:
ssl.key-store: /opt/cert_path/star_domain_name.com.jks
ssl.enabled: true
ssl.key-store-password: the_password_etc...
ssl.key-store-type: PKCS12
ssl.key-alias: tomcat
jdk.jar.disabledAlgorithms=MD2, MD5, RSA keySize < 1024, DSA keySize < 1024
jdk.jar.disabledAlgorithms=MD2、MD5、RSA密钥大小<1024、DSA密钥大小<1024
这是否也应该调整
实际上我已经尝试过调整,但没有效果…只是想补充一下。通过添加启用证书调试后
-Djava.security.debug=certpath
例如:
java -Xms64m -Xmx512m -Djava.security.debug=certpath -Dspring.config.location=config.file -jar appname.jar &>> logfile.log &
我终于明白为什么Java会抱怨了。
显然,加密的AWS RDS实例使用1024位的SSL证书。当我的java应用程序调用它时,它们会失败,因为它们的策略设置为仅接受RSA<2048密钥大小
我联系AWS寻求进一步指导
如果有人正在努力解决Java证书问题,请使用:
-Djava.security.debug=certpath
这非常有帮助
谢谢。您好,欢迎光临!有趣的问题!您是否也可以分享/告诉我们您的java版本?以及
java.security.cert.CertPathValidatorException
。。。。“还可以尝试”jdk.certpath.disabledAlgorithms
(…除了jdk.tls…
和jdk.jar…
)…据我所知,问题/问题:2048密钥失败。@user207421。令人困惑的一点是:“只要我编辑java.security文件,并从中删除RSA keySize<2048,然后重新启动应用程序,一切都正常……”和2。混淆:“原因:java.security.cert.CertPathValidatorException:对大小为1024位的RSA密钥的算法约束检查失败”您认为您有一个2048密钥@SUP3RS3T,但“混淆1.+2”。(我之前的评论)与“spring boot使用另一个1024b密钥”的事实相符!您在JDK上使用哪个版本?你有JSSE吗?