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
相关产品推荐
相关产品推荐

