我已经通过复制我计划连接的Idp的509条目生成了testIdp.cer文件。然后,我通过执行以下命令创建了JKS文件
keytool -importcert -alias adfssigning -keystore C:\Users\user\Desktop\samlKeystore.jks -file C:\Users\user\Desktop\testIdp.cer
执行时,它要求输入我已提供密码的密码。对于问题“信任此证书?[no]:“,我给出了”y“作为输入。消息显示为“证书已添加到密钥库”。
然后,我在securityContext.xml中配置了以下详细信息:
<bean id="keyManager" class="org.springframework.security.saml.key.JKSKeyManager">
<constructor-arg value="classpath:security/samlKeystore.jks"/>
<constructor-arg type="java.lang.String" value="mypassword"/>
<constructor-arg>
<map>
<entry key="adfssigning" value="mypassword"/>
</map>
</constructor-arg>
<constructor-arg type="java.lang.String" value="adfssigning"/>
</bean>
<bean class="org.springframework.security.saml.metadata.ExtendedMetadata">
<property name="alias" value="adfssigning" />
<property name="signingKey" value="adfssigning"/>
</bean>
但是当我运行应用程序时,在服务器启动和加载应用程序的主页时,我得到了以下两个异常。有人能让我知道我是否还遗漏了什么吗?
当我启动服务器时,出现了这个异常
Caused by: org.opensaml.saml2.metadata.provider.FilterException: Signature trust establishment failed for metadata entry
at org.opensaml.saml2.metadata.provider.SignatureValidationFilter.verifySignature(SignatureValidationFilter.java:327)
at org.opensaml.saml2.metadata.provider.SignatureValidationFilter.processEntityGroup(SignatureValidationFilter.java:240)
at org.opensaml.saml2.metadata.provider.SignatureValidationFilter.doFilter(SignatureValidationFilter.java:158)
at org.opensaml.saml2.metadata.provider.AbstractMetadataProvider.filterMetadata(AbstractMetadataProvider.java:493)
at org.opensaml.saml2.metadata.provider.AbstractReloadingMetadataProvider.processNonExpiredMetadata(AbstractReloadingMetadataProvider.java:395)
当我运行应用程序的主页时,出现了这个异常
java.lang.UnsupportedOperationException: trusted certificate entries are not password-protected
at java.security.KeyStoreSpi.engineGetEntry(Unknown Source)
at java.security.KeyStore.getEntry(Unknown Source)
at org.opensaml.xml.security.credential.KeyStoreCredentialResolver.resolveFromSource(KeyStoreCredentialResolver.java:132)
当密钥库中没有私钥时,也会发生此错误。SAML使用私钥生成用于与IDP通信的服务提供商元数据。只需向密钥库添加一个,如下所示:
keytool -genkey -v -keystore some_key_store.jks -alias some_alias -keyalg RSA -keysize 2048 -validity 36500
填写问题并将有效期设置为适当的天数。(在我的例子中,它的有效期为100年)请记住从 IDP 添加公共证书。然后你应该准备好了。
弗拉基米尔正确回答了为什么会出现错误的问题。在我的回答中,我想展示如何将证书导入到密钥库中来解决这个问题:
您必须导入证书和私钥,而密钥工具无法直接完成。
详细描述的解决方案可在此处找到:https://stackoverflow.com/a/8224863/1909531
以下是摘录:
openssl pkcs12 -export -in server.crt -inkey server.key \
-out server.p12 -name [some-alias] \
-CAfile ca.crt -caname root
keytool -importkeystore \
-deststorepass [changeit] -destkeypass [changeit] -destkeystore server.keystore \
-srckeystore server.p12 -srcstoretype PKCS12 -srcstorepass some-password \
-alias [some-alias]
您的<代码>。cer证书只包含一个公钥,不能定义< code >
SAML 密钥库可以包含两种基本类型的密钥 - 公钥和私有密钥(以及它们的证书)。每个键都有一个别名,用于引用它。密钥库本身可以由密码保护(在第二个构造函数参数中提供),并且每个私钥也可以由一个附加密码保护(这些密码在别名映射的构造函数的第三个参数中定义-
上面的示例失败,因为您导入了一个公钥,但将其包含在只能用于私钥的映射中。
为此,我使用以下命令将。cer文件导入到jks文件中。(密码和密码一样,提示要求接受证书,我给y,然后说证书加到keystore了) keytool-importcert-file xyz.cer-keystore test.jks-alias“testsp” 然后我使用这个jks文件创建凭据,如下所示。 谁能指导我解决这个问题吗?
我正在将spring-saml2-sample应用程序集成到我自己的应用程序中。我的服务提供商连接到Shibboleth IDP。我正在使用Spring Security SAML应用程序附带的samlkeystore.jks中提供的私有证书测试SP。我使用以下命令在密钥库中注册了IDP签名公钥:keytool-importcert-alias idpsignkey-keypass passwor
得到了一个证书来签署Android未签名的发布apk文件,所以我导入了使用命令: 但使用android studio对应用程序进行签名时会产生错误: 我的推断是,由于密钥没有密码保护,因此我再次尝试并使用以下方法设置密钥密码: 但错误依然存在。 我还尝试使用jarsigner的手动程序: 出现错误: 请帮助我无法获得有关Android apk登录错误的相关帖子
问题内容: 我有一个受密码保护的Excel电子表格。我需要打开此电子表格并从中读取数据。我一直在尝试使用POI API无济于事。首选Java解决方案,但任何想法都会有所帮助。 编辑:是的,我有密码。该文件在excel中受密码保护;必须输入密码才能查看电子表格。 Edit2:我无法使用带有密码的POI打开它,我在寻找替代解决方案。 问题答案: 您可以使用JExcelApi。 自从我这样做已经有一段时
我刚刚在Google Cloud上的VM上设置了我的Neo4j服务器,我使用的是企业版4.1.1,并且我已经完成了David Allen关于如何使用LetsEncrypt获得证书的精彩帖子(在这里)。 这一切都工作得很好,我现在有了一个完全安全的Neo4j服务器,我可以通过浏览器()使用我的主机名访问它。但是,我现在在让我的应用程序使用javascript驱动程序连接到服务器时遇到了问题。 我不断
我正试图使用Gradle在Ubuntu服务器上构建我的Android项目。 在我的Windows 10 PC上使用Android Studio进行构建工作正常 但是,使用或失败,输出如下: 在我的研究中,我只发现了两个类似的问题,两个答案都不适合我: Paul Lammertsma-gradlew.bat(和gradlew)SSLHandShakeExc0019 这个错误非常相似,但没有真正的解决