Ошибка конфигурации SSL Apache (Ошибка подключения SSL) - PullRequest
36 голосов
/ 20 июля 2010

Я пытаюсь настроить 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.

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

Ответы [ 14 ]

37 голосов
/ 19 декабря 2014

У меня была та же проблема, что и у @ User39604, и я должен был следовать РАЗЛИЧНЫМ советам.Поскольку он не помнит точный путь, по которому он шел, позвольте мне перечислить мой путь:

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

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

    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>
    
  3. получить ключ и сертификат по

    A. , уплатив Центру сертификации (Comodo, GoDaddy, Verisign) за пару

    B. создание собственного * - см. Ниже (ТОЛЬКО в целях тестирования)

  4. измените свою конфигурацию (в 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 MYWEBGUY@localhost
    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>
    

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

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

http://wiki.vpslink.com/Enable_SSL_on_Apache2

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

* создание собственного сертификата (самостоятельноподпись) приведет к сертификату, полномочия которого браузер пользователя не распознает.следовательно, браузер будет кричать о кровавом убийстве, и пользователю придется «понять риски» десятки раз, прежде чем браузер действительно откроет страницу.Таким образом, это работает только для целей тестирования.Сказав это, это как:

Перейти в папку Apache (в Ubuntu12 /etc/apache2/) создать папку, такую ​​как ssl (или все, что работает для вас, имя не является системным требованием) Перейтивыбранный каталог /etc/apache2/ssl запустить sudo openssl req -new -x509 -nodes -out MYSITE.COM.crt -keyout MYSITE.COM.key использовать MYSITE.COM.crt и MYSITE.COM.key в теге <VirtualHost>

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

21 голосов
/ 30 апреля 2012

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

<VirtualHost subdomain.domain.com:443>

   ServerAdmin admin@domain.com
   ServerName subdomain.domain.com

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

TO:

<VirtualHost _default_:443>

   ServerAdmin admin@domain.com
   ServerName subdomain.domain.com

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

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

6 голосов
/ 22 сентября 2012
#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
6 голосов
/ 31 мая 2012

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

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

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

2 голосов
/ 10 июня 2019

Шаг для правильного включения 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
2 голосов
/ 08 октября 2017

Я получил эту проблему, и решение было немного глупым.

Я использую 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 . Он может генерировать конфигурацию SSL для вас.

1 голос
/ 10 июня 2015

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

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

1 голос
/ 04 августа 2014

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

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

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

1 голос
/ 19 апреля 2013

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

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

<VirtualHost localhost>

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

<VirtualHost _default_:443>

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

<VirtualHost localhost:80>
1 голос
/ 03 декабря 2010

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

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

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

SSLVerifyClient optional
SSLVerifyDepth 1
SSLOptions +StdEnvVars +StrictRequire
SSLRequireSSL On

к этому

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...