SSL на Ubuntu 14.04 Virtualmin Virtual Server показывает неизвестный протокол

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

После установки я получил кучу распространенных ошибок в имени. Похоже, это связано с тем, что домен в SSL содержит www. который вы не можете назначить виртуальным серверам, поэтому он не совпадает. Однако, добавив www.domain.com в запись /etc/apache2/sites-enabled/example.conf, ошибка исчезла.

Но если я захожу на сайт https://www.example.com/, я получаюERR_SSL_PROTOCOL_ERROR

Я также попытался запустить следующее:

openssl s_client -connect www.example.com:443

который выводит это:

CONNECTED(00000003)
3073689800:error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol:s23_clnt.c:759:
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 7 bytes and written 297 bytes
---
New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
---

Я проверил, показывает ли openssl, что порт 443 прослушивается. Я также настроил файл ports.conf, добавив немного больше подробностей:

#Listen 80
#Listen 443
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>

В /etc/apache2/sites-enabled/example.conf я убедился, что для 443 виртуального сервера существует ряд настроек, а не только 80, и он включает в себя следующее:

<VirtualHost 123.123.123.123:443>
SuexecUserGroup "#1000" "#1000"
ServerName www.example.com
ServerAlias example.com
DocumentRoot /home/example/public_html
ErrorLog /var/log/virtualmin/example.com_error_log
CustomLog /var/log/virtualmin/example.com_access_log combined
ScriptAlias /cgi-bin/ /home/example/cgi-bin/
DirectoryIndex index.html index.htm index.php index.php4 index.php5
<Directory /home/example/public_html>
Options -Indexes +IncludesNOEXEC +SymLinksIfOwnerMatch +ExecCGI
allow from all
AllowOverride All Options=ExecCGI,Includes,IncludesNOEXEC,Indexes,MultiViews,SymLinksIfOwnerMatch
AddType application/x-httpd-php .php
AddHandler fcgid-script .php
AddHandler fcgid-script .php5
FCGIWrapper /home/example/fcgi-bin/php5.fcgi .php
FCGIWrapper /home/example/fcgi-bin/php5.fcgi .php5
</Directory>
<Directory /home/example/cgi-bin>
allow from all
AllowOverride All Options=ExecCGI,Includes,IncludesNOEXEC,Indexes,MultiViews,SymLinksIfOwnerMatch
</Directory>
RemoveHandler .php
RemoveHandler .php5
php_admin_value engine Off
IPCCommTimeout 301
FcgidMaxRequestLen 1073741824
SSLEngine on
SSLCertificateFile /home/example/ssl.cert
SSLCertificateKeyFile /home/example/ssl.key
SSLCACertificateFile /home/example/ssl.ca
</VirtualHost>

Одна мысль, которая у меня все еще есть, состоит в том, что, просто выполнив CSR снова, но без www в общем имени, возможно, это решит все это. Но прежде чем я вернусь к клиенту (что я уже делал несколько раз), я хотел бы посмотреть, действительно ли это решит проблему.

ОБНОВИТЬ

Итак, в разгар хаоса прошлой ночью я потратил время на обновление сервера с 12.04 до 14.04. Это немного облегчает диагностику, поскольку мой другой сервер, на котором установлено около 20 сайтов, работает нормально и работает 14.04.

Я также убедился, чтобы включить default-ssl.conf и 000-default.conf просто чтобы убедиться. Просматривая некоторые журналы SSL, используя sudo tail -40 /var/log/apache2/error.log Все, что я вижу, это сообщение об этом:

[ssl:warn] [pid 6905] AH02292: Init: Name-based SSL virtual hosts only work for clients with TLS server name indication support (RFC 4366)

Также я попробовал это:

nmap --script +ssl-enum-ciphers example.com

И это показало, что порт 443 был открыт, но для этого порта не было показано ни одного шифра ssl-enum.

ОБНОВЛЕНИЕ 2

Попробовал новый сертификат. Все еще не работает. Но я только что загрузил сайт через Firefox и увидел это: ERR_SSL_PROTOCOL_ERROR

Похоже, это может произойти, если Listen 443 включен, но Virtualhost не настроен для 443, но файл.conf определенно есть..

1 ответ

Решение

БОЖЕ МОЙ.

Итак, я нашел проблему. Другой веб-сайт виртуального хоста также включал раздел в файл virtual host для 443. Тем не менее этот веб-сайт не был должным образом настроен на использование SSL, поскольку это не предполагалось.

Я нашел это по прихоти и решил удалить эту 443 запись в файле и перезапустил Apache. Теперь сайт загружается нормально!

Другие вопросы по тегам