Установка https с самоподписанным сертификатом на Apache

Просто ответ - ДА... :) Можно реализовать конфигурации с помощью консоли VM

3
задан 22 July 2009 в 17:52
6 ответов

Ну, так как пользователь, Jure1873 не описал ответ, я не могу дать ему заслуженный кредит. Вот его решение:

что, если Вы заменяете <VirtualHost mail.craimer.org:443> с <virtualhost *:443>?

И это было решением. Оказывается что (с этой записи) httpd не может поддерживать несколько виртуальных хостов к HTTPS, таким образом, любые соединения с 443 должны быть направлены к единственному хосту. Таким образом, я предполагаю httpd просто тихо отклонял конфигурацию что, пытаясь выполнить виртуальный хост к HTTPS.

О, и не снабжайте направляющими против апача для этой "недостающей возможности". Это не их отказ! Протокол HTTPS не поддерживает виртуальные хосты.

Скучный Explaination:

Вы видите, когда Вы соединяетесь с портом 443 и запускаете сессию HTTPS, все, что это происходит, согласование безопасности. HTTPS - все об установке безопасного туннеля между двумя точками и не имеет никакого отношения к HTTP. Только, после того как туннель создан, будет данные течь через. Те данные являются потоком HTTP.

Это означает что Host: директива (который является частью HTTP, не HTTPS) будет только отправлена после того, как безопасный туннель был создан. Это Host: заголовок, который говорит сервер HTTP, к какому виртуальному хосту получают доступ. Но в HTTPS, мы получаем эту информацию слишком поздно: это прибывает после того, как мы должны были выбрать ключи шифрования.

Нижняя строка: HTTPS не может выбрать ключи шифрования на основе имени хоста HTTP.

0
ответ дан 3 December 2019 в 06:24

Проблема, более вероятно, ляжет с Вашей vhost конфигурацией.

ssl_error_rx_record_too_long ошибка может быть произведена инициированием сессия HTTPS против ресурса HTTP. Такой как - https://host.name:80.

4
ответ дан 3 December 2019 в 06:24
  • 1
    Весь I' m выполнение вводит в " mail.craimer.org " в мой веб-браузер. You' d думают, что это работало бы, нет? –  Shalom Craimer 22 July 2009 в 17:55
  • 2
    тьфу. это мульчировало URL. это было https : // mail.craimer.org –  Shalom Craimer 22 July 2009 в 17:56
  • 3
    что, если Вы заменяете < почта craimer.org:443> VirtualHost; с < virtualhost *:443>? –  Jure1873 23 July 2009 в 00:48
  • 4
    @Jure1873, Ничего себе! Это работало! - запись произошла как ответ и I' ll делают это принятым, k? –  Shalom Craimer 23 July 2009 в 14:33
  • 5
    Вероятная причина состоит в том, что это было поймано <VirtualHost *> директива далее цепочка/конфигурация. –  Dan Carley 23 July 2009 в 14:37

Подход, который я использовал в прошлом, немного отличается к тому, который Вы детализировали. Инструкции ниже были первоначально подробно изложены в этом сообщении, которое я нашел при взгляде, как настроить ssl: Пошаговая Установка Подверсии По Apache/SSL, Проходящему проверку подлинности через Active Directory (SSPI)

Подводить итог:

  1. Под 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 ]
  2. Откройте командную строку, перейдите к apache\bin и выполните следующую команду:

    openssl req -config openssl.conf -new -out server.csr

  3. При запросе вводят пароль и затем во второй раз для проверки.

  4. Вам затем предложат ввести Общее Имя [Мое Имя сервера]. Введите имя машины

  5. Затем удалите пароль из закрытого ключа со следующей командой (обратите внимание, что это может дать предупреждение о неспособности найти openssl.conf - это может быть проигнорировано):

    openssl rsa -in server.key -out server.key

  6. Введите ранее используемый пароль при запросе

  7. Затем создайте сам подписанный сертификат со следующей командой

    'openssl x509 - в server.csr - server.cert-req-signkey server.key - дни 365

  8. Удалите server.csr файл из apache\bin папки.

  9. Скопируйте server.key и server.cert файлы от apache\bin папки до apache\conf папки.

  10. Откройте apache\conf\httpd.conf в текстовом редакторе.

  11. Измените директиву порта прослушивания (который, вероятно, или будет, Слушают 80 или Слушают 8080) для портирования 443:

    Listen 443

  12. Изменитесь директива ServerName для включения порта 443 (обратите внимание, что это может быть прокомментировано, так удалите # в начале строки, если это и сервер замены с именем сервера):

    ServerName server:443

  13. Не прокомментируйте или добавьте директиву загрузочного модуля для mod_ssl (это должно присутствовать и прокомментировало, так удалите # в начале строки):

    LoadModule ssl_module modules/mod_ssl.so

  14. Добавьте раздел 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>
  15. Перезапустите сервис Apache. Тестовая конфигурация путем попытки (и сбоя) для соединения через http, и попытки (и следования) для соединения через https.

1
ответ дан 3 December 2019 в 06:24

Удалите тег из конфигурации VirtualHost. EG. <IfModule mod_ssl.c > </IfModule> - удалите те строки

0
ответ дан 3 December 2019 в 06:24
  • 1
    Didn' t имеют тех, которые в моей конфигурации... –  Shalom Craimer 22 July 2009 в 17:50

Скраймер, принятый ответ неверен, иначе как вы думаете, почему директива 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 Я не знаю, почему это сработало. Я просто взял эту конфигурацию в качестве примера с реального живого сервера и повторно использовал ее в своей настройке, и она сработала.

-1
ответ дан 3 December 2019 в 06:24

Вот еще одна ситуация, в которой возникает эта ошибка:

Определите 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.
0
ответ дан 3 December 2019 в 06:24

Теги

Похожие вопросы