如何在Google Compute Engine上为.NET Core项目配置SSL
问题排查与缺失配置说明
1. 程序层面HTTPS配置缺失
- 你Dockerfile中仅声明了
EXPOSE 443,该指令仅做端口声明作用,不会让ASP.NET Core程序实际监听443端口的HTTPS流量。默认容器内运行的ASP.NET Core仅监听HTTP 80端口,你需要额外配置Kestrel服务器的HTTPS监听规则:- 配置环境变量指定监听地址:
ASPNETCORE_URLS=https://+:443;http://+:80 - 配置SSL证书路径与密码的环境变量:
ASPNETCORE_Kestrel__Certificates__Default__Path=/path/to/your/ssl_certificate.pfx ASPNETCORE_Kestrel__Certificates__Default__Password=your_certificate_password - 证书需要使用你子域名对应的有效SSL证书,可通过公开可信的证书颁发机构申请。
- 配置环境变量指定监听地址:
2. GCP防火墙规则未开放443入站流量
- Google Cloud Compute Engine默认会阻断所有未主动放行的入站流量,你HTTP可正常访问是因为默认或者你手动开放了80端口的入站规则,需要补充配置VPC入站防火墙规则:
- 规则方向选入站,目标选择你的对应实例,源IP范围按需配置(公网访问可填
0.0.0.0/0),协议和端口选择TCP:443,放行流量。
- 规则方向选入站,目标选择你的对应实例,源IP范围按需配置(公网访问可填
3. 容器端口映射配置缺失
- 启动容器时需要显式将宿主机的443端口映射到容器内的443端口,在
docker run指令中添加参数-p 443:443,否则宿主机443端口没有进程监听,会直接拒绝连接请求。
4. 可选:宿主机反向代理配置
- 如果你在实例宿主机上部署了Nginx、Apache等反向代理服务,还需要额外配置反向代理的HTTPS站点规则,绑定SSL证书,将443端口的流量转发到容器对应的端口。
内容的提问来源于stack exchange,提问作者James Anderbard
相关产品推荐
相关产品推荐

