delphij's Chaos

选择chaos这个词是因为~~实在很难找到一个更合适的词来形容这儿了……

14 Nov 2021

指定 fetch(3) 的 User-Agent

今天抽时间把邮件系统的软件升级了一下,然后发现无法获得 ClamAV 的源代码: ===> License GPLv2 accepted by the user ===> clamav-0.104.1,1 depends on file: /usr/local/sbin/pkg - found => clamav-0.104.1.tar.gz doesn't seem to exist in /usr/ports/distfiles/. => Attempting to fetch https://www.clamav.net/downloads/production/clamav-0.104.1.tar.gz fetch: https://www.clamav.net/downloads/production/clamav-0.104.1.tar.gz: Forbidden 同一个链接用浏览器是能打开的,一看邮件果然已经有人 开过票 了。 最近发现不少网站都出于某种原因对 User-Agent 进行了限制,不过既然这是个用户能自行指定的值, 这么限制到底意义何在呢? 由于我目前使用 git 来更新 port,因此并不希望通过打补丁的方法来解决问题。查了一下 fetch(3), 发现可以通过设置环境变量来解决,于是: export HTTP_USER_AGENT="Mozilla/5.0" 搞定。 我觉得限制 User-Agent 蛮蠢的:本来它可以给网站的主人提供更多的信息来针对不同的客户端提供服务,但总有些人拿它来限制访问, 最终大家也就都不说实话了…… Read more...
30 Oct 2021

重贷款笔记

湾区有个晚间的中文广播电台多年以前经常会播放一个广告:「xx博士算对了!贷款利率又降了!」 语调颇为激动,很有一种在拉斯维加斯住酒店时路过赌场,里面老虎机时不时会有人特别激动地嚷嚷一嗓子自己赢了的劲头。

因为我的贷款本金金额已经下降了不少,目测这次很可能是不做套现(cashout refinance)也不搬家的情况下最后一次做重贷款了。 之前2013年的经历可以参见 这篇

Read more...
30 Sep 2021

Let's Encrypt SSL证书失效问题

Let’s Encrypt 是我目前使用的证书发证机构。早上 yegle 提到了某个bug,于是研究了一下,这里记一笔,算是留个历史见证吧。

发生了什么

在 PKI 证书体系中,信任是通过逐级签名以及对这些签名的验证来实现的。 对大部分客户端系统来说,这些系统中会存在一个或多个受信的根证书发证机构的证书, 其公钥是通过这些系统本身的更新机制派发的。

根证书发证机构的证书通常是自签名的,更新相对来说比较麻烦(它通常依赖于操作系统的在线或离线更新机制), 因此这些证书的私钥事关重大,因此人们通常不希望经常更新它们,因而证书发证机构在绝大多数时候并不会使用这些私钥来签署证书。 取而代之的是,他们会创建一些称为中级发证机构的证书用来签署日常的证书,这样根证书的私钥可以采用更为严密的方法来保护, 例如可以把它们从网络上彻底断开,而中级发证机构的证书则可以以较高的频率进行密钥轮换,借此来避免其私钥暴露导致的风险。

一个新的发证机构进入市场时,其自签名的根证书往往不会被已经在市场上的客户端系统认可, 因此这样一来新的发证机构想要获得用户就必须想办法解决能被用户承认这个问题。 一旦获得了一定的知名度并证明了自己的可靠性, 这些发证机构便可以遵循一定的流程获得主流浏览器或操作系统的认可, 并将自己的根证书也加入到它们的受信根证书列表中了。 所以,在起步阶段,新的发证机构往往会要求一些已经存在的根证书去对其根证书进行交叉签署, 在客户端验证证书有效性时,由于这些根证书在他们看来是一个经过了受信根证书签名的中级证书而不是一个普通的不受信自签名根证书, 因此也就不会给出无法验证证书是否有效的提示,而是能够正确地对其有效性进行验证了。

Let’s Encrypt 在起步阶段正是采用了这种做法。通俗地说,它的中级发证机构的证书被两家根证书机构同时签名, 其一是它自己的 ISRG Root,另一个是另一家根证书机构 IdenTrust 的 DST Root X3。初期,由于 DST Root X3 已经被许多操作系统和浏览器认证过,因此为其普及起到了非常重要的作用。

UTC 时间 2021年9月29日 19:21:40,DST Root X3 的根证书过期了。这样一来,这一边的信任链便不再成立。

Read more...
29 Jul 2021

去 San Jose DLPC 办了 RealID

