我需要将SimpleSAMLphp SP连接到客户SAML 2.0 IdP。我们之前已经做过好几次这样做了很好。 Normaly我们的客户证书是使用OpenSSL创建的,我们之前没有遇到任何问题。
我们当前的客户正在使用Javas keytool
为元数据交换生成证书。
使用以下命令生成证书:
keytool -genkeypair -keystore saml.jks -alias idp-signing -dname "cn=idp-signing-INT" -validity 1825 -keyalg RSA -sigalg SHA256withRSA -keysize 2048
当我检查证书时,它看起来像这样:
keytool -list -v -keystore saml.jks -alias idp-signing
Alias name: idp-signing
Creation date: 27-Jun-2017
Entry type: PrivateKeyEntry
Certificate chain length: 1
Certificate[1]:
Owner: CN=idp-signing-INT
Issuer: CN=idp-signing-INT
Serial number: 5f09e950
Valid from: Tue Jun 27 12:00:34 CEST 2017 until: Sun Jun 26 12:00:34 CEST 2022
Certificate fingerprints:
MD5: 85:E8:5D:EB:11:9B:CA:3C:02:06:65:A7:82:A4:4B:2B
SHA1: 41:79:18:80:65:C4:D6:27:CD:27:05:11:AD:5A:43:33:60:C7:89:AA
SHA256: 65:53:6E:FD:98:1E:0E:FE:B8:0F:50:11:EC:9A:06:FD:7C:27:F5:F5:D6:C8:11:AB:FA:D6:CE:80:86:09:CC:DF
Signature algorithm name: SHA256withRSA
Version: 3
Extensions:
#1: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: 7C 88 3B 15 B4 22 FD 83 B6 BE 35 7F 3E E4 72 1E ..;.."....5.>.r.
0010: 30 7C 84 89 0...
]
]
现在,当我们尝试通过我们的客户IdP进行身份验证时,我们的SP不接受带有日志消息的IdP证书:Decryption failed: Algorithm disabled
。事实证明,simpleSAMLphp不接受使用PKCS#1 v1.5加密的证书。
通过从simpleSAMLphps黑名单中删除该算法,我可以很容易地解决问题。但是......说实话......这不是一个好的解决方案。能够使用不使用PKCS#1 1.5的keytool
生成证书并且只是满足建议,这将是很好的。
不幸的是,我不是加密专家,通常也不使用java / keytool。
也许有人可以给我一个关于我们的客户应该如何正确生成证书的提示?
真的很棒!提前谢谢!