React+Spring Boot应用证书错误求助:ERR_CERT_COMMON_NAME_INVALID
解决Spring Boot API证书错误问题
一、修复ERR_CERT_COMMON_NAME_INVALID错误
这个错误的核心是Spring Boot使用的证书,其通用名称(CN)或主题备用名称(SAN)和API的访问地址不匹配。
- 先确认你调用API时的访问地址:是
https://api.mypage.com、https://www.mypage.com/api还是服务器IP?证书必须包含这个地址。 - 检查现有证书的CN和SAN:
- 在Windows Server上打开
certlm.msc(本地计算机证书管理器) - 找到给www.mypage.com用的证书,右键→所有任务→查看
- 切换到「详细信息」标签,查看「主题」(找CN字段)和「主题备用名称」
- 在Windows Server上打开
- 重新生成证书(若需要):
如果证书里没包含API的访问地址,得重新申请/生成证书,确保SAN字段把API的域名(比如api.mypage.com)或者服务器IP(如果用IP访问)加进去。 - 替换Spring Boot的Keystore:
别用resources目录里的旧证书,把IIS上的有效证书导出成包含私钥的PKCS12格式,替换掉配置里的KeyStore.p12,同时保证key-alias和导出时设置的一致。
二、修复NET::ERR_CERT_AUTHORITY_INVALID错误
这个是浏览器不信任证书的颁发机构,分两种场景处理:
场景1:使用自签名证书
- 把证书导入Windows Server的「受信任的根证书颁发机构」:
- 打开
certlm.msc,展开「受信任的根证书颁发机构」→「证书」 - 右键→所有任务→导入,选择你的证书文件完成导入
- 打开
- 客户端浏览器也要导入(内部使用场景):
Chrome里走「设置→隐私和安全→安全→管理证书→受信任的根证书颁发机构→导入」即可。
场景2:使用CA颁发的证书
- 检查证书链是否完整:
部分CA颁发的证书需要搭配中间证书,得把根证书、中间证书和服务器证书一起导入到PKCS12格式的Keystore里。 - 验证Keystore的证书链:
用命令keytool -list -v -keystore KeyStore.p12 -storetype PKCS12查看,确认有完整的证书层级。
三、Spring Boot配置额外检查
- 确认
server.port是HTTPS端口(默认443,你用8080也可以,但访问得加端口)。如果想和IIS共用443端口,建议做反向代理——让IIS当前端,把请求转发到Spring Boot的8080端口,这样就能共用同一个证书,从根源避免证书不匹配。 - 核对
key-alias是否正确:用keytool -list -keystore KeyStore.p12 -storetype PKCS12能查看Keystore里的证书别名。 - 生产环境别把Keystore放resources目录:建议放在服务器的非代码目录,配置里用绝对路径,比如
server.ssl.key-store=C:\\cert\\KeyStore.p12,避免打包时出现路径问题。
四、推荐方案:IIS反向代理
不想单独给Spring Boot配置证书的话,用IIS做反向代理是最优解,API和前端网页共用同一个证书,彻底解决证书问题:
- 在IIS里安装「URL重写」和「应用程序请求路由(ARR)」模块
- 要么新建网站,要么在现有www.mypage.com网站下添加API的路由规则
- 设置重写规则,把
https://www.mypage.com/api/*的请求转发到http://localhost:8080/* - 之后前端调用API用同域名路径,证书和IIS的一致,不会再出现证书错误
内容的提问来源于stack exchange,提问作者Coder
相关产品推荐
相关产品推荐