在发生 911 恐怖袭击之后,美国国会通过了 2005真实身份法案(Real ID act of 2005), 并由时任总统小布什于 2005 年 5 月 11 日签署成为法律 PL 109-13。 该法律要求美国各州签发的驾照符合一定联邦规范的驾照,符合这些规范的驾照称为 Real ID, 可用于进入联邦政府机构或在美国境内乘坐飞机(TSA属于联邦管辖)。

由于对 DMV 办事效率的恐惧,加上办理 Real ID 驾照必须亲自去一趟 DMV,我一直对办理 Real ID 有些抗拒。 去年由于疫情,我就直接在网上更新了驾照。 前几天 DMV 发来邮件说我这种情况可以在今年的 12 月 31 日之前去直接升级成 Real ID,于是研究了一下相关流程,这里记一笔。

Read more...
12 Jun 2021

记录一下之前对 fsck_msdosfs(8) 的改进

疫情之前,娃在周末会去某个才艺班,上课的时间我觉得实在是比较无聊, 于是就带上笔记本坐在星巴克做一些较小规模的代码清理工作。 最终,我利用这些碎块化的时间完成了对 FreeBSDfsck_msdosfs(8) 的核心代码的算法进行了改进,使其需要的内存用量变成了原先的 1/128, 这里稍微记一下当时的一些思路。

Read more...
23 May 2021

线上重做 FreeBSD GPT 引导分区

记一笔。

我现在这台服务器已经用了蛮久(超过10年)了,刚刚安装的时候还是 FreeBSD 8.1 RC,一路升级到 FreeBSD 12.2。 前段时间因为工作比较忙,一直没顾上把它升级到 FreeBSD 13.0,今天总算是找了点时间来做升级。

总体上这次升级比预想的还要平稳一些,由于 FreeBSD 13.0 和 12.2 的内核接口变化不大,因此我也没按照正规的做法, 即升级内核、重启第一次、etcupdate、installworld,重启第二次、delete-old/delete-old-libs,而是在 installkernel 之后直接做了 etcupdate 和 installworld。

Read more...
23 May 2021

本地 git 的 partial clone

partial clone 是 git 的一项旨在减少空间和网络带宽占用的特性。 它会跳过下载那些可能不会用到的 git 对象,而是仅仅在需要时才去下载。对于网络延迟较低且带宽不愁的用户来说, 这样做往往会节省掉不少不必要的磁盘空间占用,而代价是可能失去离线访问的能力。除此之外,有些操作, 例如 git blame 或者 git log -p 很可能会需要与服务器交互,从而会变得略慢一些。

比较有用的场景是在使用某些历史比较久,或是对文件整体替换较多,而大部分情况下只关注最新版本的代码库。 与较早的 --depth 1 相比,partial clone的优点在于想要访问历史时仍然可以像正常的clone一样访问。

Read more...
15 May 2021

完成了第二针新冠病毒疫苗

免责声明 本人无医学相关专业背景,撰写本文主要是记录自己目前了解到的一些信息, 对于这些信息的准确性不承担任何责任,对于医疗、相关法规的任何问题,请咨询专业人士。 上次 打疫苗的同时就预约了本周四(5月12日) 在同一地点的疫苗,时间比上次略早一些,我吃完饭就开车过去了。 携带的资料包括上次获得的 CDC 疫苗记录卡,以及上次填写的初筛状况表格(并不需要), 大致流程与上次类似。略有不同的是本次该疫苗站提供了辉瑞疫苗,不过鉴于我上次打的是 Moderna 疫苗,而目前两种疫苗混打的有效性数据不够多,因此第二针还是继续打 Moderna 疫苗。 第二针疫苗需要再填写一个初筛状况表格,内容与上次类似, 同时增加了一个询问接受疫苗的人是否有无家可归、特别贫困等问题的问卷。 进入之后,志愿者确认了身份,并再次确认了上次打疫苗的时候提供的驾照和保险信息。 值得一提的是,我的保险公司至今为止仍然没有收到第一针疫苗的账单。 与流感疫苗不同,本次疫苗服务并不直接向接种疫苗的人收取任何费用, 即使他们没有任何医疗保险也是如此(在 2010可负担医保法案 生效之后,绝大多数医疗保险方案均包含了各种疫苗服务,因此 Costco、 CVS、Walgreens、Safeway 等提供的疫苗服务往往会冠以“免费注射流感疫苗”, 同时用 * 和小字告诉客人需要有一份有效的医疗保险。而 COVID-19 疫苗, 则是有 H.R.748 - CARES Act 法案提供了专项拨款,因此即使接种疫苗的人没有保险也可以获得相关服务而无需自行付费)。 打完疫苗之后,获得了一张新的接种了疫苗的贴纸、CDC打完两针疫苗的记录卡, 以及一个在 Santa Clara 郡医疗中心完成了接种的别针。 个人感觉第二针疫苗的工作人员的手法不如第一针,不过总体上尚在可接受的范围。 在打完疫苗的当天,除了胳膊酸痛之外(大致上相当于被人揍了一拳之后的感觉) 没有特别明显的不适。第二天感觉比较累,此外感觉体温略有升高(此感受并未被体温计证实), 多睡了两个小时左右。 除此之外没有特别明显的不良反应。 Read more...
18 Apr 2021

