openssl req -x509 -newkey rsa:2048 -nodes -days 3650 -keyout ca.key -out ca.crt -subj '/CN=Internal CA' ssl_certificate /etc/nginx/cert/ca-chain.pem;
内网测试站用了自签证书,Chrome 显示红色警告,接口调用直接抛 certificate verify failed,加例外也只有当前浏览器生效。这类现象通常不是突然出现的,往前翻半天日志能看到苗头。
追下去是这么回事:自签证书不在系统或浏览器的信任库里,客户端没有可以验证的根,只能按不受信任处理。HSTS 打开后连继续访问的入口都不给。
「自签证书不受信任」排查到最后往往是很小的一处差异,前面那些复杂猜测可以先放一放。监控和日志的时间要对上,时区不一致会多绕很大一圈。
临时改动用注释写上日期和原因,过两周自己都记不清为什么这么写。
处理上按这个顺序:把自签的根证书导入客户端信任库,测试机按平台分别装,别只装服务器;服务端下发时带上完整的自签链,只发叶子证书一样验不过;确实只给内部用,就在调用方显式指定 CA 文件,别用关闭校验的办法绕过。
确认没问题再收工,测试机导入根证书后地址栏不再报错,接口也不再抛校验错误。
