分类
我的生活

公共面板

搭建了一个网站,公共面板:https://pubcp.com/

这个网站可以让懒人不用再配置一些服务的客户控制端,比如支持:

1.CloudFlare Partner解析:您只要有CloudFlare的账户,您账户中添加的域名都可以用这个面板只解析cname接入。

2.ariaNG:Aria2的web控制端,暂时开放的是SSL版本的,使用者需要配置Aria2的服务端开启SSL支持。

3.vmess链接转换:让V2RAYN格式的vmess链接转换为支持quantumult qri可以导入的格式。

其他公共面板陆续开放中…

分类
我的生活

铁蛋不孤单了

(转):孩子:你后悔生下我么?

“不后悔,这世界所有美好的事物加起来也不及你带给我的快乐多。”

分类
未分类

进化?退化?

近年汉语受到很大影响:人们开始习惯理解带错别字的句子,习惯猜想*分别是什么意思,表达更加随心所欲,这也加剧了不同年龄阶段不同教育程度人群之间交流的难度,不知道从长远来看这是语言的进化还是退化

分类
手记 收集资讯

转:Ocsp Stapling 和iOS界面卡顿问题

原文链接:https://jhuo.ca/post/ocsp-stapling-letsencrypt/

作者:virushuo

这个问题成功的吸引了我的注意。

起因:一个Flutter写的app在iOS上偶尔会发生了界面卡顿甚至冻结10多秒,但在Android正常。

开始这个问题没太引起重视,觉得是flutter的问题。但后来随着dart的issue里面报告的人逐渐多起来,看起来不是那么简单。不过非常令人迷惑的是这个现象只在iOS偶尔出现,Android从来不出现,这种不确定性使得重现和调试非常困难。

在issue里面发现报告的人大部分疑似是中国用户,之后发现有人提到更换了阿里云证书之后问题不再重现,这使得我们把问题方向放在https上。最终发现服务器的OCSP Stapling失效,造成了soft failure。之后的行为要看客户端实现,有的浏览器接受soft failure,不进行客户端检查,一切正常。但有一些客户端比如Safari会自己去检查了OCSP状态,从而造成界面无响应。检查nginx log发现ocsp.int-x3.letsencrypt.org请求超时,随后确认此域名遭到了DNS污染。

但是仍然有两个问题没有解释:

  1. 为什么Android没问题,iOS有问题
  2. 为什么有时候可以重现,有时候不可以重现

为了回答这几个问题,顺便找一个解决方案,我顺着读了一圈代码和协议,从nginx到openssl,从tls到ocsp。最后终于能回答这两个问题了。

1 Android没有问题的原因是,Google不满意ocsp这个解决方案,所以所有google的产品,无论是android还是chrome都不进行ocsp检查。

ocsp作用是检查证书状态,尤其是是否吊销,Google认为检查证书状态并不能增加安全性,并且导致https请求时间变长,并且ocsp服务器本身也可能会出问题,这不是一个可靠的方案。Google通过分发一个列表到本地来解决证书检查问题。当然有人提出争议说分发列表这个过程会因为升级服务器被屏蔽而失效,Google认为如果能屏蔽我们的升级服务器,那么屏蔽ocsp服务器岂不是更容易?所以从2012年开始,Google就逐步取消了ocsp检查。

2 为什么有时候可以,有时候不可以

读nginx代码,发现nginx会把ocsp请求结果放在内存里面,直到过期之前才会再次请求ocsp服务器更新状态。但是如果重启了nginx,内存里面的结果就丢掉了,下一次就会直接请求ocsp服务器。

letsencrypt使用akamai cdn分发ocsp状态,实际上遭到DNS污染的似乎是akamai.net的某一部分节点,应该还有少量没被污染。所以有时候还能取得正确的结果,一旦取得正确的结果之后,在下次nginx重启/ocsp过期之前就会变得一切正常。这使得重现它更加困难。

