





























最近在做一个 cache server,打算支持中间人方案。具体的实施就是自签一个 ca,提供给用户添加到系统进行信任,用这个 ca 去动态签发用户的目标站点证书。其实也就是一个 burp 的样子。
具体的代码实现会在下一篇文章中讲述,这篇只讨论遇到的问题。
这里面说的比较明白,序列号需要对于 CA 唯一,是一个 big int,我直接随机了。在写死的时候浏览器会对序列号报错。
x509.Certificate.Subject.CommonName 不得为空,一般会为第一个 DNSName.
这个也找了老半天,最后根据经验猜测和搜索,认为是没有 bundle certificate,bundle 完错误消失。
这个错误超级恶心,因为提示信息和错误不符,真正的原因可以使用 safari 来查看,会报告“证书不符合标准”,后来在 https://github.com/golang/go/issues/51991#issuecomment-1081998366 才看到一个可能的原因——签发时间过长(我一开始签发的是 10 年的)。
后来翻阅互联网找到了 apple 的政策,https://support.apple.com/en-us/HT210176,对于自签名证书最多允许 825 天的签发时间。同时对于公开可信证书,还有 398 天的限制以及 sct 要求。
比如 *.net 是不对于 hunsh.net 生效的。
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。