DHPublicKey不符合算法约束

时间:2017-07-26 19:45:37

标签: encryption tls1.2

我有一个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

1 个答案:

答案 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
 ------------------------