代码读完之后,也就知道了解决方案:

  • 使用 ssl_stapling_file 配置,从一个外部文件获取ocsp信息 ngx_ssl_stapling_file
  • 使用 ssl_stapling_responder配置,nginx会用这个设置覆盖证书里面的Authority Information Access信息,使得请求ocsp被发送到设置的服务器

两者之间我更倾向后者,后者灵活的多,也省去了跨机器更新文件的麻烦,顺便还能解决以后其它麻烦。

我首先想按照ocsp协议写一个简单的responder,不过搜索之后发现有人很多年前写过一段非常简单的转发代码,直接把请求转发给指定的服务器。虽然必须要设置一个固定的转发服务器(因为原始的Authority Information Access信息被nginx覆盖了)。我想更好的解决方案是修改一下nginx的代码,在这个http请求中把原始的AIA放到header里面一起发给代理,不过考虑到大部分人都会把所有证书集中在一个供应商,设置一个转发地址完全能解决问题。而且避免每次升级给nginx重新打补丁的麻烦。所以就不改了。

我稍微修改了一下这个代码,让程序可以从环境变量获得转发地址,以便于使用docker部署。新的代码在这里: https://github.com/virushuo/ocsp-proxy

分类
收集资讯

这个时代不浪漫到什么程度了呢?(转)

深情的人,都被叫做舔狗;
忧郁糟心的人,被称为矫情。
放弃挣扎和绝望了,
也只会自嘲地说一句:
“就让我丧着吧”。
一旦下个交友软件,
别人就会觉得你要约炮。

你突然好像就对所有事物都失去兴趣了,
曾经想去做的事不想做了,
曾经拼命想吸引别人注意,
现在却丧失了表达的欲望。
看见月亮就只是月亮,
听见雨声就只是雨声。

对自己好的人,
一眼就看穿他背后的目的;
不再轻易相信任何人任何话,
手机从不离身。独自吃外卖的次数
比和朋友约着出去吃的次数多了太多。
不再轻易地吐露自己的心声,
变得独立,变得不喜欢麻烦任何人,
你其实并不是不浪漫,
但大多时候已经懒得去浪漫了。
相比起自由自在,
你觉得任何一种关系都会束缚自己。

当然最主要的,还是知音难寻。
所以身边的人都变得无足轻重起来。
但,其实你依然很浪漫;
像春风一样,自由而浪漫着。
你知道,其实有些人,
我们已经见过这辈子的最后一面了。

只是当时我们并没有发觉。
你表现得不喜欢任何事物,
是因为你很少得到过想要的。
人和人之间想要保持长久舒适的关系,
靠的是共性和吸引,而不是压迫、捆绑、奉承,
和一味地付出以及道德捆绑式的自我感动。
你还是有忧郁的时候,
只不过你把那些话发在了树洞里,不会有任何人知道。
你看山中有月亮,便会枕着月亮睡觉;
你听见了下雨,就听见了温柔的歌。
这世上所有的浪漫,都是因为你愿意为他浪费。
浪费时间,浪费精力,浪费爱…
但如果我不能浪费在喜欢的人身上,
那我宁愿把它浪费在自己身上。
做一阵春风,拥抱我,或者让我永远自由浪漫。

分类
手记

揭露火币HT套利骗局

TG上有很多这样的群,看着人也不少,置顶消息写的也很诱惑,而且很多人都在聊怎么发财,请注意,这是骗局,你往上翻一下这个群的聊天记录,你会发现很多账户都是DA的头像,说白了就是DELETED ACCOUNT,另外你也可以注意到,他们基本上都没有什么个性鲜明的头像,基本聊天内容都是捧,当然,里面也有个别受蒙蔽者在里面咨询。请务必远离这样的骗局。

分类
我的生活

最近

所有的交通工具保养一遍,即便没有到保养的时候,原因很简单,支持实体商业,这个时候需要抱团,微薄助力也是贡献。

