Nexus容器开启HTTPS后curl报SSL证书无匹配备用名称错误
问题成因
- 核心原因是SSL证书校验规则问题:当前主流的HTTPS客户端(包括curl、Chrome等)已经不再仅校验证书的通用名称(CN)字段,而是优先校验*主题备用名称(SAN)*字段。你当前使用的证书SAN字段未包含curl请求使用的目标IP
10.88.0.255,仅匹配CN字段的域名xxxx-xxxxxxx.xxxxxxxx.com,因此触发校验失败。 - Web UI可正常访问的原因是你访问Web UI时使用的是证书匹配的域名,域名和SAN/CN字段匹配,因此校验通过。
- openssl测试返回正常属于测试对象不一致导致的误导:你执行openssl命令时连接的是
10.88.1.9,和curl请求的10.88.0.255不是同一个地址,因此测试结果不具备参考性。
解决方案
你可以根据实际场景选择以下任意一种方案:
- 规范解法(推荐生产环境使用)
重新向内部Active Directory证书服务申请签发证书,将所有需要用到的访问地址(包括业务域名、所有需要用到的访问IP)都添加到证书的SAN字段中,再将新的证书链导入Nexus容器的密钥库,重启服务即可。 - 临时适配解法
无需重签证书,在执行curl请求的机器的/etc/hosts文件中添加域名映射:
10.88.0.255 xxxx-xxxxxxx.xxxxxxxx.com
后续执行curl请求时直接使用域名访问即可:curl -l -v https://xxxx-xxxxxxx.xxxxxxxx.com:8081
3. 临时测试解法(不推荐生产环境使用)
执行curl命令时添加-k参数跳过SSL证书校验,示例:curl -k -l -v https://10.88.0.255:8081
内容的提问来源于stack exchange,提问作者user3783793
相关产品推荐
相关产品推荐

