2015-06-09 2 views
0

В экземпляре EC2, который обслуживает несколько доменов с помощью виртуальных хостов, я настроил балансировщик нагрузки, который перенаправляет трафик HTTPS из порта: 443 в: 8443 для одного из доменов, частично после этого пример: http://elwoodicious.com/2009/12/23/using-elb-to-serve-multiple-domains-over-ssl-on-ec2-for-giggles/Включение SSL в экземпляре AWS EC2

Мои рабочие httpd.conf виртуальные хосты выглядеть следующим образом:

NameVirtualHost *:80 
<VirtualHost *:80> 
    ServerAdmin [email protected] 
    DocumentRoot /var/www/domain.om 
    ServerName domain.com 
    ServerAlias *.domain.com 
    ErrorLog logs/domain.com-error_log 
    CustomLog logs/domain.com-access_log common 
</VirtualHost> 

# more VirtualHosts on *:80 here 

Теперь, как только я добавить новый виртуальный хост для той же domain.com, как это так,

<VirtualHost _default_:8443> 
    ServerAdmin [email protected] 
    DocumentRoot /var/www/domain.om 
    ServerName domain.com 
    ServerAlias *.domain.com 
    SSLEngine On 
    RequestHeader set X_FORWARDED_PROTO 'https' 
    ErrorLog logs/domain.com-https-error_log 
    CustomLog logs/domain.com-https-access_log common 
</VirtualHost> 

... Apache не перезагружается. Уведомления об ошибках отсутствуют - он просто говорит [FAILED].

Единственный ключ, который у меня есть: даже когда я удаляю все *: 80 виртуальных хостов и оставляю только один порт для порта *: 8443, Apache не удается ... даже при настройке NameVirtualHost *:8443.

Может ли это означать, что это директива EC2, которая разрешает только виртуальные хосты на порту 80?

Спасибо за помощь!

---------------- Edit: добавить журнал ошибок

var/log/httpd/error_log содержит следующее:

[Tue Jun 09 16:52:37 2015] [notice] caught SIGTERM, shutting down 
[Tue Jun 09 16:52:37 2015] [notice] suEXEC mechanism enabled (wrapper: /usr/sbin/suexec) 
[Tue Jun 09 16:53:13 2015] [notice] suEXEC mechanism enabled (wrapper: /usr/sbin/suexec) 
[Tue Jun 09 16:53:47 2015] [notice] suEXEC mechanism enabled (wrapper: /usr/sbin/suexec) 
[Tue Jun 09 16:53:47 2015] [notice] Digest: generating secret for digest authentication ... 
[Tue Jun 09 16:53:47 2015] [notice] Digest: done 
[Tue Jun 09 16:53:47 2015] [notice] Apache/2.2.29 (Unix) DAV/2 PHP/5.3.29 mod_ssl/2.2.29 OpenSSL/1.0.1k-fips configured -- resuming normal operations 

var/log/httpd/ssl_error_log содержит следующее:

[Tue Jun 09 16:53:47 2015] [warn] RSA server certificate is a CA certificate (BasicConstraints: CA == TRUE !?) 
[Tue Jun 09 16:53:47 2015] [warn] RSA server certificate CommonName (CN) `ip-xx-xx-xx-xx' does NOT match server name!? 

И, наконец, var/log/httpd/domain.com-https-error_log выглядит следующим образом:

[Tue Jun 09 16:53:13 2015] [error] Server should be SSL-aware but has no certificate configured [Hint: SSLCertificateFile] (/etc/httpd/conf/httpd.conf:1026) 

В строке 1026 httpd.conf находится <VirtualHost _default_:8043>. Я загрузил самоподписанный сертификат OpenSSL, который я создал на своем локальном компьютере, используя aws cli, и я привязал его к Load Balancer для трафика HTTPS.

Запись CNAME для домена указывает на имя DNS ELB. Не уверен, что я пропустил.

+1

говорит о [FAILED] в командной строке, но в журнале ошибок должна быть информация. – tedder42

+0

@ tedder42 спасибо за подсказку. Я обновил вопрос, чтобы добавить журналы. Это похоже на проблему с самозаверяющим сертификатом, который я создал с OpenSSL на моем локальном компьютере ... Может ли это быть причиной для запуска Apache? Это «только» [предупреждение], поэтому я не рассматривал его для этой проблемы, но планировал изучить его позже. – bobsoap

+0

@ tedder42 Я снова обновил вопрос с записью, которую я забыл проверить раньше. – bobsoap

ответ

1

Отлично. Сообщения об ошибках помогли. Вам не хватает двух линий:

SSLCertificateFile /directory/to/file.crt 
SSLCertificateKeyFile /directory/to//file.key 

Here's a howto on configuring SSL on Apache.

+0

К сожалению, я не знаю, где AWS хранит эти файлы - я их загрузил с помощью AWS CLI (http://docs.aws.amazon.com/cli/latest/reference/iam/upload-server-certificate.html) , Я не уверен, будет ли это работать так, потому что сертификаты привязаны к балансировщику нагрузки, как и этот конкретный экземпляр EC2. Я не думаю, что файлы cert даже хранятся в том же поле, что и экземпляр. – bobsoap

+0

, если вы пытаетесь сделать ELB завершение SSL (а не только прокси SSL), только ELB нуждается в сертификатах, и ваш хост подумает, что он отправляет простой http. Другими словами, настройте слушателей на 80-> 80 без SSL и 443-> 80 с SSL. – tedder42

+0

«Passthrough» дал мне подсказку, в которой я нуждался ... Мне пришлось загрузить сертификаты в экземпляр вместо прикрепления их к ELB; тогда я смог ссылаться на них за ваш ответ. Спасибо! – bobsoap

Смежные вопросы