Настройка https для Apache в Debian
HTTPS (HyperText Transfer Protocol Secure) это — расширение для протокола HTTP, поддерживающее шифрование. Все передаваемые данные по HTTPS шифруются с помощью протокола SSL или TLS.
Перед началом работы, у вас должны быть сертификаты. Если вы их еще не получили — необходимо выбрать поставщика и купить сертификат. Есть масса поставщиков платных сертификатов: Thawte, Comodoro, GlobalSign и другие. Сейчас есть возможность получить бесплатно сертификат от WoSign.
Настройка для веб-сервера Apache 2.2
Все действия надо выполнять под учетной записью root или с помощью sudo.
Скопируйте следующие файлы в директорию /etc/ssl/:
- site.ru.key — приватный ключ
- site.ru.crt — ключ удостоверяющего центра
- chain_root_bundle.crt — цепочка ключей
Основными являются приватный ключи и ключ центра, цепочки ключей может не быть, но чаще всего он идет в комплекте. Установите на приватный ключ права на чтение только для root
chmod 0600 /etc/ssl/site.ru.key
в конфигурационный файл для виртуального хоста в Apache (/etc/apache2/sites-enabled/site.ru.conf) добавить:
<VirtualHost 2.17.170.232:443> ServerName site.ru ServerAlias www.site.ru DocumentRoot /home/webmaster/domains/site.ru/public_html SSLEngine on SSLCertificateFile /etc/ssl/site.ru.crt SSLCertificateKeyFile /etc/ssl/site.ru.key SSLCertificateChainFile /etc/ssl/chain_root_bundle.crt SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA SSLHonorCipherOrder on SSLCompression off ErrorLog /var/log/apache/site.ru_error.log CustomLog /var/log/apache/site.ru_access.log combined </VirtualHost>
Комментарии к конфигурации
Указываем ip-адрес сервера и порт
<VirtualHost 2.17.170.232:443>
Указываем, что протокол шифрования включен
SSLEngine on
Путь до ключа от удостоверяющего центра
SSLCertificateFile /etc/ssl/site.ru.crt
Путь до приватного ключа
SSLCertificateKeyFile /etc/ssl/site.ru.key
SSLCertificateChainFile /etc/ssl/chain_root_bundle.crt
Определяем допустимые криптографические наборы (алгоритмы обмена ключами и аутентификации). Конкретный набор согласуется клиентом и сервером во время установления соединения
SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA
Указываем, что модуль mod_ssl для Apache должен использовать приоритеты наборов шифров, заданные сервером в директиве SSLCipherSuite (а не клиентом, то есть браузеру не удастся навязать свои предпочтения)
SSLHonorCipherOrder on
Далее необходимо выключить поддержку небезопасных протоколов SSLv2, SSLv3 в файле /etc/apache2/mods-enabled/ssl.
SSLProtocol all -SSLv2 -SSLv3
тестируем синтаксис конфигурационных файлов средствами Apache
apache2ctl configtest
если тест пройден, перезагружаем конфиги
/etc/init.d/apache2 reload
После всех манипуляций, сайт должен открываться по адресу https://site.ru и в начале адресной строки должен появится значок “висячий замок”. Выше описана конфигурация виртуального хоста для Apache 2.2. Если у вас отличается версия Apache или вы используете другой веб-сервер, то вам необходимо сгенерировать свою версию конфига. Для этого воспользуйтесь генератором от Mozilla: https://mozilla.github.io/server-side-tls/ssl-config-generator/
Тестирование работы HTTPS
По завершению необходимо выполнить тестирования работы HTTPS. Для этого воспользуйтесь сервисом: https://www.ssllabs.com/ssltest/analyze.html
Введите полный адрес, включая https и запустите проверку. В среднем проверка занимает от 3 до 6 минут. С такой конфигурацией для Apache 2.2 на одном из сайтов клиента удалось получить рейтинг A.
Помните, защита соедиения не менее важная задача, поэтому рекомендую раз в месяц выполнять проверку сайта в сервисе от SSLlabs для поддержания необходимого уровня защиты шифрования. Если рейтинг снижается, то по завершению проверки, выдаются рекомендации для улучшения.
P.S. И да прибудет с вами рейтинг A+
Настройка Apache для работы 1С через HTTPS (SSL)
Безопасность для многих всегда идет на первом месте, многие интернет-гиганты, типа Google даже добавляют в свои браузеры предупреждения, что соединение не безопасно, если на сайте не используется SSL-сертификат.
1С:Предприятие тоже может работать по протоколу HTTPS.
Мы предлагаем статью-инструкцию, как настроить HTTPS в Apache таким образом, чтобы 1С:Предприятие работало без проблем через SSL.
Установка Apache
Ну что же начнем…
Для начала установим Apache. Рассмотрим это для 1С:Предприятие x86-64 и для Windows.
1. Идем на сайт https://www.anindya.com/ и качаем файл apache_2.4.23-x64-openssl-1.0.2h.msi (цифры на момент скачивания могут быть другими).
2. Устанавливаем Apache.
Реквизиты в полях Network Domain, Server Name и Administartor Email произвольные.
Жмем Next > Next > Next. Выбираем Typical.
3. Проверим, что сайт доступен по localhost. Откройте браузер и введите localhost в адресную строку. Должна открыться страница с текстом «It Works!«
Настройка Apache по SSL
4. Отлично. Apache установлен, теперь давайте настроем его работу по SSL.
Находим в папке c:\Program Files\Apache Software Foundation\Apache2.4\conf файл httpd. conf
Это стандартный порт HTTPS. Заставляем Apache слушать и этот порт тоже. Если нам не нужен стандартный 80-ый порт и мы не планируем его использовать, то строку Listen 80 можно закомментировать добавив символ # (решетки) в начале строки. Так же имейте ввиду, что при изменении файлов в папке Program Files потребуется открытие файла в режиме администратора.
Раскомментируем в файле httpd.conf строчку
#LoadModule ssl_module modules/mod_ssl.so
Убрав символ #. Т.е. строка должна стать такой:
LoadModule ssl_module modules/mod_ssl.so
4. В конце файла httpd.conf изменяем
<IfModule ssl_module>
SSLRandomSeed startup builtin
</IfModule>
на:
<IfModule ssl_module>
SSLRandomSeed startup builtin
SSLRandomSeed connect builtin
SSLSessionCache none
</IfModule>
Записываем файл httpd. conf
5. Из каталога bin установленной папки с Apache cкопируем файлы ssleay32.dll и libeay32.dll в C:\Windows\System32. Так же скопируем файл openssl.cnf из папки c:\Program Files\Apache Software Foundation\Apache2.4\conf\ в папку c:\Program Files\Apache Software Foundation\Apache2.4\bin\.
6. Запустим редактор реестра regedit (Пуск > Выполнить ввести текст regedit и нажать Enter) откроется окно реестра в нем найдем ветку HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Apache2.4
В этой ветке найдем переменную ImagePath и два раза кликнем на ней.
Добавим ключ запуска -D ssl
7. Добавим SSL-сертификаты для домена. Тут есть варианты…
7.1. Если у Вас уже есть SSL-сертификаты для домена, то создайте папку ssl в папке C:\Program Files\Apache Software Foundation\Apache2.4\conf и переместите их туда (файлы *.key и *.cert). Идем на шаг 8.
7.2. Если у Вас нет SSL-сертификатов, то вы можете их сгенерировать самостоятельно.
7.2.1. Открываем командную строку в режиме администратора и переходим в папку bin Apache. Вводим команду:
cd «C:\Program Files\Apache Software Foundation\Apache2.4\bin»
7.2.2. Далее вводим:
openssl req -config openssl.cnf -new -out ssl.csr
Идем по шагам в командной строке и заполняем необходимые поля. То, что вы введете не принципиально. Самое главное на этом этапе надо запомнить пароль (когда спросит pass phrase)
7.2.3. Выполним:
openssl rsa -in privkey.pem -out ssl.key
Спросит пароль, который вы вводили ранее.
7.2.4. Затем:
openssl x509 -in ssl.csr -out ssl.cert -req -signkey ssl.key -days 3000
days — это срок действия сертификата в днях.
7.2.5. Ну и наконец:
openssl x509 -in ssl.cert -out ssl.der.crt -outform DER
7.2.6. Создадим папку ssl в C:\Program Files\Apache Software Foundation\Apache2.4\conf и переместим из папки bin файлы ssl. key и ssl.cert (а вообще можно все сразу туда скопировать, что было получено на шагах 7.2.1. — 7.2.5) из C:\Program Files\Apache Software Foundation\Apache2.4\bin в C:\Program Files\Apache Software Foundation\Apache2.4\conf\ssl.
8. Снова открываем файл httpd.conf из папки C:\Program Files\Apache Software Foundation\Apache2.4\conf и добавляем секцию VirtualHost в самый конец файла httpd.conf:
<VirtualHost demo.soft.ru:443>
SSLEngine On
SSLCertificateFile conf/ssl/ssl.cert
SSLCertificateKeyFile conf/ssl/ssl.key
</VirtualHost>
Вместо адреса demo.soft.ru замените на свой сайт или IP-адрес, а можно вообще поставить звездочку (*) и будет *:443 (это означает, что сработает для всех запросов). Ну и если у вас есть свои ключи, и вы их не генерировали сами, то переименуйте ssl.cert и ssl.key
9. Перезапустим Apache. Открываем Monitor в правом нижнем углу, щелкнем по иконке и нажимаем restart. Если все хорошо, то Apache запустится без ошибок и появится зеленый значок.
10. Пробуем открыть сайт через HTTPS. В нашем случае можно и так https://localhost и вот так https://demo.soft.ru:
Обратите внимание на то, что сертификат самоподписанный и службы типа антивируса Касперского понимают, что дело не очень… Это нормально, так как ваш сертификат не был изготовлен корневыми центрами сертификации. Но если вы захотите использовать https внутри организации, то почему бы и нет?
11. Теперь попробуем запустить 1С. В браузере открывается:
Теперь попробуем открыть базу через тонкий клиент и если мы использовали самодписанный сертификат то тут нас ждет разочарование:
Ошибка HTTP при обращении к серверу … Удаленный узел не прошел проверку.
12. Дело в том, что сервер 1С содержит собственный контроль достоверности HTTPS-соединений и корневых центров.
Необходимо открыть папку сервера 1С:Предприятия c:\Program Files\1cv8\8.3. 15.1747\bin\ и в ней найти файл cacert.pem
Он отвечает как раз за эти центры сертификации.
Открываем командную строку и в ней выполняем команду:
openssl x509 -inform der -in ssl.der.crt -out ssl.pem -text -fingerprint -md5
После выполнения команды на экране Вы увидите Fingerprint. Скопируйте его. Это будет строка вида:
MD5 Fingerprint=64:5C:11:03:46:F1:22:9A:5B:C3:DD:AA:CC:EE:FF:A3
Откройте файл cacert.pem в папка 1С, перейдите в конец файла и с этой строки начинайте добавление своего сертификата в файл cacert.pem. После строки контрольной суммы сертификата, нужно добавить в файл cacert.pem содержимое файла, в который Вы экспортировали сертификат.
После этого запуск тонкого клиента будет работать без ошибок.
Если же и после этого есть ошибки, то можно вообще заставить клиент 1С не проверять сертификат. Для этого необходимо отредактировать информационную базу:
Далее:
Ну и наконец заветное окно:
Пробуем запустить и. ..
Все замечательно работает по https.
Отлично. Вы все настроили!
Как включить HTTPS на веб-сервере Apache
Apache HTTP2 года назад
от John Otieno
Apache — один из самых популярных веб-серверов, обслуживающий более 30% веб-сайтов. Это бесплатный HTTP-сервер с открытым исходным кодом. Он поставляется с множеством инструментов и функций для безопасного и легкого запуска приложений.
В этом руководстве описывается, как настроить защищенные SSL веб-сайты на веб-сервере Apache.
ПРИМЕЧАНИЕ. Это руководство написано и протестировано для Debian 9., 10 и 11 и Ubuntu 20.04.
Требования.
Чтобы следовать этому руководству, вам потребуется следующее:
- Установка Ubuntu/Debian
- Разрешения sudo или root для установки пакетов, изменения файлов конфигурации и перезапуска служб.
Установка Apache
Если у вас не установлен Apache, нам необходимо его установить. Введите команды:
sudo apt update
sudo apt install apache2 openssl
После установки сервера Apache запустите службу и убедитесь, что все работает правильно.
Включение модулей Mod_SSL и Mod_Rewrite.
Следующим шагом является включение модулей mod_ssl и mod_rewrite. Для этого мы используем скрипт a2enmod, который позволяет включать и отключать модули в конфигурации apache.
Используйте команды, как показано ниже:
sudo a2enmod ssl
sudo a2enmod rewrite
Включить переопределение .htaccess
Следующим шагом является редактирование конфигурации Apache и добавление записи, позволяющей переопределить настройки Apache по умолчанию. Настройки переопределения выполняются в файле .htaccess, расположенном в корневом каталоге Apache.
sudo vim /etc/apache2/apache2.conf
Перейдите в конец файла и добавьте следующую запись:
AllowOverride ALL
9 0003
Сохраните и закройте файл.
Создание SSL-сертификата
Существует несколько способов получить бесплатный SSL-сертификат. Такие инструменты, как certbot и генераторы SSL, — отличные варианты.
Однако в этом руководстве мы создадим самозаверяющий сертификат с помощью утилиты OpenSSL.
Создайте каталог в каталоге конфигурации Apache как:
sudo mkdir /etc/apache2/certs
Перейдите в каталог, созданный выше.
cd /etc/apache2/certs
Запустите утилиту OpenSSL, чтобы сгенерировать самозаверяющий сертификат, как показано в приведенной ниже команде:
ПРИМЕЧАНИЕ. В этом процессе вы можете указать любую информацию, кроме общего имени. Обязательно укажите IP-адрес или имя хоста.
После успешного завершения процесса у вас должны быть файлы apache.crt и apache.key в каталоге certs.
Добавление сертификата в конфигурацию Apache
Добавьте сертификат, отредактировав файл конфигурации веб-сайта Apache по умолчанию.
sudo vim /etc/apache2/sites-enabled/000-default. conf
Добавьте блок виртуального хоста на порт 443, как показано:
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APA CHE_LOG_DIR}/access.log в сочетании
SSLEngine на
SSLCertificateFile /etc/apache2/certs/apache.crt
SSLCertificateKeyFile /etc/apache2/certs/apache.key
Перенаправление на HTTP С.
В большинстве случаев вам потребуется перенаправить пользователей с конечной точки без SSL на SSL. Вы делаете это, добавляя правило перезаписи для виртуальных хостов порта 80. 9/?(.*) https://%{SERVER_NAME}/$1 [R=301,L]
ПРИМЕЧАНИЕ. Убедитесь, что указанные выше блоки находятся под виртуальным хостом порта 80.
Перезапустите и получите доступ к Apache
После того, как все вышеперечисленное настроено, перезапустите службу Apache и получите доступ к своему веб-сайту через локальный хост.
https://127.0.0.1
Вы можете просмотреть информацию о сертификате, щелкнув значок замка в браузере.
Заключение
В этом руководстве мы рассмотрели, как включить и настроить SSL на веб-сервере Apache.
Об авторе
Джон Отиено
Меня зовут Джон, и я такой же гик, как и вы. Я увлечен всеми вещами компьютеров от аппаратного обеспечения, операционных систем до программирования. Моя мечта — поделиться своими знаниями с миром и помочь другим гикам. Следите за моим контентом, подписавшись на список рассылки LinuxHint
.Посмотреть все сообщения
SSL/TLS Strong Encryption: How-To — Apache HTTP Server Version 2.4
Apache HTTP Server Version 2.4
Доступные языки: en | fr
Этот документ поможет вам начать работу и получить работающий. Вам настоятельно рекомендуется прочитать остальную часть SSL документацию и глубже понять материал, прежде чем переходить к продвинутым методам.
- Пример базовой конфигурации Наборы шифров
- и усиление безопасности
- Сшиватель OCSP
- Аутентификация клиента и контроль доступа
- Регистрация
См.
также- Комментарии
Ваша конфигурация SSL должна содержать как минимум следующие директивы.
LoadModule модули ssl_module/mod_ssl.so Слушай 443 <Виртуальный хост *:443> Имя сервера www.example.com SSLEngine включен SSLCertificateFile "/path/to/www.example.com.cert" SSLCertificateKeyFile "/path/to/www.example.com.key"
- Как создать сервер SSL, который принимает только надежное шифрование?
- Как я могу создать сервер SSL, который принимает все типы шифров в целом, но требуется надежный шифр для доступа к определенному URL-адресу?
Как создать сервер SSL, который принимает надежное шифрование только?
Следующее включает только самые стойкие шифры:
SSLCipherSuite HIGH:!aNULL:!MD5
В следующей конфигурации вы указываете предпочтение для конкретных оптимизированных по скорости шифров (которые будут выбраны mod_ssl, при условии, что они поддерживаются клиентом):
SSLCipherSuite RC4-SHA:AES128-SHA:HIGH:!aNULL:!MD5 SSLHonorCipherOrder на
Как создать сервер SSL, который принимает все типы шифров в целом, но требует надежных шифров для доступа к конкретному URL?
Очевидно, общесерверный SSLCipherSuite
, который ограничивает
шифры к сильным вариантам, здесь не ответ. Однако, mod_ssl
можно перенастроить в Location
блоки, чтобы дать решение для каждого каталога, и может автоматически принудительно
повторное согласование параметров SSL для соответствия новой конфигурации.
Это можно сделать следующим образом:
# будь либералом вообще SSLCipherSuite ВСЕ:!aNULL:RC4+RSA:+HIGH:+MEDIUM:+LOW:+EXP:+eNULL <Расположение "/strong/область"> # но https://hostname/strong/area/ и ниже # требует надежных шифров SSLCipherSuite HIGH:!aNULL:!MD5
Протокол статуса онлайн-сертификата (OCSP) — это механизм для определение того, был ли отозван сертификат сервера, и OCSP Сшивание — это особая форма этого, при которой сервер, такой как httpd и mod_ssl, поддерживает текущие ответы OCSP для своих сертификатов и отправляет их клиентам, которые общаются с сервером. Большинство сертификатов содержать адрес ответчика OCSP, поддерживаемый выдающим Центр сертификации, и mod_ssl может связываться с этим ответчиком для получить подписанный ответ, который можно отправить клиентам, взаимодействующим с сервер.
Поскольку клиент может получить статус отзыва сертификата из сервер, не требуя дополнительного подключения от клиента к Центр сертификации, сшивание OCSP является предпочтительным способом для статус отзыва, который необходимо получить. Другие преимущества устранения связи между клиентами и центром сертификации заключаются в том, что история просмотров клиентов не предоставляется центру сертификации и получение статуса более надежно, поскольку не зависит от потенциально сильно загруженные серверы центра сертификации.
Поскольку ответ, полученный сервером, может быть повторно использован для всех клиентов используя один и тот же сертификат в течение времени, пока ответ действителен, накладные расходы на сервер минимальны.
После правильной настройки общей поддержки SSL включение OCSP Сшивание обычно требует очень незначительных изменений в файле httpd. конфигурация — добавление этих двух директив:
SSLUseStapling On SSLStaplingCache "shmcb:logs/ssl_stapling(32768)"
Эти директивы размещаются в глобальной области (т. е. не в виртуальной
определение хоста) везде, где есть другие глобальные директивы конфигурации SSL.
размещены, например, в conf/extra/httpd-ssl.conf
для обычного
сборки httpd с открытым исходным кодом, /etc/apache2/mods-enabled/ssl.conf
для Ubuntu или Debian-в комплекте httpd и т. д.
Путь в директиве SSLStaplingCache
(например, журналов/
) должно совпадать с тем, что указано на Директива SSLSessionCache
. Этот путь относительный
до Корень сервера
.
Эта конкретная директива SSLStaplingCache
требует mod_socache_shmcb
(от префикса shmcb
на
аргумент директивы). Этот модуль обычно включен уже для SSLSessionCache
или от имени какого-либо модуля, отличного от mod_ssl
. Если вы включили кеш сеанса SSL с помощью
механизм, отличный от mod_socache_shmcb
, используйте эту альтернативу
механизм для SSLStaplingCache
. Например:
SSLSessionCache "dbm:logs/ssl_scache" SSLStaplingCache "dbm:logs/ssl_stapling"
Вы можете использовать программу командной строки openssl для проверки того, что ответ OCSP отправлено вашим сервером:
$ openssl s_client -connect www.example.com:443 -status -servername www.example.com ... Ответ ОССП: ======================================= Данные ответа OCSP: Статус ответа OCSP: успешно (0x0) Тип ответа: базовый ответ OCSP ... Статус сертификата: Хороший ...
В следующих разделах описаны наиболее распространенные ситуации, требующие
дальнейшее изменение конфигурации. См. также mod_ssl
справочное руководство.
Если для сервера используется несколько SSL-сертификатов
Ответы OCSP хранятся в кэше сшивания SSL. В то время как ответы обычно имеют размер от нескольких сотен до нескольких тысяч байт, mod_ssl поддерживает ответы OCSP размером до 10 КБ. С более чем несколько сертификатов, размер кэша сшивания (32768 байт в примере выше) может надо увеличить. Сообщение об ошибке AH01929 будет зарегистрировано в случае ошибка сохранения ответа.
Если сертификат не указывает на ответчик OCSP или если необходимо использовать другой адрес
См. Директива SSLStaplingForceURL
.
Вы можете подтвердить, что сертификат сервера указывает на ответчик OCSP с помощью программы командной строки openssl следующим образом:
$ openssl x509 -in ./www.example.com.crt -text | grep 'OCSP.*http' OCSP — URI: http://ocsp.example.com
Если указан URI OCSP и веб-сервер может с ним связаться напрямую без использования прокси, никакой настройки не требуется. Обратите внимание, что правила брандмауэра, контролирующие исходящие соединения с веб-сервера, могут нужно отрегулировать.
Если URI OCSP не указан, обратитесь в центр сертификации, чтобы
определить, доступен ли он; если это так, настройте его с помощью SSLStaplingForceURL
в виртуальном
узел, использующий сертификат.
Если настроено несколько виртуальных хостов с поддержкой SSL и OCSP Сшивание должно быть отключено для некоторых
Добавьте SSLUseStapling Off
к виртуальным хостам, для которых OCSP
Сшивание должно быть отключено.
Если ответчик OCSP работает медленно или ненадежно
Доступно несколько директив для обработки тайм-аутов и ошибок. Ссылаться
к документации по SSLStaplingFakeTryLater
, SSLStaplingResponderTimeout
и SSLStaplingReturnResponderErrors
директивы.
Если mod_ssl регистрирует ошибку AH02217
AH02217: ssl_stapling_init_cert: Не удается получить сертификат издателя!
Для поддержки сшивания OCSP, когда определенный сертификат сервера используется, цепочка сертификатов для этого сертификата должна быть настроена. Если оно не был настроен как часть включения SSL, будет выдана ошибка AH02217 когда сшивание включено, и клиентам не будет предоставлен ответ OCSP с помощью сертификата.
См. SSLCertificateChainFile
и SSLCertificateFile
для инструкций
для настройки цепочки сертификатов.
- Как заставить клиентов проходить аутентификацию с использованием сертификатов?
- Как заставить клиентов аутентифицироваться с использованием сертификатов для определенный URL-адрес, но по-прежнему разрешать произвольным клиентам доступ к остальной части сервера?
- Как разрешить доступ к определенный URL-адрес, но разрешить всем клиентам доступ к остальной части сервера?
- Как я могу требовать HTTPS с надежными шифрами, и либо базовая аутентификация или клиентские сертификаты для доступа к части Интранет-сайт для клиентов, приходящих из Интернета?
Как заставить клиентов проходить аутентификацию с использованием сертификатов?
Когда вы знаете всех своих пользователей (например, как это часто бывает на корпоративном
Интранет), вы можете потребовать простой проверки подлинности сертификата. Все вы
нужно сделать, это создать клиентские сертификаты, подписанные вашим собственным CA
сертификат ( ca.crt
), а затем проверить клиентов по этому
сертификат.
# требуется клиентский сертификат, который должен быть напрямую # подписано нашим сертификатом ЦС в ca.crt SSLVerifyClient требует SSLVerifyDepth 1 SSLCACertificateFile "conf/ssl.crt/ca.crt"
Как заставить клиентов проходить аутентификацию с использованием сертификатов для определенный URL-адрес, но по-прежнему разрешать произвольным клиентам доступ к остальной части сервера?
Чтобы заставить клиентов аутентифицироваться с использованием сертификатов для определенного URL-адреса,
вы можете использовать функции реконфигурации для каждого каталога mod_ssl
:
SSLVerifyClient нет SSLCACertificateFile "conf/ssl.crt/ca.crt" <Местоположение "/secure/area"> SSLVerifyClient требует SSLVerifyDepth 1
Как разрешить доступ к определенный URL-адрес, но разрешить всем клиентам доступ к остальной части сервера?
Ключом к этому является проверка той части сертификата клиента,
соответствует тому, что вы ожидаете. Обычно это означает проверку всех или части
Отличительное имя (DN), чтобы узнать, содержит ли оно известную строку.
Есть два способа сделать это, используя либо mod_auth_basic
или SSLRequire
.
Метод mod_auth_basic
обычно требуется, когда
сертификаты совершенно произвольны, или когда их DN
нет общих полей (обычно организация и т.д.). В этом случае,
вы должны создать базу данных паролей, содержащую всех клиенты разрешены, как указано ниже:
SSLVerifyClient нет SSLCACertificateFile "conf/ssl.crt/ca.crt" SSLCACertificatePath "conf/ssl.crt" <Каталог "/usr/local/apache2/htdocs/secure/area"> SSLVerifyClient требует SSLVerifyDepth 5 SSLOptions+FakeBasicAuth SSLRequireSSL AuthName "Аутентификация Snake Oil" Основной тип авторизации Файл AuthBasicProvider AuthUserFile "/usr/local/apache2/conf/httpd.passwd" Требовать действительного пользователя Каталог>
Пароль, используемый в этом примере, представляет собой зашифрованную строку DES «password». Дополнительные сведения см. в документации SSLOptions
.
информация.
httpd.passwd
/C=DE/L=Munich/O=Snake Oil, Ltd./OU=Staff/CN=Foo:xxj31ZMTZzkVA /C=US/L=S.F./O=Snake Oil, Ltd./OU=CA/CN=Bar:xxj31ZMTZzkVA /C=US/L=L.A./O=Snake Oil, Ltd./OU=Dev/CN=Quux:xxj31ZMTZzkVA
Когда все ваши клиенты являются частью общей иерархии, которая закодирована
в DN, вы можете легко сопоставить их, используя SSLRequire
следующим образом:
SSLVerifyClient нет SSLCACertificateFile "conf/ssl.crt/ca.crt" SSLCACertificatePath "conf/ssl.crt" <Каталог "/usr/local/apache2/htdocs/secure/area"> SSLVerifyClient требует SSLVerifyDepth 5 SSLOptions+FakeBasicAuth SSLRequireSSL SSLRequire %{SSL_CLIENT_S_DN_O} eq "Snake Oil, Ltd." \ и %{SSL_CLIENT_S_DN_OU} в {"Персонал", "ЦС", "Разработчик"}
Как я могу потребовать HTTPS с надежными аутентификации или клиентские сертификаты для доступа к части Интранет-сайт для клиентов, приходящих из Интернета? Я все еще хочу разрешить простой HTTP-доступ для клиентов в интрасети.
В этих примерах предполагается, что клиенты в интрасети имеют IP-адреса в диапазоне
192.168.1.0/24 и что часть веб-сайта интрасети, которую вы хотите разрешить
доступ в Интернет по адресу /usr/local/apache2/htdocs/subarea
.
Эта конфигурация должна оставаться за пределами вашего виртуального хоста HTTPS, поэтому
что это применимо как к HTTPS, так и к HTTP.
SSLCACertificateFile "conf/ssl.crt/company-ca.crt" <Каталог "/usr/local/apache2/htdocs"> # За пределами подзоны предоставляется доступ только к Интранету Требовать IP 192.168.1.0/24 Каталог> <Каталог "/usr/local/apache2/htdocs/subarea"> # Внутри подзоны разрешен любой доступ в Интранет # а из интернета только HTTPS + Strong-Cipher + Password # или альтернативный HTTPS + Strong-Cipher + Client-Certificate # Если используется HTTPS, убедитесь, что используется надежный шифр. # Дополнительно разрешить клиентские сертификаты в качестве альтернативы базовой аутентификации. 192\.168\.1\.[0-9]+$" RewriteCond "%{HTTPS}" "!=on" Правило перезаписи "." "-" [Ф] # Разрешить доступ к сети и/или базовую аутентификацию Удовлетворить любой # Контроль доступа к сети Требовать ip 192.168.1.0/24 # Базовая HTTP-аутентификация Основной тип авторизации AuthName "Защищенная область интрасети" Файл AuthBasicProvider AuthUserFile "conf/protected.passwd" Требовать действительного пользователя Каталог>
mod_ssl
может регистрировать чрезвычайно подробную отладочную информацию
в журнал ошибок, когда его LogLevel
установить более высокие уровни трассировки. С другой стороны, на очень загруженном сервере
уровень информация
может быть уже слишком много. Помните, что вы можете
настроить LogLevel
для каждого модуля на
удовлетворить ваши потребности.
Примечание:
Это не раздел вопросов и ответов.