【问题标题】:HandshakeException for a server certificate服务器证书的 HandshakeException
【发布时间】:2019-11-03 16:28:18
【问题描述】:

我正在开发一个移动应用程序,该应用程序向我公司构建的公共 API 发送请求,并使用有效证书建立安全连接 每次我试图提出请求握手异常时,我都会出现无法获得本地颁发者证书的情况 当我运行这个命令时

openssl s_client -showcerts -servername pub.dartlang.org -connect pub.dartlang.org:443

输出如下所示

    CONNECTED(00000003)
    depth=1 C = US, O = Let's Encrypt, CN = Let's Encrypt Authority X3
    verify error:num=20:unable to get local issuer certificate
    ---
    Certificate chain
     0 s:/CN=pub.dartlang.org
       i:/C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X3
    -----BEGIN CERTIFICATE-----
   ....
    -----END CERTIFICATE-----
     1 s:/C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X3
       i:/O=Digital Signature Trust Co./CN=DST Root CA X3
    -----BEGIN CERTIFICATE-----
   ...
    -----END CERTIFICATE-----
    ---
    Server certificate
    subject=/CN=pub.dartlang.org
    issuer=/C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X3
    ---
    No client certificate CA names sent
    Peer signing digest: SHA256
    Server Temp Key: ECDH, P-256, 256 bits
    ---
    SSL handshake has read 3055 bytes and written 456 bytes
    ---
    New, TLSv1/SSLv3, Cipher is ECDHE-RSA-AES128-GCM-SHA256
    Server public key is 2048 bit
    Secure Renegotiation IS supported
    Compression: NONE
    Expansion: NONE
    No ALPN negotiated
    SSL-Session:
        Protocol  : TLSv1.2
        Cipher    : ECDHE-RSA-AES128-GCM-SHA256
        Session-ID: 6E905904FEF3D9B5BA45A2F9140CD2DEC8F31F762759AB2193FD0649585348C9
        Session-ID-ctx: 
        Master-Key: B7762B8FC1543749F02A0011ABBEC22E2C29CA0089F5A4410CCFDE2DB2F1067CED0D8496522292A0338E855E3C717B4E
        Key-Arg   : None
        PSK identity: None
        PSK identity hint: None
        SRP username: None
        Start Time: 1571919503
        Timeout   : 300 (sec)
        Verify return code: 20 (unable to get local issuer certificate)
    ---

    read:errno=0 

如何解决这个问题 - 我不想使用信任所有证书的代码 - 我不想将我的证书添加到资产文件夹中

还有其他解决方案吗?喜欢将我的证书添加到 Flutter 可信存储中?

【问题讨论】:

  • 如何显示pub.dartlang.org 的证书与您公司的服务器相关?有许多解决方案。获取由已受信任的 CA 签名的服务器证书。如果您使用内部 CA,您别无选择,只能将 CA 的证书添加到资产并将其添加为另一个受信任的根。最后的选择是自己在代码中验证服务器证书:是否有正确的签名等
  • 我已经拥有由 CA 签署的服务器证书,该 CA 已被 @RichardHeap 信任
  • 那么,有什么问题呢?用代码和错误更新问题。

标签: flutter dart certificate


【解决方案1】:

我通过使用 httpClient 信任我的证书解决了这个问题 通过在此处添加我的根证书和链证书,具体取决于相同的代码 Flutter add self signed certificate from asset folder

【讨论】:

    猜你喜欢
    • 2015-05-13
    • 1970-01-01
    • 1970-01-01
    • 2021-10-03
    • 2011-04-23
    • 2013-10-18
    • 1970-01-01
    • 2014-09-05
    • 2022-07-20
    相关资源
    最近更新 更多