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

AWS Elastic Beanstalk单实例Java平台HTTPS配置失效求助

Elastic Beanstalk单实例Java SE配置HTTPS后浏览器提示不安全的问题排查

按照AWS官方文档为绑定自定义域名的Elastic Beanstalk单实例(Java SE平台)配置HTTPS协议,但访问域名时浏览器仍提示连接不安全。以下是已完成的配置步骤:

已配置的文件说明

在项目根目录创建.ebextensions文件夹,并添加以下三个配置文件:

1. .ebextensions/nginx/conf.d/https.conf

# HTTPS server

server {
    listen       443;
    server_name  localhost;

    ssl                  on;
    ssl_certificate      /etc/pki/tls/certs/server.crt;
    ssl_certificate_key  /etc/pki/tls/certs/server.key;

    ssl_session_timeout  5m;

    ssl_protocols  TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers   on;

    location / {
        proxy_pass  http://localhost:5000;
        proxy_set_header   Connection "";
        proxy_http_version 1.1;
        proxy_set_header        Host            $host;
        proxy_set_header        X-Real-IP       $remote_addr;
        proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header        X-Forwarded-Proto https;
    }
}

注:proxy_pass设置为localhost:5000,与实例上通过SERVER_PORT 5000参数配置的端口一致。

2. .ebextensions/https-instance.config

files:
  /etc/pki/tls/certs/server.crt:
    content: |
      -----BEGIN CERTIFICATE-----
      certificate file contents (certificate.crt)
      -----END CERTIFICATE-----
      -----BEGIN CERTIFICATE-----
      intermediate certificate (ca_bundle.crt)
      -----END CERTIFICATE-----
      
  /etc/pki/tls/certs/server.key:
    content: |
      -----BEGIN RSA PRIVATE KEY-----
      private key contents (private.key)
      -----END RSA PRIVATE KEY-----

container_commands:
  01restart_nginx:
    command: "service nginx restart"

注:通过ZeroSSL为自定义域名www.my-custom-domain.com生成了有效期90天的证书,包含ca_bundle.crt、certificate.crt和private.key文件,内容已替换到上述配置中。

3. .ebextensions/https-instance-single.config

Resources:
  sslSecurityGroupIngress: 
    Type: AWS::EC2::SecurityGroupIngress
    Properties:
      GroupId: {"Fn::GetAtt" : ["AWSEBSecurityGroup", "GroupId"]}
      IpProtocol: tcp
      ToPort: 443
      FromPort: 443
      CidrIp: 0.0.0.0/0

配置文件均按AWS文档要求使用空格缩进,已将.ebextensions文件夹加入WAR包根目录并部署到Elastic Beanstalk实例。

可能的失效原因

  • server_name不匹配实际域名:当前配置中server_name设为localhost,但实际访问的是www.my-custom-domain.com,Nginx会优先匹配默认server块而非该HTTPS配置块,导致证书未生效。需将server_name改为www.my-custom-domain.com,或用_匹配所有域名。
  • 证书链顺序错误:server.crt中需按「域名证书在前,中间证书在后」的顺序拼接,若顺序颠倒,浏览器无法完整验证证书链,会提示不安全。
  • 证书文件权限问题:Nginx运行用户(通常为nginx)可能无权限读取server.key和server.crt。默认情况下/etc/pki/tls/certs/下的文件权限为root:root,需在files块中添加mode: "0600"(私钥需严格权限)、owner: root、group: root配置。
  • Nginx配置路径错误:部分Elastic Beanstalk Java SE环境的Nginx配置目录并非/etc/nginx/conf.d/,需登录实例确认实际路径,将配置文件放到正确目录下。
  • 证书与域名不匹配:检查ZeroSSL生成的证书是否确实绑定了www.my-custom-domain.com,包括是否存在拼写错误、是否覆盖了所需的域名(如主域名/子域名)。
  • 安全组规则未生效:登录AWS控制台检查EC2实例的安全组,确认443端口的入站规则是否已成功创建。
  • Nginx重启命令不兼容:若实例使用Amazon Linux 2,需用systemctl restart nginx替代service nginx restart,否则Nginx可能未重启导致配置未加载。
  • 证书链不完整:ZeroSSL提供的ca_bundle.crt可能缺少部分中间证书,可通过在线证书验证工具检查证书链完整性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 07:23:16