我有一个Java webapp(点燃实时xmpp服务器),它使用LDAP对用户进行身份验证和授权。
最近,LDAP服务器将其密码套件升级为更安全的密码。在降低/jre/lib/security/java.security文件中允许的最小keySize之前,我无法让我的应用程序与此LDAP服务器通信,例如
@property
@only_on_master # Only for symmetry with the setter
def cross_fade(self):
"""The speaker's cross fade state.
True if enabled, False otherwise
"""
# ...
我添加JCE 8更新应用程序使用的jre密码,新密码出现(我使用了this program并比较了之前和之后)
我在webapp的管理控制台中启用了密码 - 具体来说:
#jdk.tls.disabledAlgorithms=SSLv3, RC4, MD5withRSA, DH keySize < 2048
jdk.tls.disabledAlgorithms=SSLv3, RC4, MD5withRSA, DH keySize < 1024
我使用this program查看LDAP服务器使用的密码:
具有以下结果:
> * TLS_DHE_RSA_WITH_AES_256_CBC_SHA
> * TLS_DHE_RSA_WITH_AES_256_CBC_SHA256
> * TLS_DHE_RSA_WITH_AES_256_GCM_SHA384
应用程序可以使用以下java.security设置与旧LDAP(以及群集中的未升级端点)通信:
Testing server - upgraded endpoint
Given this client's capabilities ([SSLv3, TLSv1, TLSv1.1, TLSv1.2]), the server prefers protocol=TLSv1.2, cipher=TLS_DHE_RSA_WITH_AES_256_GCM_SHA384
Testing server - non-upgraded endpoint
Given this client's capabilities ([SSLv3, TLSv1, TLSv1.1, TLSv1.2]), the server prefers protocol=TLSv1.2, cipher=TLS_RSA_WITH_AES_128_CBC_SHA
当端点升级(它被置于F5负载均衡器后面)时,我无法让应用程序连接,直到降级最小的keySize。 LDAP(新旧端点)的证书链没有更改。
jdk.tls.disabledAlgorithms=SSLv3, RC4, MD5withRSA, DH keySize < 2048
显示了一个2048公钥,就像它对oldLDAP一样,唯一的区别是更强的密码 - 可能是TLS版本1对1.2,取决于我试过openssl s_client的机器上的openssl版本。
应用程序的xmpp web应用程序:5223和管理控制台:9091也使用SSL,并且每个都有2048位公钥。
应用程序日志文件中的错误是:
openssl s_client -connect newLDAP:636
上面提到的约束我相信引用了jdk.tls.disabledAlgorithms java.security文件属性。
我很困惑为什么显然更安全的密码现在需要更小的应用程序最小keySize和LDAP连接才能工作。
我必须遗漏某些东西或做错事。
以下是应用日志中的一些堆栈跟踪:
"DHPublicKey does not comply to algorithm constraints"
感谢您的任何见解, SM
答案 0 :(得分:0)
为了跟进我自己的问题,我非常确定我确认这是James K Polk最初建议的新LDAP系统上的短暂密钥交换问题!他对SSLyze的建议也非常有帮助。
我在新旧LDAP系统上运行了以下命令,我认为新系统只支持最多1024位密钥交换,而旧系统甚至可能不进行密钥交换,这可能就是为什么更强的DH JRE的java.security文件中的keySize设置有效(例如,它没有被使用)。
python -m sslyze --tlsv1_2 --starttls=auto myLDAP:636
AVAILABLE PLUGINS
-----------------
OpenSslCipherSuitesPlugin
HeartbleedPlugin
OpenSslCcsInjectionPlugin
CertificateInfoPlugin
SessionResumptionPlugin
CompressionPlugin
SessionRenegotiationPlugin
FallbackScsvPlugin
HttpHeadersPlugin
CHECKING HOST(S) AVAILABILITY
-----------------------------
myLDAP:636 => 0.1.2.3
SCAN RESULTS FOR myLDAP:636 - 0.1.2.3
-------------------------------------------------
* TLSV1_2 Cipher Suites:
Preferred:
TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 DH-1024 bits 256 bits
Accepted:
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 ECDH-384 bits 256 bits
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 ECDH-384 bits 256 bits
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA ECDH-384 bits 256 bits
TLS_DHE_RSA_WITH_AES_256_CBC_SHA256 DH-1024 bits 256 bits
TLS_DHE_RSA_WITH_AES_256_CBC_SHA DH-1024 bits 256 bits
TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 DH-1024 bits 256 bits
TLS_RSA_WITH_AES_256_GCM_SHA384 - 256 bits
TLS_RSA_WITH_AES_256_CBC_SHA - 256 bits
TLS_RSA_WITH_AES_256_CBC_SHA256 - 256 bits
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 ECDH-384 bits 128 bits
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 ECDH-384 bits 128 bits
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA ECDH-384 bits 128 bits
TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 DH-1024 bits 128 bits
TLS_DHE_RSA_WITH_AES_128_CBC_SHA DH-1024 bits 128 bits
TLS_DHE_RSA_WITH_AES_128_CBC_SHA256 DH-1024 bits 128 bits
TLS_RSA_WITH_AES_128_CBC_SHA256 - 128 bits
TLS_RSA_WITH_AES_128_GCM_SHA256 - 128 bits
TLS_RSA_WITH_AES_128_CBC_SHA - 128 bits
TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA ECDH-384 bits 112 bits
TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA DH-1024 bits 112 bits
TLS_RSA_WITH_3DES_EDE_CBC_SHA - 112 bits
Rejected:
<snipped>
SCAN COMPLETED IN 0.16 S
------------------------
python -m sslyze --tlsv1_2 --starttls=auto oldLDAP:636
AVAILABLE PLUGINS
-----------------
CompressionPlugin
OpenSslCipherSuitesPlugin
CertificateInfoPlugin
FallbackScsvPlugin
OpenSslCcsInjectionPlugin
SessionResumptionPlugin
SessionRenegotiationPlugin
HttpHeadersPlugin
HeartbleedPlugin
CHECKING HOST(S) AVAILABILITY
-----------------------------
oldLDAP:636 => 4.5.6.7
SCAN RESULTS FOR oldLDAP:636 - 4.5.6.7
-------------------------------------------------------------
* TLSV1_2 Cipher Suites:
Preferred:
TLS_RSA_WITH_RC4_128_SHA - 128 bits
Accepted:
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA ECDH-256 bits 256 bits
TLS_RSA_WITH_AES_256_CBC_SHA - 256 bits
TLS_RSA_WITH_AES_256_CBC_SHA256 - 256 bits
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA ECDH-256 bits 128 bits
TLS_RSA_WITH_AES_128_CBC_SHA256 - 128 bits
TLS_RSA_WITH_AES_128_CBC_SHA - 128 bits
TLS_RSA_WITH_RC4_128_SHA - 128 bits
TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA ECDH-256 bits 112 bits
TLS_RSA_WITH_3DES_EDE_CBC_SHA - 112 bits
Rejected:
<snipped>
SCAN COMPLETED IN 0.34 S
------------------------