2011-08-04 43 views
24

我有一个EC2实例,它使用了亚马逊的定制linux安装和内置的apache。此安装也安装了openssl。话虽如此,似乎没有一个mod_ssl.so加载到httpd.conf中。因此,我想知道让Apache启用SSL的最佳方式,以便我可以设置我的SSL虚拟主机(请注意,我已经设置了证书/签名)。理想情况下,我想不必重建/重新安装apache。在EC2上的apache实例上启用SSL

回答

31

试试这个命令:

yum install mod_ssl 
+10

干杯。对于Apache 2.4用户:我不得不使用'yum install mod24_ssl'。 –

+4

是的,'yum install mod24_ssl'在我的amazon ec2服务器上工作正常。 –

+1

有人可以解释为什么大家总是张贴没有sudo的yum吗?没有sudo它永远不会工作,所以你为什么不写它? – Anthony

24

的需要做对EC2使Apache服务器SSL内容摘要:

  1. 获取SSL证书(你已经做了)
  2. 安装mod_ssl为Jose Vega所说
  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实例

+2

我浪费了几个小时试图找出为什么我无法使用SSL访问我的网站,只能注意到我忘记在我的安全组中打开端口443!如果不是因为你的提醒,我可能花了几个小时试图调试。 – Stanley

+0

绝对好!值得一提的是EC2服务器上的.crt和.key文件的默认目录'/ etc/pki/tls/private /' –

12

我设法在我的EC2实例启用SSL并从startssl.com安装免费SSL证书打开443端口。我犯了一些错误,这是基本的方法:

  1. 注册到startssl.com通过点击控制面板链接
    • 完成注册过程。您需要验证您的电子邮件地址。
  2. 验证下验证向导域 - >域名验证
  3. 通过证书向导
    • 获得证书的选择:Web Server SSL/TLS Certificate
    • 输入将用于加密密码私钥。您将在稍后需要。
    • 我选择密钥长度4096
    • 保存加密私钥ssl.encrypted.key某处
    • 的?我忘了接下来发生了什么
    • 将证书文件保存为ssl.crt。对我来说,我不得不等待30分钟,然后就出现在工具箱 - > Retrive证书
  4. 使用OpenSSL解密加密文件ssl.encrypted.key
    • sudo openssl rsa -in ssl.encrypted.key -out ssl.unencrpted.key
    • startssl如果。COM也有在其网站上解密的选择,但它并没有给我
  5. 腻子/ 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
+0

我已经完成了所有这些步骤 - 'sudo vi/etc/pki/tls/certs/localhost。 crt'对我造成了问题。用我的ssl.crt文件的内容替换它的内容会导致问题。 Httpd无法启动,因为它 - 'apachectl configtest'说'语法OK',但httpd仍然不会启动。恢复固定的httpd文件,这绝对是源代码。有任何想法吗? – maxhud

3

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

httpd -v 

对于Apache 2.2

yum install mod_ssl 

对于Apache 2.4

yum install mod24_ssl 
0

如果你正在使用亚马逊Lightsail,请务必从Lightsail仪表板进入联网并在您的防火墙中添加HTTPS/443:

enter image description here