【异常】IOS系统 H5 Https请求后端,速度不稳定,很慢。OCSP域名无法访问的问题
事件由来
如果最近发现iOS APP打开h5非常慢,达到5秒以上,而安卓又正常,如果刚好你又是使用了Let's Encrypt 的免费SSL服务,恭喜你,你可能是一位运营商干扰的受害者。
原因:
近期由于众所周知的原因,国内无法直接访问 Let's Encrypt 的 OSCP 域名,导致出现了不能签发证书、OCSP Stapling 失败、网页打开慢等问题。
经检查目前是 ocsp.int-x3.letsencrypt.org 的 cname 域名 a771.dscq.akamai.net 受到了干扰,可以采用本地修改hosts的方案进行临时处理。
在/etc/hosts中添加
23.32.3.72 ocsp.int-x3.letsencrypt.org
生成 OCSP Stapling 文件
经过以下步骤生成所需的用于 OCSP Stapling 验证的文件
首先,需要准备三份证书:
站点证书(website.pem)+ 根证书(root.pem)+ 中间证书(intermediate.pem)
中间证书和根证书,需要根据你的证书的 CA,去下载对应的证书
以下列出了 Let's Encrypt 的中间证书和根证书的下载地址:
根证书:
DST Root CA X3 https://ssl-tools.net/certificates/dac9024f54d8f6df94935fb1732638ca6ad77c13.pem
ISRG Root X1 https://letsencrypt.org/certs/isrgrootx1.pem
中间证书:
Let's Encrypt Authority X1 https://letsencrypt.org/certs/lets-encrypt-x1-cross-signed.pem
Let's Encrypt Authority X2 https://letsencrypt.org/certs/lets-encrypt-x2-cross-signed.pem
Let's Encrypt Authority X3 https://letsencrypt.org/certs/lets-encrypt-x3-cross-signed.pem
Let's Encrypt Authority X4 https://letsencrypt.org/certs/lets-encrypt-x4-cross-signed.pem
这里以 DST Root CA X3 根证书 + Let's Encrypt Authority X3 中间证书 为例(现在 Let's Encrypt 签发的证书基本都是这样的组合):
# 下载根证书和中间证书
wget -O root.pem https://ssl-tools.net/certificates/dac9024f54d8f6df94935fb1732638ca6ad77c13.pem
wget -O intermediate.pem https://letsencrypt.org/certs/lets-encrypt-x3-cross-signed.pem# 生成 OCSP Stapling 验证文件
# 注意,中间证书在上、根证书在下
cat intermediate.pem > chained.pem
cat root.pem >> chained.pem
这样,生成的 chained.pem 就是所需的 OCSP Stapling 验证文件。
如果没有 站点证书(website.pem),可以输入如下命令:
openssl s_client -connect mydomain.com:443 -servername mydomain.com-showcerts < /dev/null 2>&1
[root@hadoop-nginx .acme.sh]# openssl s_client -connect mydomain.com:443 -servername mydomain.com-showcerts < /dev/null 2>&1
CONNECTED(00000003)
depth=2 O = Digital Signature Trust Co., CN = DST Root CA X3
verify return:1
depth=1 C = US, O = Let's Encrypt, CN = Let's Encrypt Authority X3
verify return:1
depth=0 CN = app6.kedaqianbao.com
verify return:1
---
Certificate chain0 s:/CN=app6.kedaqianbao.comi:/C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X3
-----BEGIN CERTIFICATE-----
MIIFXzCCB......................................................
...............................................................
...........................................
..........
.
-----END CERTIFICATE-----1 s:/C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X3i:/O=Digital Signature Trust Co./CN=DST Root CA X3
-----BEGIN CERTIFICATE-----
MIIEkjCCA3qgA..................................................
...........................................
...........................
..................
-----END CERTIFICATE-----
---
Server certificate
subject=/CN=app6.kedaqianbao.com
issuer=/C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X3
---
No client certificate CA names sent
Peer signing digest: SHA512
Server Temp Key: ECDH, P-256, 256 bits
---
SSL handshake has read 3246 bytes and written 444 bytes
---
New, TLSv1/SSLv3, 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.2Cipher : ECDHE-RSA-AES256-GCM-SHA384Session-ID: A3E868ED8A9FFC0687B8379A6AD26AA7B368FB8B270DDD6C61441485E56839A4Session-ID-ctx: Master-Key: C0D9365E17DA7C48053CC179D6E15C0E12FB2572C00E58725044D1A8E7B88823D7757E31C847F01543D3FD0CFB01517EKey-Arg : NoneKrb5 Principal: NonePSK identity: NonePSK identity hint: NoneTLS session ticket lifetime hint: 600 (seconds)TLS session ticket:0000 - 09 34 28 07 47 20 76 19-96 1c ca 19 17 3c bf 32 .4(.G v......<.20010 - fc 6e d7 7d 0e 44 0e 45-18 b5 a4 00 a5 8d d9 98 .n.}.D.E........0020 - f4 18 38 9e 1b b1 58 bb-26 b5 cb 60 b2 38 9a b9 ..8...X.&..`.8..0030 - a0 e5 8c e2 81 9a 63 95-e2 9e 71 84 29 23 65 d8 ......c...q.)#e.0040 - 1c 4a 76 78 02 ac c4 a0-e9 5d b2 23 87 db 47 8c .Jvx.....].#..G.0050 - e6 52 95 45 80 a4 f5 d8-c2 4f 19 1b 2f 1e 92 b7 .R.E.....O../...0060 - 43 53 e9 a4 af 00 4f 4c-d0 11 af 7b bf 5f 90 a9 CS....OL...{._..0070 - c6 fe 7e a8 ca ac a4 08-a8 d2 83 fb cd 4d 27 e4 ..~..........M'.0080 - e2 0d 17 46 00 53 39 2b-c8 5d c9 15 3f 60 2a 0c ...F.S9+.]..?`*.0090 - d9 7e f7 11 eb 75 1a 0d-a9 06 e7 f5 38 bb 2b 39 .~...u......8.+900a0 - f7 9d 2a 07 f4 b5 a1 29-d3 39 c2 71 3b 84 d3 f5 ..*....).9.q;...00b0 - fa 47 4a ab 3d ae de c6-b9 e7 4a 99 2f 10 7c 0c .GJ.=.....J./.|.Start Time: 1592291163Timeout : 300 (sec)Verify return code: 0 (ok)
---
DONE
[root@hadoop-nginx .acme.sh]#
可以看到 0 和 1 两个,-----BEGIN CERTIFICATE----- 开始的 证书文本。
0、表示 站点证书
1、 表示中间证书
复制 站点证书内容(需要包含-----BEGIN CERTIFICATE----- 和 -----END CERTIFICATE-----),为 website.pem 文件。
OCSP Stapling Response
openssl x509 -in website.pem -noout -ocsp_uri
使用这个命令后,返回你的证书对应的 OCSP 服务地址
例如,Let's Encrypt 现在的 OCSP 服务地址是 http://ocsp.int-x3.letsencrypt.org/
以 Let's Encrypt 为例,获取站点证书的 OCSP Response
[root@hadoop-nginx kedawenhua]# openssl ocsp -no_nonce \
> -respout /home/docker/software/nginx/conf/ssl/mydomain.ocsp_res.der \
> -issuer intermediate.pem \
> -CAfile chained.pem \
> -VAfile chained.pem \
> -cert website.pem \
> -url http://ocsp.int-x3.letsencrypt.org \
> -header "HOST" "ocsp.int-x3.letsencrypt.org"
Response verify OK
website.pem: goodThis Update: Jun 16 05:00:00 2020 GMTNext Update: Jun 23 05:00:00 2020 GMT
-respout参数 是指定OCSP 响应数据的 保存位置,将这个位置填入在 nginx 配置文件的 ssl_stapling_file 中,如下开启ssl_stapling。
这里如果出现如下错误的话,说明你的openssl使用了1.1.0版本,这个时候已经不需要指定HOST,把上面命令中的“-header "HOST" "ocsp.int-x3.letsencrypt.org"”删掉就好了。
Missing = in header key=value
ocsp: Use -help for summary.
ssl_stapling on;ssl_stapling_verify on;ssl_stapling_file /home/docker/software/nginx/conf/ssl/mydomain.ocsp_res.der;
重载nginx服务之后,检查是否成功开启。
openssl s_client -connect mydomain.com:443 -status -tlsextdebug < /dev/null 2>&1 | grep -i "OCSP response"
如下:
最后将有关操作制成脚本,添加到 crontab 中自动更新。
重新加载H5, 会发现访问速度,基本恢复正常
【异常】IOS系统 H5 Https请求后端,速度不稳定,很慢。OCSP域名无法访问的问题相关推荐
- 关于IOS系统,H5页面操作history.go(n)回退页面时不会刷新页面数据的问题
关于IOS系统 H5页面操作history.go(n)回退页面时不会刷新页面数据的问题 在我们从操作h5页面时,离开当前页面后,在使用返回键或者history.go(n)再次回到页面,有时是需要刷新当 ...
- Charles抓包(iOS的http/https请求)
Charles安装 官网下载安装Charles: https://www.charlesproxy.com/download/ 2. HTTP抓包 (1)查看电脑IP地址 (2)设置手机HTTP代理 ...
- charles浏览器抓包https_十分钟学会Charles抓包(iOS的http/https请求)
Charles安装 HTTP抓包 HTTPS抓包 1. Charles安装 2. HTTP抓包 (1)查看电脑IP地址 Help→Local IP Address查看本机地址 电脑IP地址 (2)设置 ...
- 前端Vue请求后端Django遇到127.0.0.1拒绝访问
前端Vue和后端Django搭建前后端分离的项目 我是看的这几个链接讲的如何实现前端Vue后端Django的前后端分离的项目的搭建(几个链接的内容实际上大同小异): Python 3+Django 3 ...
- iOS手机客户端https请求忽略证书认证
//设置证书,在客户端默认忽略证书认证 - (BOOL)connection:(NSURLConnection *)connection canAuthenticateAgainstProtectio ...
- Charles抓包(iOS的http/https请求) -可用
每个项目产品都要加埋点,加500行埋点是不是会占用你一两天的时间而且很容易犯错,想只用一小时准确加完这500行埋点剩下一天喝茶聊天么?来试试这520工具, 高效加埋点,目前我们公司100号前端都在用, ...
- 苹果怎么清理系统内存_怎么清理iOS系统的灰色内存?其实办法很简单
iPhone手机查看存储空间的时候,都会看到一个名为"其他"的栏目,标记颜色是"灰色".而"其他"这个项目,占用的内存往往是好几个GB的内存 ...
- iOS使用自签名证书实现HTTPS请求
原文链接:http://www.jianshu.com/p/e6a26ecd84aa 由于苹果规定2017年1月1日以后,所有APP都要使用HTTPS进行网络请求,否则无法上架,因此研究了一下在iOS ...
- iOS客户端校验https网络请求证书
其实iOS系统的网络请求都有校验,比如NSURLConnection.NSURLSession都有系统的自动校验.具体的校验可进行百度 我使用的是NSURLConnection进行的网络请求,NSUR ...
最新文章
- SSL加密包解析的几个概念梳理
- 抽屉开关_技术天地|380伏抽屉开关指示灯更换流程
- php微信模板信息发送的代码例子,微信模板消息发送样例
- java怎么判断按钮是否被点击_怎么判断肌肉训练后是否已经恢复
- 电子商务型网站该如何选择虚拟主机
- HTML基础【1】:认识 HTML
- 利用数组求前n个质数
- STM32F407过程记录
- python手机版做小游戏代码大全-用Python设计一个经典小游戏
- Metronik 案例分享:使用 Aspose.Words 快速生成模板。
- ios dyld: Library not loaded: @rpath/xxx.framework/xxx 之根本原因
- 滴滴新算法让你应对女友?道翰天琼认知智能机器人平台API接口大脑为您揭秘-64
- matlab+butter+多维,matlab butter c实现
- 解决swap file .swp already exists 问题
- dede栏目添加自定义字段方法
- 狄利克雷条件和帕塞瓦尔定理
- Win7中IIS出现“HTTP 错误 404.17 - Not Found 请求的内容似乎是脚本,因而将无法由静态文件处理程序来处理。
- 本地代码怎么上传到码云?
- 关于720全景视频在移动端播放的兼容问题汇总,截止2017年11月29日
- vue+node.js手把手教你搭建一个直播平台(二)
热门文章
- Perforce使用中文教程
- Windows7 SP1(MSDN版)
- 怎样用条码软件制作各种各样的警示标牌
- 蓝底换白底边缘不干净_全网最详细的证件照换背景以及照片排版
- 圆头像 微信小程序 绘图_[微信小程序]授权头像修改圆形
- 数据中心托管服务市场现状研究分析与发展前景预测报告
- 友盟小米收不到推送消息_一个轻量级、可插拔的Android消息推送框架。一键集成推送(极光推送、友盟推送、华为、小米推送等)...
- 统计各排序算法运行的时间
- 项目立项管理(知识要点)
- 邮件服务器配置错误Unknown SMTP host: