Назад | Перейти на главную страницу

Как настроить Godaddy SSL на CentOS?

Я никогда раньше не настраивал SSL в Linux, но имею общее представление о том, как это работает. Ниже приведены спецификации сервера, если это поможет:

Сервер: CentOS Linux 6 Рабочая станция: Windows 7

Итак, у меня есть 4 домена, каждый из которых использует одну установку Magento и IP-адрес. Предположим, что один из моих доменов - «mywebsite1.com». Я сейчас пытаюсь включить SSL только для этого домена, но у меня возникают ошибки. Что я делаю не так? Вот мой рабочий процесс:

  1. Я купил SSL у Godaddy, затем сгенерировал csr и ключ с помощью данной ими команды:

    openssl req -new -newkey rsa:2048 -nodes -keyout mywebsite1.key -out mywebsite1.csr

  2. Копирую оба файла в / etc / pki / tls / private

  3. Я открываю mywebsite1.crs, затем копирую и вставляю код в Godaddy.

  4. Я создаю файлы crt и загружаю их с Godaddy, загружаю на свой сервер, а затем перемещаю их в / etc / pki / tls / certs

  5. а. 1-я попытка, я открыл /etc/httpd/conf.d/ssl.conf и обновил дефолт Значения SSLCertificate File, KeyFile и ChainFile блока VirtualHost указывают на правильные местоположения.

    б. 2-я попытка, следующая http://dev.antoinesolutions.com/apache-server/mod_ssl Я изменил ssl.conf и добавил эту директиву:

    NameVirtualHost *:443

    c. Затем я удалил все дефолт Блок VirtualHost (довольно длинный).

    Последняя попытка, я добавил следующее в измененный ssl.conf из

<VirtualHost *:443>

    SSLEngine on

    SSLCertificateFile /etc/pki/tls/certs/mywebsite1.com.crt
    SSLCertificateKeyFile /etc/pki/tls/private/mywebsite1.key
    SSLCertificateChainFile /etc/pki/tls/certs/gd_bundle.crt
    DocumentRoot /var/www/html
    ServerName mywebsite1.com
</VirtualHost>

6 .. Я перезапускаю Apache

7 .. Затем я перехожу к https://mywebsite1.com только чтобы найти ошибки, которые мешают мне просматривать сайт в различных браузерах.


Браузер: Firefox

SSL received a record with an unknown content type.

(Error code: ssl_error_rx_unknown_record_type)

Браузер: Chrome

Error 107 (net::ERR_SSL_PROTOCOL_ERROR): SSL protocol error.

Браузер: IE ... переводит меня в Google ...


httpd.conf:

NameVirtualHost 12.34.567.89

<VirtualHost 12.34.567.89>
    DocumentRoot  /var/www/html
    ServerName website1.com
</VirtualHost>

<VirtualHost 12.34.567.89>
    DocumentRoot  /var/www/html
    ServerName website2.com
</VirtualHost>

<VirtualHost 12.34.567.89>
    DocumentRoot  /var/www/html
    ServerName website3.com
</VirtualHost>

<VirtualHost 12.34.567.90:80>
    DocumentRoot /var/www/html
    ServerName website4.com
</VirtualHost>

Ноты:

  1. Я читал, что вы должны включить ssl с помощью команды под названием «a2enmod ssl», но эта команда не существует для моего сервера.
  2. В / etc / httpd / logs нет журналов ошибок ssl.
  3. Согласно Godaddy, мне было приказано назвать ключ «mywebsite1» без расширения. Однако мне выдали ящик с расширением, что странно.
  4. Это только этап разработки, и это изменение нужно будет быстро воспроизвести с новым SSL и другими доменами после запуска производственного сервера.

Я пробовал все шаги 3 раза (см. 5a-5c), но мне все равно не удалось заставить SSL работать для одного из моих доменов. Как я могу заставить работать SSL?

ОБНОВЛЕНИЕ: apachectl -S

12.34.567.90:80 mywebsite4.com (/etc/httpd/conf/httpd.conf:1021)
12.34.567.89:* is a NameVirtualHost
default server mywebsite3.com (/etc/httpd/conf/httpd.conf:1016)
port * namevhost mywebsite3.com (/etc/httpd/conf/httpd.conf:1016)
port * namevhost mywebsite1.com (/etc/httpd/conf/httpd.conf:1026)
port * namevhost mywebsite2.com (/etc/httpd/conf/httpd.conf:1031)
port * namevhost mywebsite5.com (/etc/httpd/conf/httpd.conf:1036)
wildcard NameVirtualHosts and _default_ servers:
*:443 is a NameVirtualHost
default server mywebsite1.com (/etc/httpd/conf.d/ssl.conf:77)
port 443 namevhost mywebsite1.com (/etc/httpd/conf.d/ssl.conf:77)
Syntax OK

ОБНОВЛЕНИЕ: Все заработало .. но ..

Мне удалось запустить SSL, изменив vhost, чтобы он просто указывал на mywebsite1 вместо *: 443

<VirtualHost mywebsite1.com>
    SSLEngine on
    SSLCertificateFile /etc/pki/tls/certs/mywebsite1.com.crt
    SSLCertificateKeyFile /etc/pki/tls/private/mywebsite1.key
    #SSLCertificateChainFile /etc/pki/tls/certs/gd_bundle.crt
    DocumentRoot /var/www/html
    ServerName mywebsite1.com
    ErrorLog logs/ssl_error_log
    TransferLog logs/ssl_access_log
    LogLevel warn
</VirtualHost>

Это подтягивает SSL, однако ... протокол HTTP возвращает "неверный запрос"

Похоже, это изменение влияет на просмотр сайта без использования SSL. Я не могу указать порт, потому что перезапуск apache приведет к ошибке, что порты и непорты нельзя смешивать.

ОБНОВИТЬ

Исправлено предложением Майкла Хэмптона. Спасибо, парни.

У тебя куча <VirtualHost> записи, которые не иметь определенный номер порта. Таким образом, как ваш apachectl -S как показано на выходе, определение применяется ко всем прослушивающим портам. Определите номер порта для каждого из этих <VirtualHost>с.

Если вы использовали /etc/httpd/conf.d/ssl.conf по умолчанию, у вас должны быть журналы:

Журналы ErrorLog / ssl_error_log Журналы TransferLog / ssl_access_log Предупреждение об уровне LogLevel

Попробуйте избавиться от:

SSLCertificateChainFile /etc/pki/tls/certs/gd_bundle.crt

а также убедитесь, что в вашем сертификате нет недостающей строки из копии.

Если у вас возникли проблемы, попробуйте сначала протестировать самоподписанный сертификат: http://httpd.apache.org/docs/2.0/ssl/ssl_faq.html#selfcert

Это должно помочь с другими проблемами:

http://www.instantssl.com/ssl-certificate-support/server_faq/ssl-server-certificate-apache.html