Подтвердить что ты не робот

Ошибка конфигурации SSL Apache (ошибка подключения SSL)

Я пытаюсь настроить Apache на моем сервере для работы с ssl, но каждый раз, когда я захожу на свой сайт, я получаю следующее сообщение в браузере:

Ошибка SSL-соединения. Невозможно установить безопасное соединение с сервером. Это может быть проблема с сервером или может потребоваться сертификат аутентификации клиента, которого у вас нет. Ошибка 107 (net :: ERR_SSL_PROTOCOL_ERROR): ошибка протокола SSL.

Сообщение об ошибке выше, похоже, является родным для Google Chrome. Тем не менее, даже если сообщения разные, ssl для сайта не работает ни в одном браузере.

Немного предыстории ситуации: я использую Ubuntu 10.04 desktop edition.

Я установил apache, установив zend server (он установил Apache автоматически). Затем я установил openssl. Страницы, не являющиеся https, отлично работают на сайте.
Я пытался получить пробные сертификаты с нескольких сайтов сертификатов, но ничего не работает (та же ошибка).
Ранее я размещал свой сайт на другом сервере, на котором ssl работал просто отлично. Я также пытался использовать файл ключа и сертификата с этого сервера, но я получил ту же ошибку.

Хотя доменное имя и IP-адрес остаются прежними. Мои SSLCertificateFile и SSLCertificateKeyFile указывают на правильный каталог и файлы.

У меня также не включен SSLVerifyClient.

Если у кого-то есть какие-либо предложения, это будет очень ценно.

4b9b3361

Ответ 1

У меня была такая же проблема, как и у пользователя @User39604, и мне пришлось следовать советам VARIOUS. Поскольку он не помнит точного пути, которым он следовал, позвольте мне перечислить мой путь:

  • проверьте, есть ли у вас SSL YES, используя <?php echo phpinfo();?>

  • при необходимости

    A. включить ssl на apache sudo a2enmod ssl

    B. установить openssl sudo apt-get install openssl

    C. проверьте, открыт ли порт 443 sudo netstat -lp

    D. при необходимости измените /etc/apache2/ports.conf, это работает

    NameVirtualHost *:80
    Listen 80
    
    <IfModule mod_ssl.c>
        # If you add NameVirtualHost *:443 here, you will also have to change
        # the VirtualHost statement in /etc/apache2/sites-available/default-ssl
        # to <VirtualHost *:443>
        # Server Name Indication for SSL named virtual hosts is currently not
        # supported by MSIE on Windows XP.
        NameVirtualHost *:443
        Listen 443
    </IfModule>
    
    <IfModule mod_gnutls.c>
        Listen 443
    </IfModule>
    
  • получить ключ и сертификат

    A., оплачивая сертификационный орган (Comodo, GoDaddy, Verisign) для пары

    B., генерирующий ваш собственный * - см. ниже (ТОЛЬКО для тестирования)

  • измените конфигурацию (в ubuntu12 /etc/apache2/httpd.conf - по умолчанию - пустой файл), чтобы включить правильный <VirtualHost> (замените MYSITE.COM, а также ключ и путь/имя сертификата, чтобы указать на ваш сертификат и ключ):

    <VirtualHost _default_:443> 
    ServerName MYSITE.COM:443
    SSLEngine on
    SSLCertificateKeyFile /etc/apache2/ssl/MYSITE.COM.key
    SSLCertificateFile /etc/apache2/ssl/MYSITE.COM.cert
    ServerAdmin [email protected]
    DocumentRoot /var/www
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    <Directory /var/www/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
    </Directory>
    
    
    ErrorLog ${APACHE_LOG_DIR}/errorSSL.log
    
    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn
    
    CustomLog ${APACHE_LOG_DIR}/accessSSL.log combined
    
    </VirtualHost>
    

в то время как многие другие конфигурации virtualhost будут доступны в /etc/apache2/sites-enabled/, а в /etc/apache2/sites-available/ это было /etc/apache2/httpd.conf, было CRUCIAL для решения всех проблем.

для получения дополнительной информации:

http://wiki.vpslink.com/Enable_SSL_on_Apache2

http://httpd.apache.org/docs/2.0/ssl/ssl_faq.html#selfcert