另外为自己订购了很多服务,历数一下:

1.CDN加速(我不知道一天一两个IP的小站用这个有什么用)

2.油管会员拼车,印度车美区账户。结合手机的定时关闭功能每晚郭德纲助眠。

3.奈飞阿根廷拼车,最近追的剧:《黑钱胜地》,《纸房子》

4.苹果ICLOUD 2T+APPLE MUSIC美区,这个大概唯一的好处不怕丢手机后没有数据了,我是车主,跟几个陌生兄弟拼车含媳妇儿一个车位。

5.买了很多水管。

6.买了N多APP,Quantumult X,DARK SKY….

7.端新闻客户端,看看还负责任的新闻。

8.少数派POWER 2.0,买了就吃灰了,几乎没时间看。

9.office 365家庭车拼车,再也不想费劲去破解了,欠巨硬的钱慢慢还。

分类
未分类

Dark Sky被苹果收购

workflow被APPLE收购后被整合成了捷径,Dark sky昨天也它被收购,如果这个苹果也想整合,那么预想将来苹果的天气预报会强大一些。
后来苹果对workflow已付款用户采取了限时退款,此次Dark sky依旧有变成订阅制的可能,所以现在购买应该是稳赚不亏。
一打开貌似定位有点不准。

但是很快就好了,定位准确

分类
未分类

这也许永远是个悬案了

我十几年前注册了Resellerclub的代理商,我自己注册了182.cc和212.cc两个域名并且续费过,可是就是在使用期间我的这两个域名莫名其妙在账户中消失了,我不知道是什么原因,也许是账户被盗?也许是上级代理拿走了?也许永远不会知道了,这两个域名保留到现在价值起码20万以上,期待有一天印度友人能够回答我的疑问。

分类
手记

CENTOS 8 更改SSH端口

首先修改SELINUX的设置,要允许SELINUX开启

vi /etc/selinux/config

修改 SELINUX=permissive
修改完毕后重启 INIT 6

为了防止出现“semanage: command not found”的错误,需要执行:

dnf install policycoreutils-python-utils

如果是CENTOS 7 请执行:
yum provides semanage
yum -y install policycoreutils-python

然后执行:

semanage port -a -t ssh_port_t -p tcp 2020

执行完后查看一下:

semanage port -l | grep ssh

ssh_port_t tcp 2020, 22

vi /etc/ssh/sshd_config

去掉 Port 22前的注释,添加为:
Port 22
Port 2020
保存退出

重启SSHD服务

systemctl restart sshd

然后开启防火墙,查看一下状态

$ systemctl enable firewalld
$ systemctl start firewalld
$ systemctl status firewalld

查看防火墙当前「默认」和「激活」zone(区域):

$ firewall-cmd --get-default-zone
public  
$ firewall-cmd --get-active-zones
public  
  interfaces: eth0

激活 public 区域,增加网卡接口:

$ firewall-cmd --set-default-zone=public
$ firewall-cmd --zone=public --add-interface=eth1
success  

为 public zone 永久开放 2020/TCP 端口

$ firewall-cmd --permanent --zone=public --add-port=22/tcp
$ firewall-cmd --permanent --zone=public --add-port=2020/tcp
# 重载防火墙
$ firewall-cmd --reload

需要把原来允许和暴露的22端口禁止掉:

$ vi /etc/ssh/sshd_config
#Port 22
Port 2020  
$ systemctl restart sshd
$ firewall-cmd --permanent --zone=public --remove-port=22/tcp
success  
$ firewall-cmd --reload
$ firewall-cmd --permanent --list-port
443/tcp 80/tcp 2020/tcp

把指向22端口的流量都指向本地

firewall-cmd --permanen --zone=public --add-forward-port=port=22:proto=tcp:toport=22:toaddr=127.0.0.1

firewall-cmd –reload