在 Android 设备上运行构建时,请求因不受信任的链而中止

发布时间:2021-03-07 22:19

我被这个 SSL 错误困扰了好几天,我似乎无法让它工作。

我正在使用 Capacitor 实现一个 Ionic 应用程序。与服务器的连接是通过 Axios 完成的。所以,当我尝试使用

进行开发时,一切都很好
ionic serve

从浏览器运行它。流畅完美。

但是,在为生产构建它并在带有 Android Studio 的设备上运行它之后,对服务器的所有请求都被中止了。

我发现这是由于 SSL 错误造成的,因为这是终端上显示的错误:

E/chromium: [ERROR:ssl_client_socket_impl.cc(962)] handshake failed; returned -1, SSL error code 1, net_error -202

但我不知道为什么。因此,经过更多研究,我发现原因是不受信任的链。现在我有点明白什么是证书链了,但我仍然不知道如何修复它。

设备尝试连接的服务器是我们的,以防必须在那里执行某些操作。我知道在完成 SSL 验证的 Android Java 文件中有一些 hack。但据我所知,这是不可取的,而且我只发现了 Cordova 的这个 hack,而不是 Capacitor。

如果这可能对您有所帮助,这是我在研究期间发现的一个有用命令的输出,其中列出了证书链。由于我不确定此输出中的某些数据是否必须保持私密,因此我隐藏了一些信息,并将我们的服务器域替换为假的:

> openssl s_client -connect ourserver.domain.net:443
CONNECTED(00000184)
depth=0 CN = ourserver.domain.net
verify error:num=20:unable to get local issuer certificate
verify return:1
depth=0 CN = ourserver.domain.net
verify error:num=21:unable to verify the first certificate
verify return:1
---
Certificate chain
 0 s:CN = ourserver.domain.net
   i:C = US, O = **Let's Encrypt**, CN = R3
---
Server certificate
-----BEGIN CERTIFICATE-----
Long list of characters...........................
..................................................
..................................................
............ REPLACED WITH DOTS ..................
..................................................
..................................................
..................................................
-----END CERTIFICATE-----
subject=CN = ourserver.domain.net

issuer=C = US, O = Let's Encrypt, CN = R3

---
No client certificate CA names sent
Peer signing digest: SHA256
Peer signature type: RSA
Server Temp Key: ECDH, P-256, 256 bits
---
SSL handshake has read 2068 bytes and written 456 bytes
Verification error: unable to verify the first certificate
---
New, TLSv1.2, Cipher is ECDHE-RSA-AES256-GCM-SHA384
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-AES256-GCM-SHA384
    Session-ID: 570AC93042ABDBBACCA8854C022985DCD8712BC2795CE379A3779C975DB58096
    Session-ID-ctx:
    Master-Key: 19C03ED660DCFE807DF2650A960D656089ADD1C9DA941F18127ED396D9EDBC9DF4CBFDFD3BD03E84B234963151DBE75B
    PSK identity: None
    PSK identity hint: None
    SRP username: None
    TLS session ticket lifetime hint: 300 (seconds)
    TLS session ticket:
    0000 - a5 17 9f 73 46 38 05 b3-f7 d4 d5 ed cb d7 6c 88   ...sF8........l.
    0010 - 79 ee 10 94 41 72 f2 53-88 f6 af 95 e8 dc 4e 5f   y...Ar.S......N_
    0020 - af ef 8f dd 9f dc 52 1f-7d 94 4b 13 e0 b8 bc 06   ......R.}.K.....
    0030 - c0 e3 41 c2 37 3b 12 63-a4 69 e4 10 52 e0 87 fd   ..A.7;.c.i..R...
    0040 - 33 0e 7b 41 ef 65 6f 71-6d be b3 44 5c 85 c2 c4   3.{A.eoqm..D\...
    0050 - 5c e0 34 96 e3 23 f6 dc-01 9a 2b 42 21 88 b2 b7   \.4..#....+B!...
    0060 - 8f e8 8c 6b 4d 42 d6 f9-cb 01 ae 7a 0f 2b 80 48   ...kMB.....z.+.H
    0070 - d8 7f b7 8c ee b3 b6 17-f8 75 bd 47 14 81 79 e8   .........u.G..y.
    0080 - 31 1a 6b 80 d3 78 6b f6-37 9a 2c 63 8f b6 72 db   1.k..xk.7.,c..r.
    0090 - 72 d3 5e 71 69 57 f7 de-82 d1 44 74 fc e0 f4 81   r.^qiW....Dt....
    00a0 - d7 4a 64 28 9c 62 6d 34-52 c0 a7 e5 14 8b b3 63   .Jd(.bm4R......c
    00b0 - 16 1d e9 4c 4e 1f 3d 05-ca 70 3c 4b a9 a9 1d 1d   ...LN.=..p<K....
    00c0 - 18 6e a3 ab a2 84 1c b3-ea 7c b1 e8 da de b4 1f   .n.......|......
    00d0 - 97 72 8c 94 59 80 b9 c6-24 28 7f d5 2b 7f d4 2d   .r..Y...$(..+..-

    Start Time: 1615152283
    Timeout   : 7200 (sec)
    Verify return code: 21 (unable to verify the first certificate)
    Extended master secret: no
---
closed

感谢您的帮助。

回答1