Angular调用C#控制器HTTPS请求出现ERR_CERT_COMMON_NAME_INVALID错误的解决方法
解决HTTPS请求的ERR_CERT_COMMON_NAME_INVALID错误
这个错误的核心原因是:你请求的域名ourlady不在HTTPS证书的**通用名(CN)或主体备用名称(SAN)**列表中,浏览器验证证书时发现域名不匹配,从而拦截请求。
以下是具体解决方法:
一、开发环境临时应急(仅测试用)
直接访问https://ourlady:4000,在浏览器的安全提示弹窗中选择信任该证书,完成后即可正常发起请求。
二、规范解决方法(适配开发/生产环境)
1. 重新生成包含目标域名的证书
如果使用自签名证书,生成时必须把ourlady加入证书的标识中:
- 用OpenSSL生成的话,可通过以下命令指定通用名:
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -subj "/CN=ourlady" - 若需要支持多个域名,需配置SAN扩展,在生成命令中添加
-extfile参数,扩展文件内指定:subjectAltName = DNS:ourlady, DNS:其他域名
如果是CA颁发的正式证书,需向CA申请包含ourlady的证书(单域名或多域名证书均可)。
2. 确保后端使用正确证书
检查C#后端的Kestrel配置,确认加载的是包含ourlady域名的证书,示例配置(appsettings.json):
"Kestrel": { "Endpoints": { "Https": { "Url": "https://ourlady:4000", "Certificate": { "Path": "./certificates/your-cert.pfx", "Password": "证书密码" } } } }
三、临时替代方案(开发阶段)
如果仅为快速测试,可暂时改用HTTP协议,修改environment.ts中的配置:
export const environment = { production: false, apiUrl: 'http://ourlady:4000' };
注意:生产环境必须使用HTTPS,此方法仅用于开发测试。
内容的提问来源于stack exchange,提问作者Janciu
相关产品推荐
相关产品推荐

