【发布时间】:2013-07-24 07:48:25
【问题描述】:
我们在一个预生产环境中使用的服务的所有者最近更改了他们的证书设置(没有通知我们)。
由于此证书更改,任何调用我们服务(位于 weblogic 盒子上)的尝试都会导致:
<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">
<env:Header/>
<env:Body>
<env:Fault xmlns:ns0="http://schemas.xmlsoap.org/soap/envelope/">
<faultcode>ns0:Server</faultcode>
<faultstring xml:lang="en">javax.xml.ws.WebServiceException: javax.net.ssl.SSLKeyException: [Security:090569]The certificate chain received from xxxxxxx - xx.xxx.xx.xxx contained a V3 CA certificate which key usage constraints indicate its key cannot be used to sign certificates.</faultstring>
</env:Fault>
</env:Body>
</env:Envelope>
我以前从未遇到过此错误(就谷歌而言,没有其他人遇到过),但我推断链中的证书之一是 CA,它没有约束密钥签名(显然)。但是,我看不到证书链有问题,并且当我在浏览器中访问 URL 时没有任何标记。
链条是这样的:
DigiCert
->DigiCert High Assurance CA-3
-->*.co.uk
DigiCert
Version - V3
Key Usage - Digital Signature, Certificate Signing, Off-line CRL Signing, CRL Signing (86)
Basic Constraints - Subject Type=CA, Path Length Constraint=None
DigiCert High Assurance CA-3
Version - V3
Key Usage - Digital Signature, Certificate Signing, Off-line CRL Signing, CRL Signing (86)
Basic Constraints - Subject Type=CA, Path Length Constraint=0
*.co.uk
Version - V3
Key Usage - Digital Signature, Key Encipherment (a0)
Basic Constraints - Subject Type=End Entity, Path Length Constraint=None
所有证书都在我们的信任库中。 我也尝试将 weblogic 设置为演示信任,但奇怪的是,这没有任何效果。
有什么想法吗?
更新
启用调试后
-Dssl.debug=true
-Dweblogic.StdoutDebugEnabled=true
-Dweblogic.security.SSL.verbose=true
我明白了:
<Jul 25, 2013 7:22:42 PM IST> <Debug> <SecuritySSL> <BEA-000000> <Validating certificate 0 in the chain: Serial number: 4797710814556239092785509911582462711
Issuer:C=US, O=DigiCert Inc, OU=www.digicert.com, CN=DigiCert High Assurance CA-3
Subject:C=GB, L=Belfast, O=xxxxx xxxxx xxxxx xxxxx, CN=*.co.uk
Not Valid Before:Mon Jan 14 00:00:00 GMT 2013
Not Valid After:Tue Jan 21 12:00:00 GMT 2014
Signature Algorithm:SHA1withRSA
>
<Jul 25, 2013 7:22:42 PM IST> <Debug> <SecuritySSL> <BEA-000000> <Certificate chain is invalid because the issuer DN does not match the next certificate subject: C=GB, L=Belfast, O=xxxxx xxxxx xxxxx xxxxx, CN=*.co.uk>
<Jul 25, 2013 7:22:42 PM IST> <Debug> <SecuritySSL> <BEA-000000> <Signature verification failed>
<Jul 25, 2013 7:22:42 PM IST> <Debug> <SecuritySSL> <BEA-000000> <Validating certificate 1 in the chain: Serial number: 7868785665241589417982590706715607915
Issuer:C=US, O=DigiCert Inc, OU=www.digicert.com, CN=DigiCert High Assurance CA-3
Subject:C=GB, L=Belfast, O=xxxxx xxxxx xxxxx xxxxx, CN=*.co.uk
Not Valid Before:Mon Jan 14 00:00:00 GMT 2013
Not Valid After:Tue Jan 21 12:00:00 GMT 2014
Signature Algorithm:SHA1withRSA
在我看来,这看起来 weblogic 正在错误地读取证书链,似乎认为链底部的证书正在签名自己?
【问题讨论】:
-
只是一个帮助调试的想法 - 您可以将
-Djavax.net.debug=all添加到您的 weblogic 启动脚本中以获取更多证书信息。 -
我会试一试并报告
-
在原帖上方更新
标签: security certificate weblogic keystore certificate-authority