Просто ответ - ДА... :) Можно реализовать конфигурации с помощью консоли VM
Ну, так как пользователь, Jure1873 не описал ответ, я не могу дать ему заслуженный кредит. Вот его решение:
что, если Вы заменяете
<VirtualHost mail.craimer.org:443>
с<virtualhost *:443>
?
И это было решением. Оказывается что (с этой записи) httpd
не может поддерживать несколько виртуальных хостов к HTTPS, таким образом, любые соединения с 443 должны быть направлены к единственному хосту. Таким образом, я предполагаю httpd
просто тихо отклонял конфигурацию что, пытаясь выполнить виртуальный хост к HTTPS.
О, и не снабжайте направляющими против апача для этой "недостающей возможности". Это не их отказ! Протокол HTTPS не поддерживает виртуальные хосты.
Вы видите, когда Вы соединяетесь с портом 443 и запускаете сессию HTTPS, все, что это происходит, согласование безопасности. HTTPS - все об установке безопасного туннеля между двумя точками и не имеет никакого отношения к HTTP. Только, после того как туннель создан, будет данные течь через. Те данные являются потоком HTTP.
Это означает что Host:
директива (который является частью HTTP, не HTTPS) будет только отправлена после того, как безопасный туннель был создан. Это Host:
заголовок, который говорит сервер HTTP, к какому виртуальному хосту получают доступ. Но в HTTPS, мы получаем эту информацию слишком поздно: это прибывает после того, как мы должны были выбрать ключи шифрования.
Нижняя строка: HTTPS не может выбрать ключи шифрования на основе имени хоста HTTP.
Проблема, более вероятно, ляжет с Вашей vhost конфигурацией.
ssl_error_rx_record_too_long
ошибка может быть произведена инициированием сессия HTTPS против ресурса HTTP. Такой как - https://host.name:80
.
https : // mail.craimer.org
– Shalom Craimer
22 July 2009 в 17:56
<VirtualHost *>
директива далее цепочка/конфигурация.
– Dan Carley
23 July 2009 в 14:37
Подход, который я использовал в прошлом, немного отличается к тому, который Вы детализировали. Инструкции ниже были первоначально подробно изложены в этом сообщении, которое я нашел при взгляде, как настроить ssl: Пошаговая Установка Подверсии По Apache/SSL, Проходящему проверку подлинности через Active Directory (SSPI)
Подводить итог:
Под apache\bin создают openssl.conf и устанавливают его содержание следующим образом:
[ v3_ca ] subjectKeyIdentifier = hash authorityKeyIdentifier = keyid:always,issuer:always basicConstraints = CA:true [ req ] default_bits = 1024 default_keyfile = server.key distinguished_name = req_distinguished_name attributes = req_attributes x509_extensions = v3_ca string_mask = nombstr [ req_distinguished_name ] commonName = Common Name commonName_default = My Server Name [ req_attributes ]
Откройте командную строку, перейдите к apache\bin и выполните следующую команду:
openssl req -config openssl.conf -new -out server.csr
При запросе вводят пароль и затем во второй раз для проверки.
Вам затем предложат ввести Общее Имя [Мое Имя сервера]. Введите имя машины
Затем удалите пароль из закрытого ключа со следующей командой (обратите внимание, что это может дать предупреждение о неспособности найти openssl.conf - это может быть проигнорировано):
openssl rsa -in server.key -out server.key
Введите ранее используемый пароль при запросе
Затем создайте сам подписанный сертификат со следующей командой
'openssl x509 - в server.csr - server.cert-req-signkey server.key - дни 365
Удалите server.csr файл из apache\bin папки.
Скопируйте server.key и server.cert файлы от apache\bin папки до apache\conf папки.
Откройте apache\conf\httpd.conf в текстовом редакторе.
Измените директиву порта прослушивания (который, вероятно, или будет, Слушают 80 или Слушают 8080) для портирования 443:
Listen 443
Изменитесь директива ServerName для включения порта 443 (обратите внимание, что это может быть прокомментировано, так удалите # в начале строки, если это и сервер замены с именем сервера):
ServerName server:443
Не прокомментируйте или добавьте директиву загрузочного модуля для mod_ssl (это должно присутствовать и прокомментировало, так удалите # в начале строки):
LoadModule ssl_module modules/mod_ssl.so
Добавьте раздел IfModule для mod_ssl (это не должно уже быть там, но если это - перезапись это):
<IfModule mod_ssl.c> SSLEngine on SSLRandomSeed startup builtin SSLRandomSeed connect builtin SSLPassPhraseDialog builtin SSLSessionCache dbm:logs/ssl_scache SSLSessionCacheTimeout 300 SSLMutex default SSLCertificateFile conf\server.cert SSLCertificateKeyFile conf\server.key </IfModule>
Перезапустите сервис Apache. Тестовая конфигурация путем попытки (и сбоя) для соединения через http, и попытки (и следования) для соединения через https.
Удалите тег из конфигурации VirtualHost. EG. <IfModule mod_ssl.c > </IfModule>
- удалите те строки
Скраймер, принятый ответ неверен, иначе как вы думаете, почему директива SSLCertificateFile может находиться в области виртуального хоста? Доказательство: http://httpd.apache.org/docs/current/mod/mod_ssl.html#sslcertificatefile
С виртуальными хостами вы по-прежнему можете использовать разные файлы сертификатов с виртуальными хостами на основе имени.
I была та же проблема, и решением было поставить реальный IP вместо * в директиве VirtualHost, например:
NameVirtualHost *:80
NameVirtualHost *:443
<VirtualHost 127.0.0.1:443>
ServerName affx.meg
...
</VirtualHost>
PS Hovewer Я не знаю, почему это сработало. Я просто взял эту конфигурацию в качестве примера с реального живого сервера и повторно использовал ее в своей настройке, и она сработала.
Вот еще одна ситуация, в которой возникает эта ошибка:
Определите VirtualHost *: 80
в sites-enabled / 000-default.conf
.
Затем определите VirtualHost *: 443
в httpd.conf
. Если вы полностью переместите конфигурацию либо в httpd.conf
, либо в 000-default.conf
работает. Иначе вы получите эту ошибку в FireFox:
SSL received a record that exceeded the maximum permissible length. (Error code: ssl_error_rx_record_too_long)
и эту ошибку в Chrome:
This site can’t provide a secure connection
... sent an invalid response.