作弊条: hAP ac 配置迁移

本文主要是作弊条,记录一下目前所做的事情,以备未来不时之需。

2017年的时候和 @yegle 团购了一批 Mikrotik hAP ac。 我当时主要的需求有:

  • 支持多个VLAN和SSID,以便于隔离不同厂商的IoT设备,以及家里不同的计算机设备;
  • 能够覆盖家里的不同区域;
  • 漫游比较容易(并非刚需);
  • 硬件便于安装,需要可以挂在墙上,最好支持 PoE 供电。

认为比较无所谓的功能是:

  • 图形界面(可有可无);
  • 路由功能(采用了一台基于 Atom C2758、7个千兆口的超微主板组装);
  • 云管理(减分项)。

具体实施中,我在家里是通过扁平的六类线缆以明线方式从路由器直接连到楼上。原本买了三台AP,但实际上只用了两台就实现了整栋建筑的覆盖。

Read more...
15 Apr 2021

打了第一针新冠病毒疫苗

免责声明 本人无医学相关专业背景,撰写本文主要是记录自己目前了解到的一些信息, 对于这些信息的准确性不承担任何责任,对于医疗、相关法规的任何问题,请咨询专业人士。 背景 在疫苗获得了联邦食品药品管理局(FDA)的紧急使用批准之后, 接下来就是给愿意打疫苗的普通公众打疫苗和重新开放了。 目前在美国境内获得批准的有三种疫苗: 辉瑞 (Pfizer) 公司的信使核糖核酸(mRNA)疫苗。 莫德纳 (ModernaTX) 公司的信使核糖核酸(mRNA)疫苗。 强生杨森 (Johnson & Johnson’s Janssen) 制药公司的腺病毒载体疫苗。 前两种 mRNA疫苗 的原理是 mRNA 在人体细胞中表达抗原来刺激免疫系统产生免疫反应, 其中不含活的病毒,生产工艺简单,不易出现微生物污染等问题。其缺点是 RNA 结构十分不稳定,因此保存时间较短,并且对运输的要求比较高。 目前认为这两种疫苗都需要打两剂。 最后一种腺 病毒载体疫苗 的原理是改造人类腺病毒,令其携带能产生新冠病毒蛋白的基因, 刺激人免疫系统来产生免疫反应。这种疫苗的优点是对运输的要求比 mRNA 疫苗要低。 目前认为该疫苗只需要打一剂。2021年4月13日,联邦食品药品管理局宣布暂停该疫苗的使用, 原因是需要调查6例 (大约1/1,000,000,其中1人死亡) 出现脑静脉窦血栓的病例。 从4月15日起,16岁以上的加州居民都可以打疫苗了,在此之前,需要满足一定的年龄, 或从事特定职业,或是有可能导致严重并发症的慢性疾病的人才可以打。 在了解了周围的一些人打疫苗的经验并研究了一些相关资料之后, 我的想法是应该选择 mRNA疫苗,如果可能的话就选择辉瑞疫苗, 原因是这种疫苗目前使用的人数最多,并且其保护效果已经在以色列得到了验证。 Santa Clara 郡在整个加州之前就已经将适用人群扩大到了16岁以上全体居民, 也对网站进行了数度更新,我也在4月13日成功地预约了在4月15日下午, 在我家附近一家浸信会教堂的由 Santa Clara 郡医疗中心提供的疫苗服务。 需要携带的物品 带照片的个人证件(如驾照)。 医疗保险卡。 预约信(上面有一个QR code),可以用手机显示代替。 当天的经历 我在4月15日预约时间之前有个会,不过幸运的是与会人员发挥了我厂的说完事尽量不拖延的传统, 我得以及时出门并开车去了教堂。 教堂门口已经设立了明显的 COVID vaccine site 标志,里面的路用移动式金属护栏分开, 并且有志愿者指挥。 Read more...