* создание собственного сертификата (самозаверяющего) приведет к сертификату, полномочия которого браузер пользователя не распознает. поэтому браузер будет кричать кровавое убийство, и пользователю придется "понять риски" десятка раз, прежде чем браузер действительно откроет страницу. поэтому он работает только в целях тестирования. сказав, что это КАК-ТО:

  1. перейти в папку apache (в ubuntu12 /etc/apache2/)
  2. создайте папку типа ssl (или что-нибудь, что работает для вас, это не системное требование)
  3. выбранный каталог goto /etc/apache2/ssl
  4. run sudo openssl req -new -x509 -nodes -out MYSITE.COM.crt -keyout MYSITE.COM.key
  5. используйте MYSITE.COM.crt и MYSITE.COM.key в тэге <VirtualHost>

формат имени НЕ находится под строгим системным требованием, должен быть таким же, как и файл:)    - имена, такие как 212-MYSITE.COM.crt, june2014-Godaddy-MYSITE.COM.crt должны работать.

Ответ 2

Я получал ту же ошибку в chrome (и другой в Firefox, IE). Также в error.log я получал [error] [client cli.ent.ip.add] Invalid method in request \x16\x03 Следуя инструкциям этот сайт, я изменил свою конфигурацию FROM:

<VirtualHost subdomain.domain.com:443>

   ServerAdmin [email protected]
   ServerName subdomain.domain.com

   SSLEngine On
   SSLCertificateFile conf/ssl/ssl.crt
   SSLCertificateKeyFile conf/ssl/ssl.key
</VirtualHost>

TO:

<VirtualHost _default_:443>

   ServerAdmin [email protected]
   ServerName subdomain.domain.com

   SSLEngine On
   SSLCertificateFile conf/ssl/ssl.crt
   SSLCertificateKeyFile conf/ssl/ssl.key
</VirtualHost>

Теперь он отлично работает:)

Ответ 3

Общей причиной, которую я хотел предложить для этой ситуации:

Иногда клиент запускает Skype, который использует порт 443, не осознавая этого. Когда они идут, чтобы запустить Tomcat или Apache, он, похоже, запускается, но не может связываться с портом 443. Это точное сообщение, которое пользователь получит в браузере. Исправление состоит в том, чтобы остановить работу на порту 443 и перезапустить веб-сервер, чтобы он мог связываться с портом 443.

Клиент может перезапустить Skype после запуска веб-сервера, а Skype обнаружит, что порт 443 используется, и выберите другой порт для использования.

Ответ 4

#Make sure that you specify the port for both http and https ie.
NameVirtualHost:80
NameVirtualHost:443
#and 
<VirtualHost *:80>
<VirtualHost *:443>

#mixing * and *:443 does not work it has to be *:80 and *:443

Ответ 5

У меня возникла эта проблема, и решение было немного глупо.

Я использую Cloudflare, который действует как прокси-сервер для моего веб-сайта. Чтобы войти в систему через SSH, я добавил запись в мой файл /etc/hosts, поэтому мне не нужно было запоминать IP-адрес моего сервера.

xxx.xx.xx.xxx  example.com

Итак, в моем браузере, когда я перешел в https://www.example.com, я использовал прокси-сервер Cloudflare, и когда я перешел к https://example.com Я шел прямо на сервер. Поскольку для установки Cloudflare не требуется добавлять промежуточные сертификаты, я видел это исключение безопасности в своем браузере, когда я пошел в https://example.com, но https://www.example.com работал.

Решение: удалите запись из моего ноутбука /etc/hosts.

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

Я также рекомендую использовать ping для проверки отображаемого IP-адреса и проверки его на ожидаемый IP-адрес.

ping https://www.example.com/

Другим очень полезным ресурсом SSL является Mozilla SSL Configuration Generator. Он может генерировать для вас конфигурацию SSL.

Ответ 6

Я не знал, что делаю, когда начал менять конфигурацию Apache. Я взял кусочки и подумал, что это работает, пока я не столкнулся с той же проблемой, с которой вы столкнулись, особенно с Chrome, имеющим эту ошибку.

То, что я сделал, было комментировать все директивы для сайта, которые используются для настройки проверки SSL, подтвердил, что Chrome включил меня, просмотрел документацию перед директивой перед повторным включением и перезапустил Apache. Тщательно проходя через них, вы должны быть в состоянии выяснить, какой из них вызывает вашу проблему.

В моем случае я пошел от этого:

SSLVerifyClient optional
SSLVerifyDepth 1
SSLOptions +StdEnvVars +StrictRequire
SSLRequireSSL On

к этому

