You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Apache与Node.js部署SSL证书后浏览器显示“不安全”问题求助

问题根源

浏览器显示“不安全”的核心原因是:React前端直接向ip_of_appserver:8000发起请求——要么是未加密的HTTP协议,要么是用IP访问不符合你持有的*.domain.com通配符SSL证书的验证规则(通配符证书仅对xxx.domain.com这类子域名有效,IP地址不在证书覆盖范围内)。

解决方案

1. 扩展Apache反向代理配置,接管后端请求

不要让前端直接访问应用服务器的IP端口,通过Web服务器的域名统一转发所有请求。修改你的httpd.conf中的VirtualHost配置,新增Node.js后端的代理规则:

<VirtualHost *:443>
ServerName domain.co.in
SSLEngine on
SSLCertificateFile /etc/httpd/conf/main_corpo.crt
SSLCertificateKeyFile /etc/httpd/conf/corpo_uat.key
SSLCertificateChainFile /etc/httpd/conf/chain_corpo.crt

SSLProtocol all -SSLv2 -SSLv3
SSLHonorCipherOrder on
SSLCompression off
SSLSessionTickets off

# Security headers
Header always set X-Frame-Options "SAMEORIGIN"
Header always set X-XSS-Protection "1; mode=block"
Header always set X-Content-Type-Options "nosniff"

# 代理React前端(3000端口)
ProxyPass "/" "http://ip:3000/"
ProxyPassReverse "/" "http://ip:3000/"

# 新增:代理Node.js后端(8000端口),映射到域名的/api路径
ProxyPass "/api" "http://ip:8000/"
ProxyPassReverse "/api" "http://ip:8000/"

</VirtualHost>

这样所有后端请求都会通过https://domain.co.in/api路径转发,全程走HTTPS加密通道。

2. 修改React前端的API请求地址

将前端代码中所有指向ip_of_appserver:8000的请求地址,替换为相对路径/api或者完整的https://domain.co.in/api,确保所有请求都经过Web服务器的代理。

3. 简化Node.js服务配置(可选)

现在所有请求都通过Apache的HTTPS代理转发到Node.js的HTTP服务,Node.js无需再单独配置SSL,直接以HTTP模式运行即可。这能避免证书配置不一致的问题,同时简化架构。

4. 确认证书覆盖范围

检查你的*.domain.com通配符证书,确保domain.co.in在证书的有效域名列表中(若证书是*.domain.com,则domain.co.in不在覆盖范围内,需要申请包含该域名的证书)。

5. 重启服务并测试

修改配置后,重启Apache服务:

sudo systemctl restart httpd

清除浏览器缓存后,重新访问https://domain.co.in,检查浏览器安全面板是否还有不安全来源提示。

内容的提问来源于stack exchange,提问作者Amit Pandey

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 09:20:24