【问题标题】:Enabling SSL on apache instance on EC2在 EC2 上的 apache 实例上启用 SSL
【发布时间】:2011-10-20 08:43:22
【问题描述】:

我有一个 EC2 实例,它使用 Amazon 的自定义 linux 安装和内置 apache。此安装还安装了 openssl。话虽如此,在 httpd.conf 中似乎没有加载 mod_ssl.so。

所以,我想知道让 apache 启用 ssl 的最佳方法,这样我就可以设置我的 SSL 虚拟主机(请注意,我已经设置了证书/签名)。理想情况下,我不想重建/重新安装 apache。

【问题讨论】:

    标签: apache ssl amazon-ec2


    【解决方案1】:

    试试这个命令:

     yum install mod_ssl 
    

    【讨论】:

    • 干杯。对于 Apache 2.4 用户:我必须使用 yum install mod24_ssl
    • 是的,yum install mod24_ssl 在我的亚马逊 ec2 服务器上运行良好。
    • 有人能解释一下为什么每个人总是在没有 sudo 的情况下发布 yum 吗?如果没有 sudo,它永远无法工作,那你为什么不写呢?
    • @Anthony 你只需先运行sudo su 命令切换到root 用户,然后你可以运行yum 而没有sudo
    • 这不是我问题的答案。这主要是修辞,就解释而言,您所说的不是有效的解决方法。它实际上是答案,但不是我建议的方式。新用户不会理解这样做,而 linux 基本上没有 sudo 就无法工作,所以应该一直写。
    【解决方案2】:

    在 EC2 上的 apache 服务器上启用 SSL 需要做的总结:

    1. 获取 SSL 证书(您已经这样做了)
    2. 按照 Jose Vega 的说法安装 mod_ssl
    3. 将以下行添加到您的 httpd.conf 3。
    NameVirtualHost *:443
    
    <VirtualHost *:443>
        ServerName www.example.com
    #    other configurations
    SSLEngine on
    SSLCertificateFile /etc/httpd/conf/ssl.crt/mydomain.crt
    SSLCertificateKeyFile /etc/httpd/conf/ssl.key/mydomain.key
    </VirtualHost>
    

    最后,不要忘记在您的 EC2 实例上打开端口 443

    【讨论】:

    • 我浪费了几个小时试图找出为什么我无法使用 SSL 访问我的网站,结果却发现我忘记在我的安全组中打开端口 443!如果不是因为你的提醒,我本可以再花几个小时来调试它。
    • 太棒了!值得一提的是 EC2 服务器上 .crt 和 .key 文件的默认目录 /etc/pki/tls/private/
    【解决方案3】:

    我设法在我的 ec2 实例上启用了 SSL,并从startssl.com 安装了一个免费的 ssl 证书。我犯了一些错误,这是基本方法:

    1. 点击控制面板链接注册startssl.com
      • 完成注册过程。您需要验证您的电子邮件地址。
    2. 验证向导 -> 域名验证下验证您的域
    3. 通过证书向导获取证书
      • 选择:Web Server SSL/TLS Certificate
      • 输入将用于加密私钥的密码。稍后您将需要它。
      • 我选择了 4096 的 keysize
      • 将加密后的私钥保存为ssl.encrypted.key someplace
      • ??我忘记了接下来发生的事情
      • 将证书文件另存为 ssl.crt。对我来说,我不得不等待 30 分钟,然后它出现在 Tool Box -> Retrive Certificate
    4. 使用openssl解密加密的ssl.encrypted.key文件
      • sudo openssl rsa -in ssl.encrypted.key -out ssl.unencrpted.key
      • startssl.com 在他们的网站上也有一个解密选项,但它对我不起作用
    5. putty/ssh 到你的 ec2 机器上
    6. 安装 mod_ssl
      • sudo yum install mod_ssl
    7. 替换默认证书和密钥
      • sudo vi /etc/pki/tls/certs/localhost.crt
      • 粘贴 ssl.crt 的内容
      • 确保正确粘贴!我总是丢失前 6 个字符
      • 如果需要,使用:%d 删除现有证书
      • [ESC] wq
      • sudo vi /etc/pki/tls/private/localhost.key
      • 粘贴 ssl.unencrypted.key 的内容
      • 再次确保正确粘贴!
      • [ESC] wq
    8. 检查配置
      • apachectl configtest
    9. 重启
      • sudo service httpd restart
      • 我在重启时遇到了问题,我认为修复它的是sudo kill -9 httpd

    【讨论】:

    • 我已经完成了所有这些步骤 - sudo vi /etc/pki/tls/certs/localhost.crt 给我带来了问题。用我的 ssl.crt 文件的内容替换它的内容会导致问题。 Httpd 不会因此而启动 - apachectl configtestSyntax OK 但 httpd 仍然不会启动。恢复文件修复了 httpd ,所以这绝对是源。有什么想法吗?
    【解决方案4】:

    您应该安装 SSL 模块,因为大多数实例默认不附带 mod SSL,但这取决于您在 AWS 实例中使用的 Apache 版本。要检查您使用的是哪一个,您可以在命令行中运行以下命令:

    httpd -v
    

    对于 Apache 2.2

    yum install mod_ssl
    

    对于 Apache 2.4

    yum install mod24_ssl
    

    【讨论】:

      【解决方案5】:

      如果您使用的是 Amazon Lightsail,请务必从 Lightsail 控制面板进入网络并在您的防火墙中添加 HTTPS/443:

      【讨论】:

        【解决方案6】:

        以下是对我有用的方法,通过 shell,带有一个带有 CA 捆绑包的通配符证书(在 Lightsail 服务器上,启用了 HTTPS/443)。里程可能会有所不同。安装后在https://www.digicert.com/help/ 上进行测试。为简洁起见,我在这里(显然)缩短了证书/密钥。

        值得注意的是,我不需要为域设置 VirtualHost。

        # Overwrite these files on Amazon Linux + mod_ssl (or mod24_ssl)
        # /etc/pki/tls/certs/ca-bundle.crt
        # /etc/pki/tls/certs/localhost.crt
        # /etc/pki/tls/private/localhost.key
        
        ## BEGIN
        
        # INSTALL AS ROOT
        sudo -su root
        
        sudo cat > /etc/pki/tls/certs/localhost.crt <<EOF
        -----BEGIN CERTIFICATE-----
        MIIF7DCCBNSgAwIBAgIMNY9yk7s651tb2YasMA0GCSqGSIb3DQEBCwUAMEwxCzAJ
        KoZIhvcNAQELBQADggEBACu8MsClqLbO1NqjXw+igERhLRkISgnkIjB1p69zh3V0
        /3b68mkC+8pL3HNLgL0qIM9sPKKOl/Iyky2EfwfQDoZEWNB0qWKIOovH5Oj9z5DE
        -----END CERTIFICATE-----
        EOF
        
        sudo cat > /etc/pki/tls/private/localhost.key <<EOF
        -----BEGIN PRIVATE KEY-----
        MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCL6UsW9yC0Faev
        1zeEJcF6E7P6XYqT25rWMj5xzUM8gi/4nLpGr+tOBlFJYSbLlEHJKG6QLO9Ku896
        MwTtWyOrTlPtpJEi9LUrLmOUXtD1WN2Ekql/ZLaO7pxUtVTRF4MyYspGgU1ZjkxY
        vQLnZs85bnG2dLz7Q4xxlj4=
        -----END PRIVATE KEY-----
        EOF
        
        sudo cat > /etc/pki/tls/certs/ca-bundle.crt <<EOF
        -----BEGIN CERTIFICATE-----
        MIIESzCCAzOgAwIBAgIOSMqBefg+ikLz9c3isT8wDQYJKoZIhvcNAQELBQAwTDEg
        bFNpZ24xEzARBgNVBAMTCkdsb2JhbFNpZ24wHhcNMTYxMDE0MDAwMDAwWhcNMjQw
        -----END CERTIFICATE-----
        -----BEGIN CERTIFICATE-----
        MIIDdTCCAl2gAwIBAgILBAAAAAABFUtaw5QwDQYJKoZIhvcNAQEFBQAwVzELMAkG
        DKqC5JlR3XC321Y9YeRq4VzW9v493kHMB65jUr9TU/Qr6cf9tveCX4XSQRjbgbME
        -----END CERTIFICATE-----
        EOF
        
        # RESTART
        sudo service httpd restart
        
        #DONE
        

        【讨论】:

          猜你喜欢
          • 2015-08-24
          • 2018-08-12
          • 2012-04-24
          • 1970-01-01
          • 2014-02-03
          • 1970-01-01
          • 2023-03-13
          • 2013-09-05
          • 1970-01-01
          相关资源
          最近更新 更多