返回

如何轻松地在 Amazon Linux 2023 单实例 Elastic Beanstalk 中设置 SSL 加密您的应用程序

php

如何在 Amazon Linux 2023 单实例 Elastic Beanstalk 中设置 SSL

引言

安全套接字层 (SSL) 是网络安全的基础,在保护网站和应用程序的用户数据方面发挥着至关重要的作用。对于 Amazon Elastic Beanstalk 用户来说,在单实例 Amazon Linux 2023 环境中配置 SSL 至关重要,因为它可以确保您的应用程序通过 HTTPS 传输,从而提高安全性并增强用户信任。本文将逐步指导您完成在 Amazon Linux 2023 单实例 Elastic Beanstalk 中设置 SSL 的过程。

准备工作

在开始之前,请确保您已完成以下准备工作:

  • 获取有效的 SSL 证书和私钥。
  • 将证书和私钥复制到 Amazon S3 存储桶中。

配置 SSL

1. 添加 mod_ssl

在 Elastic Beanstalk 环境的 eb extensions 文件中添加 mod_ssl:

packages:
  yum:
    mod_ssl : []

2. 配置 Apache 虚拟主机

创建以下文件:/etc/httpd/conf.d/ssl.conf

content: |
  LoadModule ssl_module modules/mod_ssl.so
  Listen 443
  <VirtualHost *:443>
    <Proxy *>
      Order deny,allow
      Allow from all
    </Proxy>

    SSLEngine             on
    SSLCertificateFile    "/etc/pki/tls/certs/server.crt"
    SSLCertificateKeyFile "/etc/pki/tls/certs/server.key"
    SSLCipherSuite        EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH
    SSLProtocol           All -SSLv2 -SSLv3
    SSLHonorCipherOrder   On
    SSLSessionTickets     Off

    Header always set Strict-Transport-Security "max-age=63072000; includeSubdomains; preload"
    Header always set X-Frame-Options DENY
    Header always set X-Content-Type-Options nosniff

    ProxyPass / http://localhost:80/ retry=0
    ProxyPassReverse / http://localhost:80/
    ProxyPreserveHost on
    RequestHeader set X-Forwarded-Proto "https" early

  </VirtualHost>

3. 上传证书和私钥

创建以下文件:Resources/AWSEBAutoScalingGroup/Metadata/AWS::CloudFormation::Authentication/S3Auth

type: "s3"
buckets: ["elasticbeanstalk-us-east-2-xxx"]
roleName:
  "Fn::GetOptionSetting":
    Namespace: "aws:autoscaling:launchconfiguration"
    OptionName: "IamInstanceProfile"
    DefaultValue: "aws-elasticbeanstalk-ec2-role"

创建以下文件:files/"/etc/pki/tls/certs/server.key"

mode: "000400"
owner: root
group: root
authentication: "S3Auth"
source: https://s3.us-east-2.amazonaws.com/elasticbeanstalk-us-east-2-xxx/xxx.pem

4. 允许 SSL 流量

在安全组中添加入站规则:

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

5. 重新部署应用程序

重新部署您的应用程序到 Elastic Beanstalk 环境。

测试 SSL 配置

  • 使用 HTTPS 访问您的应用程序。
  • 检查浏览器中是否显示绿色挂锁图标。
  • 检查您的连接是否显示为安全。

结论

通过遵循本文中的步骤,您可以在 Amazon Linux 2023 单实例 Elastic Beanstalk 环境中成功设置 SSL,从而确保您的应用程序通过 HTTPS 提供,保护用户数据和隐私。

常见问题解答

  • 如何检查 SSL 证书是否已安装?
    使用以下命令检查证书是否已安装:sudo openssl x509 -in /etc/pki/tls/certs/server.crt -noout -text

  • 如何更新 SSL 证书?
    重复上传证书和私钥到 S3 存储桶的步骤,并重新部署应用程序。

  • 如何解决 SSL 连接错误?
    检查您的证书是否有效、安装是否正确,并确保服务器正在侦听端口 443。

  • 我应该多久更新一次 SSL 证书?
    推荐每两年更新一次 SSL 证书,或在证书过期前 30 天更新。

  • 为什么我需要设置 SSL?
    SSL 可防止数据被拦截和窃取,并增强网站的用户信任。