zoukankan      html  css  js  c++  java
  • 排查 TLS 会话问题

    排查 TLS 会话问题

    使用 openssl

    1. 使用 openssl s_client 命令,可以指定 tls 协议的版本,不同的加密算法套件,来验证服务器对 ssl 协议的支持情况
    2. 如果服务器不支持某些加密算法套件,则会提示,Secure Renegotiation IS NOT supported;如果会话建立成功,则会显示完整的 ssl 会话信息,如 ssl 版本,加密套件,预主密钥,会话 key 等信息
    3. 示例:openssl s_client -connect www.qingcloud.com:443 -tls1_2 -cipher RC4
      1. -connect 指定服务器
      2. -cipher 指定加密套件,参看 man ciphers
      3. -tls1, tls1_1, tls_1_2, tls1_3 用于指定 ssl 协议的版本,具体参看 man s_client
      4. 由于 ssl 证书一般是签发给指定的域名的,因此需要以域名的方式来访问服务器,可以在 /etc/hosts 中构造 服务器ip 和 域名的对应关系
      5. 推荐使用 openssl 来验证,协议相关的参数比较丰富

    使用 curl

    1. curl 使用不同的 ssl 协议实现 编译,那么支持的参数,依赖于具体的实现
      示例:curl -v --cacert /usr/local/etc/certs/sc-rxhcmaaj --tlsv1.0 --ciphers RC4 https://www.qingcloud.com

      1. --cacert 指定认证服务器端证书是,使用的证书,一般就是 服务器端注册的证书;当然也可以使用 --insecure 来忽略对服务器端证书的认证
        1. --tlsv1.0, --tlsv1.1, --tlsv1.2 用于指定 ssl 协议的版本,–tls_max 用于指定最高支持的 ssl 协议版本
      2. --tlsv1 是指 tls1.0 及以上的版本,这个选项可能会造成误导,最终的协议建立,可能使用的是 tls 1.2
    2. 如果不支持对应的加密套件,则会忽略指定的 --ciphers 参数,需要使用 openssl ciphers/gnutls -l 来验证当前软件实现支持的加密套件

    使用 gnutls

    1. ubuntu16.04 需要安装 gnutls-bin,其余未验证
    2. 语法比较奇怪,后面有空再补上
  • 相关阅读:
    Android
    Android
    Android
    Android
    Android
    Android
    Android
    Android
    Android
    Android
  • 原文地址:https://www.cnblogs.com/zhedan/p/14247513.html
Copyright © 2011-2022 走看看