双向TLS(mTLS)在小型私有基础设施里是个被低估的工具。作者发现它特别适合一个场景:私有软件包仓库。没有人工输密码的麻烦,服务器只回应你信任的机器。
这篇文章记录了如何把FreeBSD仓库架在HTTPS上,让nginx只接受由自建微型证书机构签发的客户端证书。适用场景包括企业订阅制仓库,或仅限好友访问的测试仓库。
打开网易新闻 查看精彩图片
第一步先把80端口焊死到443。2026年还在明文传软件包,没有任何借口。nginx配置极简:监听80,返回301跳转。
然后是常规的TLS服务端配置。作者用Let's Encrypt的免费证书,自动续期。此时还是单向认证——服务器向客户端证明身份,客户端仍匿名。先确保这层能通,再往上盖双向认证。
关键在"成为微型CA"。普通TLS握手只有服务器出示证书;mTLS要求客户端也出示,且服务器验证签发者。为此需要自建证书机构,不需要多复杂,够签几张客户端证书就行。
先生成4096位的CA私钥。后续所有客户端证书都由它签发,服务器只信任这个CA。客户端装证书后,访问仓库时自动完成双向握手,无需输入任何密码或token。
这套机制的核心优势:认证发生在连接层,应用层完全无感知。对pkg这类工具来说,配置一次证书,后续操作和普通仓库无异,但未经授权的机器连TLS握手都完不成。
热门跟贴