Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
对大小为1024位的密钥RSA进行Java算法约束检查失败_Java_Ssl_Keystore - Fatal编程技术网

对大小为1024位的密钥RSA进行Java算法约束检查失败

对大小为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

使用:-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 -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:证书不符合算法约束
只要我编辑java.security文件,并从中删除RSA keySize<2048,然后重新启动应用程序,一切都会正常工作

这是因为我没有导入已签名的域证书吗? 虽然我清楚地为2048位配置了策略和java密钥库,但为什么应用程序会抱怨

我的java应用程序配置包含:

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吗?