Spring SAML:解密加密密钥时出错,没有安装的提供程序支持此密钥

Spring SAML:解密加密密钥时出错,没有安装的提供程序支持此密钥,spring,spring-mvc,saml-2.0,x509,spring-saml,Spring,Spring Mvc,Saml 2.0,X509,Spring Saml,我参考了SpringSAML手册来创建私钥和导入公共证书。但我仍然面临着加密/解密的问题 我已经用手册中提到的以下命令创建了一个JKS文件,如下所示 用于导入IDP的公共证书的命令 keytool -importcert -alias adfssigning -keystore samlKeystore.jks -file testIdp.cer 用于私钥的命令 keytool -genkeypair -alias myprivatealias -keypass changeit -keyst

我参考了SpringSAML手册来创建私钥和导入公共证书。但我仍然面临着加密/解密的问题

我已经用手册中提到的以下命令创建了一个JKS文件,如下所示

用于导入IDP的公共证书的命令

keytool -importcert -alias adfssigning -keystore samlKeystore.jks -file testIdp.cer
用于私钥的命令

keytool -genkeypair -alias myprivatealias -keypass changeit -keystore samlKeystore.jks
私钥和密钥库的密码都定义为“changeit”

我已按如下方式配置securityContext

<bean id="keyManager" class="org.springframework.security.saml.key.JKSKeyManager">
    <constructor-arg value="classpath:security/samlKeystore.jks"/>
    <constructor-arg type="java.lang.String" value="changeit"/>
    <constructor-arg>
        <map>
            <entry key="myprivatealias" value="changeit"/>
        </map>
    </constructor-arg>
    <constructor-arg type="java.lang.String" value="myprivatealias"/>
</bean>
有人能告诉我哪里出了问题吗

Alternate命令使用私钥生成,而不是上述命令

keytool -genkey -alias privatekeyalias -keyalg RSA -keystore samlKeystore.jks
如果使用此命令并更新JKS文件,则会得到另一个异常,称为InvalidKeyException:Key太长,无法展开

Caused by: java.security.InvalidKeyException: Key is too long for unwrapping
at com.sun.crypto.provider.RSACipher.engineUnwrap(DashoA13*..)
at javax.crypto.Cipher.unwrap(DashoA13*..)
at org.apache.xml.security.encryption.XMLCipher.decryptKey(XMLCipher.java:1477)
... 46 more
41   [http-8080-1] ERROR org.opensaml.xml.encryption.Decrypter  - Failed to decrypt EncryptedKey, valid decryption key could not be resolved
42   [http-8080-1] ERROR org.opensaml.xml.encryption.Decrypter  - Failed to decrypt EncryptedData using either EncryptedData KeyInfoCredentialResolver or EncryptedKeyResolver + EncryptedKey KeyInfoCredentialResolver
42   [http-8080-1] ERROR org.opensaml.saml2.encryption.Decrypter  - SAML Decrypter encountered an error decrypting element content

有人能帮我解决这个问题吗???

这个问题是由于在应用程序中使用了与使用以下命令生成的密钥库不同的密钥库造成的:

keytool -genkeypair -alias privatekeyalias -keypass samplePrivateKeyPass -keystore samlKeystore.jks -keyalg RSA -sigalg SHA1WithRSA

您安装了无限强度加密库()了吗?@vschafer-Ya我是通过将JAR(美国导出策略和本地策略)复制到C:\Program Files\Java\jdk1.6.0\U 25\jre\lib\security和C:\Program Files\Java\jre6\lib\security来安装的。仍然得到相同的错误。Jars从()下载。生成私钥(keytool-genkey-alias privatekeyalias-keyalg RSA-keystore samlKeystore.jks)时还有其他问题吗?@vschafer在继续上面的评论时,我也尝试了各种密钥生成。我使用了keytool-genkeypair和keytool-genkey,并提到了-keyalg RSA。对于这两个密钥,我得到的错误是java.security.InvalidKeyException:密钥太长,无法展开。我甚至尝试过安装上面评论中提到的无限强度加密库。您能告诉我哪里出了问题吗?也许您的安装使用的JDK与您想象的不同。您遇到的错误通常是由于缺少无限加密库造成的。请看,您可以尝试发布整个断言,以便查看XML中的密钥编码方式。@vschafer由于我无法将整个断言粘贴到注释中,因此我已将整个断言发布在下面提到的链接中。非常感谢你在这方面的帮助。
keytool -genkeypair -alias privatekeyalias -keypass samplePrivateKeyPass -keystore samlKeystore.jks -keyalg RSA -sigalg SHA1WithRSA