使用Angular Webpack开发服务器代理本地HTTPS时后端提示证书DN为空
Angular代理未传递客户端证书至后端的原因及解决方案
核心原因
直接通过浏览器或编程工具请求后端时,是客户端(浏览器/工具)直接与Tomcat建立SSL连接并发送客户端证书;但Angular的代理(基于http-proxy-middleware)作为中间转发层,默认不会自动携带客户端证书,且当前配置未正确设置证书传递逻辑,导致后端接收不到证书,提示DN为空。
具体问题点
- 你的
proxy.conf.js仅关闭了代理对后端证书的校验(secure: false、rejectUnauthorized: false),但未配置代理向后端发送客户端证书的参数。 - 尝试的
ssl配置无效,大概率是证书文件路径错误、格式不符(需PEM格式),或是http-proxy-middleware版本适配问题导致配置未生效,进而出现options.ssl相关属性为undefined的情况。
解决方案
1. 正确读取证书文件并配置SSL选项
首先确保客户端证书(私钥key、公钥cert、CA证书ca)为PEM格式,且路径正确。在proxy.conf.js中先读取证书内容:
const fs = require('fs'); const path = require('path'); // 替换为你的证书实际路径 const sslOptions = { key: fs.readFileSync(path.join(__dirname, './certs/client-key.pem')), cert: fs.readFileSync(path.join(__dirname, './certs/client-cert.pem')), ca: fs.readFileSync(path.join(__dirname, './certs/ca-cert.pem')) };
然后在代理配置中传入ssl选项:
'/api': { target: `https://localhost:${port}`, changeOrigin: true, rejectUnauthorized: false, secure: false, ssl: sslOptions, onProxyReq: (pr, req, res) => { // 可添加日志验证证书是否被加载 console.log('Proxy SSL key loaded:', !!sslOptions.key); } }
2. 适配http-proxy-middleware版本:使用HTTPS Agent
若上述ssl配置仍无效,可能是版本差异导致。改用创建HTTPS Agent的方式配置:
const https = require('https'); const sslAgent = new https.Agent({ key: fs.readFileSync(path.join(__dirname, './certs/client-key.pem')), cert: fs.readFileSync(path.join(__dirname, './certs/client-cert.pem')), ca: fs.readFileSync(path.join(__dirname, './certs/ca-cert.pem')), rejectUnauthorized: false });
然后在代理配置中添加agent属性:
'/api': { target: `https://localhost:${port}`, changeOrigin: true, agent: sslAgent, onProxyReq: (pr, req, res) => { console.log('HTTPS Agent configured:', !!pr.agent); } }
3. 验证Tomcat端配置
确认Tomcat的SSL连接器配置中,clientAuth设为true(强制要求客户端证书)或want(可选),确保后端确实需要客户端证书,排除后端配置问题:
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol" maxThreads="150" SSLEnabled="true"> <SSLHostConfig> <Certificate certificateKeystoreFile="conf/localhost-rsa.jks" type="RSA" clientAuth="true" /> </SSLHostConfig> </Connector>
内容的提问来源于stack exchange,提问作者Stucco
相关产品推荐
相关产品推荐

