不要用 let's encrypt 作为 flutter 的服务端证书

阅读量:42 字数:914 阅读时间:2min

在中国大陆,不要使用 let's encrypt 作为 flutter 应用的服务端证书。

起因

几天前更新了 triplan 的 1.2.3 版本,收到了大量 iOS 用户的反馈:卡顿太夸张。与此同时未收到 Android 用户有关卡顿的反馈。更奇怪的是,卡顿现象貌似只出现在发起网络请求之后。这里我使用的是网络请求库 dio。一开始以为是代码优化做的不够好,或者是服务器请求过多造成线程阻塞,于是将注意力放在代码优化和服务端负载均衡上。

问题来源

后来 v2ex 网友帮我找到了原因:服务端使用了 let's encrypt 颁发的证书。

随后我在 github 上找到一些 issue (flutterchina/dio#703dart-lang/sdk#41519flutter/flutter#49392),这些 issue 的报告者大部分是中国人。

目前基本上可以断定是证书的问题。iOS 通过地址 ocsp.int-x3.letsencrypt.org 给 let's encrypt 做 OCSP 联网验证,而该地址在国内无法访问从而导致卡顿。由于谷歌不 care OCSP,在 Android 下不需要进行 OCSP 联网验证从而不会卡顿。

在线证书状态协议 OCSP

在线证书状态协议(Online Certificate Status Protocol, OCSP),是一个用于获取 X.509 数字证书撤销状态的网际协议,在 RFC 6960 中定义,作为证书吊销列表(CRL)的替代品解决了在公开密钥基础建设(PKI)中使用证书吊销列表而带来的多个问题。协议数据传输过程中使用 ASN.1 编码,并通常创建在 HTTP 协议上,此消息类型分为“请求消息”和“响应消息”,因此致 OCSP 服务器被称为“OCSP响应端”。

通俗来讲,在 TLS 的使用中,客户端无法判断一个证书是否被吊销。因此客户端需要通过一个服务端接口来判断手上的证书是否过期、是否被吊销等。

解决方法

更换证书。目前已将 triplan 的服务端证书更换为 TrustAsia。

上一篇:一个 META 标签造成百度统计无法使用

缘起 本站从搭建以来至今一直使用百度统计作为流量分析工具,但后台显示从来没有访客。一直以为是本站知名度过低造成确实没有访客,但也不至于不把我自己算上吧?而且百度统计后台一直提示我“代码安装不正确”。按照官方文档进行故障排查仍没有找到原因。放弃。 直到今天我才找到原因:因为这一行代码,造成百度统计不能正常工作。 <meta name="referrer" conten

雁过留痕,风过留声

目 录