<Location /sessions>
  SSLRequireSSL
  SSLVerifyClient require
</Location>

Как вы можете видеть, у меня было довольно много изменений, чтобы добраться туда.

Ответ 7

Я столкнулся с этой проблемой, потому что у меня есть <VirtualHost>, определенный как в httpd.conf, так и в httpd-ssl.conf.

в httpd.conf, он определяется как

<VirtualHost localhost>

в httpd-ssl.conf, он определяется как

<VirtualHost _default_:443>

Следующее изменение решило эту проблему, добавьте: 80 в httpd.conf

<VirtualHost localhost:80>

Ответ 8

Это то, что исправило это для меня на Ubuntu.

  • Включен модуль: a2enmod ssl
  • Переместил все файлы, связанные с сертификатом, в папку /usr/local/ssl и сделал его доступным для всего мира: chmod -R +r /usr/local/ssl
  • Изменен <VirtualHost *:80> на <VirtualHost *:*> на моем виртуальном хосте.
  • Добавлен SSLEngine On перед всеми другими директивами SSL на моем виртуальном хосте.

Если вы установите парольную строку в сертификате, Apache должен запросить его при перезагрузке.

Ответ 9

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

У меня была ошибка при обновлении с Debian Wheezy до Debian Jessie. Для новой версии Apache требуется файл конфигурации сайта, заканчивающийся на .conf. Поскольку мой файл конфигурации не выполнялся, он игнорировался, а других не было настроено для обслуживания SSL-соединений.

Ответ 10

Я столкнулся с этой проблемой, также из-за неправильной конфигурации. Я использовал tomcat, и в server.xml был указан мой соединитель как таковой:

<Connector port="17443" SSLEnabled="true"
           protocol="org.apache.coyote.http11.Http11NioProtocol"
           maxThreads="150" scheme="https" secure="true"
           clientAuth="false" sslProtocol="TLS"
           keyAlias="wrong" keystorePass="secret"
           keystoreFile="/ssl/right.jks" />

Когда я зафиксировал его таким образом:

<Connector port="17443" SSLEnabled="true"
           protocol="org.apache.coyote.http11.Http11NioProtocol"
           maxThreads="150" scheme="https" secure="true"
           clientAuth="false" sslProtocol="TLS"
           keyAlias="right" keystorePass="secret"
           keystoreFile="/ssl/right.jks" />

Он работал, как ожидалось. Другими словами, убедитесь, что у вас есть не только правильное хранилище ключей, но и то, что вы указали правильный псевдоним под ним. Спасибо за бесценный намек user396404.

Ответ 11

У меня была эта ошибка, когда я впервые выполнил инструкции по настройке конфигурации apache2 ssl по умолчанию, разместив символическую ссылку для /etc/apache2/sites-available/default-ssl в /etc/apache2/sites-enabled. Затем я попытался добавить еще один NameVirtualHost на порт 443 в другой файл конфигурации и начал получать эту ошибку.

Я исправил его, удалив символическую ссылку /etc/apache2/sites-enabled/default-ssl, а затем просто получив эти строки в другом файле конфигурации (httpd.conf, который, вероятно, не является хорошей формой, но работал):

NameVirtualHost *:443

<VirtualHost *:443>
  SSLEngine on
  SSLCertificateChainFile    /etc/apache2/ssl/chain_file.crt
  SSLCertificateFile    /etc/apache2/ssl/site_certificate.crt
  SSLCertificateKeyFile /etc/apache2/ssl/site_key.key
  ServerName www.mywebsite.com
  ServerAlias www.mywebsite.com
  DocumentRoot /var/www/mywebsite_root/


</VirtualHost>

Ответ 13

Шаг, чтобы правильно включить SSL.

sudo a2enmod ssl  
sudo apt-get install openssl

Сконфигурируйте путь сертификатов SSL в файле конфигурации SSL (default-ssl.conf), который может находиться в /etc/apache2/sites-available. Я сохранил сертификаты в /etc/apache2/ssl/

SSLEngine On
SSLCertificateFile /etc/apache2/ssl/certificate.crt
SSLCertificateChainFile /etc/apache2/ssl/ca_bundle.crt
SSLCertificateKeyFile /etc/apache2/ssl/private.key

Включить файл конфигурации SSL

sudo a2ensite default-ssl.conf

Ответ 14

Оказывается, SSL-сертификат был установлен неправильно. При повторной установке он исправил проблему