知识库

特定密码的 TLS/SSL 配置

根据文档:dbms.ssl.policy.<policyname>.ciphers 默认设置为 Java 平台默认允许的密码套件,也可以显式设置为任何特定密码(以“,”分隔)以进一步限制允许的密码列表,从而使我们能够强制执行特定的强密码(如果需要)并消除关于协商和选择的密码的任何疑问。

此外,或者另外,我们还可以使用此处引用的说明禁用密码:https://lightbend.github.io/ssl-config/CipherSuites.html,例如,您将在 neo4j.conf 中添加以下内容

dbms.jvm.additional=-Djava.security.properties=<$NEO4J_HOME>/neo4j-enterprise-3.5.x/conf/disabledAlgorithms.properties

该文件的内容(例如)包括以下内容

# disabledAlgorithms.properties
jdk.tls.disabledAlgorithms=EC keySize < 160, RSA keySize < 2048, DSA keySize < 2048
jdk.certpath.disabledAlgorithms=MD2, MD4, MD5,  EC keySize < 160, RSA keySize < 2048, DSA keySize < 2048

如果出现任何问题,要进一步调试,您可以执行以下步骤

  1. 您可以在 neo4j.conf 中包含以下设置(并重新启动)以评估客户端和 neo4j 之间的握手

    dbms.jvm.additional=-Djavax.net.debug=ssl:handshake
  2. 运行以下命令以调查可用密码列表(示例)

    $ nmap --script ssl-enum-ciphers -p 7473 localhost
    
    Starting Nmap 7.70 ( https://nmap.org ) at 2019-07-17 17:54 PDT
    Nmap scan report for localhost (127.0.0.1)
    Host is up (0.00033s latency).
    Other addresses for localhost (not scanned): ::1
    
    PORT     STATE SERVICE
    7473/tcp open  rise
    | ssl-enum-ciphers:
    |   TLSv1.2:
    |     ciphers:
    |       TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 (secp256r1) - A
    |       TLS_RSA_WITH_AES_128_CBC_SHA256 (rsa 2048) - A
    |       TLS_DHE_RSA_WITH_AES_128_CBC_SHA256 (dh 2048) - A
    |       TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (secp256r1) - A
    |       TLS_RSA_WITH_AES_128_GCM_SHA256 (rsa 2048) - A
    |       TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 (dh 2048) - A
    |     compressors:
    |       NULL
    |     cipher preference: server
    |_  least strength: A
    
    Nmap done: 1 IP address (1 host up) scanned in 0.66 seconds
  3. 以及以下

    $ openssl s_client -connect <server-name-ip>:7473