HTTPS 无法在 AWS Elastic BeanStalk 单实例 Java 平台上运行

问题描述 投票:0回答:1

我使用 AWS 为 JAVA SE 平台提供的官方文档(在运行 Java SE 的 EC2 实例上终止 HTTPS),将 AWS Elastic BeanStalk 单实例配置为对附加到它的自定义域使用 HTTPS 协议。但是,当我访问该域时,浏览器仍然说它不安全。

为了使其成为 HTTPS,我在项目的根目录中创建了一个新的 .ebextensions 文件夹,并添加了以下文件:

.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; } }
当我使用 

SERVER_PORT 5000 参数在我的实例上配置它时,proxy_pass 设置为 localhost:5000

.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.crtcertificate.crtprivate .键.

.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
我在 IntelliJ 中使用空格作为缩进创建了此文件,就像 AWS 文档所述,还在 .war 存档的根目录中添加了 .ebextensions 文件夹,并将其部署到我的 Elastic BeanStalk 实例。

你知道为什么它不起作用吗?

java amazon-web-services deployment https
1个回答
0
投票
我设法通过实际切换到负载平衡实例来修复它。从那时起,这个过程就容易多了。这些是我所做的步骤:

    创建一个新的负载均衡实例
  • 从 AWS Certificate Manger 为自定义域创建新的 SSL 证书(带或不带 www 前缀均可使用)
  • 使用带或不带 www 前缀的方式为自定义域创建两个 A 记录别名
  • 在实例的安全组上创建 HTTPS 入站规则
  • 使用新证书添加了新的 HTTPS 侦听器
  • 更改了 HTTP 侦听器以重定向到 HTTPS
由于创建负载均衡实例的过程与单实例一样简单,因此值得这样做,而不是采用覆盖服务器配置文件的艰难方法。

© www.soinside.com 2019 - 2024. All rights reserved.