知识库

特定密码的 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
© . All rights reserved.