我使用Cloud Functions for Firebase并为客户端创建了可消耗的API端点。端点在Web和iOS客户端上运行良好,但是,在Android上,我遇到SSL错误,但有以下异常:
javax.net.ssl.SSLHandshakeException: Connection closed by peer
我尝试使用来自终端的openssl
连接相同的内容,但失败并出现以下错误:
命令:
openssl s_client -connect us-central1-android-clean-architectu-38a86.cloudfunctions.net:443
响应:
CONNECTED(00000003)
6233:error:140790E5:SSL routines:SSL23_WRITE:ssl handshake failure:/BuildRoot/Library/Caches/com.apple.xbs/Sources/OpenSSL098/OpenSSL098-59.60.1/src/ssl/s23_lib.c:185:
我的假设是Firebase可能正在使用自签名服务器证书,这会导致"未知证书颁发机构"。根据Android的SSL文档,可以通过创建我自己的TrustManager
并信任证书来解决此问题。虽然我还没有做到这一点,但我想知道是否存在另一种灵魂。 (是的,我的假设可能是错的)
还有其他人遇到过这个问题,并知道为什么会这样吗?对此有何看法?
修改
根据要求复制的步骤(问题被投票结束),这里有你如何重现它
在Android上,使用任何网络库(我使用Loopj),对以下API发出GET
请求 - https://us-central1-android-clean-architectu-38a86.cloudfunctions.net/helloWorld
响应将导致javax.net.ssl.SSLHandshakeException: Connection closed by peer
异常失败。 Android API 19,22,23引发异常,但是,它适用于Android API 25。
假设2 - 这可能是TLS 1.2问题吗?