使用以下命令生成 java 密钥库后:-keyalg RSA -keysize 2048 并使用以下命令配置 java.security 策略:
jdk.tls.disabledAlgorithms=SSLv3, RC4, DES, MD5withRSA, DH keySize < 1024, EC keySize < 224, 3DES_EDE_CBC, RSA keySize < 2048
我不断收到错误:
java.security.cert.CertPathValidatorException:对大小为 1024 位的密钥 RSA 的算法约束检查失败
我正在使用以下命令生成 2048 位 RSA 密钥:
keytool -genkey -alias tomcat -keyalg RSA -keysize 2048 -keystore star_domain_name.jks -storetype PKCS12 -dname "CN=*.domain_name.com,OU=Engineering, O=Company Name., L=City Name, ST=State, C=US" && keytool -certreq -alias server -file star_domain_name.com.csr -keystore star_domain_name_io.jks
然后我通过以下方式验证上述内容:
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 boot 应用程序中使用 java keystore 时,它一直在抱怨:
原因:java.security.cert.CertPathValidatorException:对大小为 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
一旦我编辑 java.security 文件并从中删除 RSA keySize < 2048 并重新启动应用程序,一切正常......
这是因为我没有导入签名的域证书并且密钥库是空的吗?我对此表示怀疑。
为什么应用程序会抱怨,尽管我清楚地将策略文件和 java 密钥库配置为 2048 位?
java.security 文件还包含:
jdk.jar.disabledAlgorithms=MD2, MD5, RSA keySize < 1024, DSA keySize < 1024
也应该调整吗?
我实际上已经尝试过调整它,但没有效果......
哔哔one
幕布斯6054654
慕标5832272
随时随地看视频慕课网APP
相关分类