SSL: настройка Apache как SSL-прокси для OpenERP на Ubuntu 10.04 LTS
Введение
В этой инструкции показан рабочий способ предоставления SSL‑шифрованного доступа к свежей установке OpenERP на Ubuntu 10.04 LTS. Apache используется как обратный прокси и точка завершения SSL для веб‑клиента и WebDAV/CalDAV; GTK‑клиент подключается по зашифрованному XMLRPC непосредственно к серверу OpenERP.
Определения в одну строку:
- SSL/TLS: протоколы для шифрования сетевого трафика.
- Обратный прокси: сервер, принимающий внешние запросы и пересылающий их внутрь локальной сети.
Почему Apache: он широко распространён, стабилен и имеет встроенные модули для SSL, проксирования и заголовков.
Важно: в этом руководстве используется самоподписанный сертификат. Для продакшна рекомендуется использовать сертификат от доверенного центра сертификации.
Что делает эта схема
- Apache принимает HTTPS‑запросы на порту 443.
- Apache завершает SSL и проксирует трафик к внутренним сервисам OpenERP: веб‑интерфейсу и XMLRPC/WebDAV.
- Внутренние сервисы OpenERP слушают только на localhost, так что внешние незашифрованные подключения блокируются.
Шаг 11.1. Установка Apache и модулей
Установите apache2:
sudo apt-get install apache2
Включите необходимые модули: mod_ssl не всегда активирован по умолчанию; нам также нужны proxy_http, headers и (опционально) rewrite:
sudo a2enmod ssl proxy_http headers rewrite
Шаг 11.2. Создание сертификата и ключа
Создадим файлы в временной директории, затем переместим их в /etc/ssl/openerp.
cd
mkdir temp
cd temp
Сгенерируйте новый приватный ключ (будет запрошен passphrase):
openssl genrsa -des3 -out server.pkey 1024
Удалим passphrase, чтобы при старте сервера не требовалось вводить пароль:
openssl rsa -in server.pkey -out server.key
Создаём запрос на подпись (CSR):
openssl req -new -key server.key -out server.csr
При заполнении укажите корректные поля. Поле Common Name обычно совпадает с публичным доменом или IP.
Наконец, самоподпись сертификата на 365 дней:
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
Установим корректные права и владельца:
sudo chown openerp:root server.crt server.key
sudo chmod 640 server.crt server.key
Перемещаем в безопасную директорию:
sudo mkdir /etc/ssl/openerp
sudo chown openerp:root /etc/ssl/openerp
sudo chmod 710 /etc/ssl/openerp
sudo mv server.crt server.key /etc/ssl/openerp/
Теперь у Apache есть файлы сертификата и ключа в /etc/ssl/openerp.
Шаг 11.3. Конфигурация виртуального хоста Apache
Создайте файл конфигурации виртуального хоста:
sudo nano /etc/apache2/sites-available/openerp-ssl
Вставьте (или проверьте) следующий блок виртуального хоста:
SSLEngine on
SSLCertificateFile /etc/ssl/openerp/server.crt
SSLCertificateKeyFile /etc/ssl/openerp/server.key
ProxyRequests Off
Order deny,allow
Allow from all
ProxyVia On
ProxyPass /webdav/ http://127.0.0.1:8069/webdav/
ProxyPassReverse /webdav/
Order Deny,Allow
Allow from all
Satisfy Any
ProxyPass / http://127.0.0.1:8080/
ProxyPassReverse /
RequestHeader set "X-Forwarded-Proto" "https"
# Fix IE problem (httpapache proxy dav error 408/409)
SetEnv proxy-nokeepalive 1
Обратите внимание:
- Есть два блока Proxy: один для /webdav/, другой для /. Если вам не нужен WebDAV/CalDAV — удалите соответствующую секцию.
- Порядок важен: /webdav/ должен предшествовать /, иначе правило / перекроет более специфичное.
Включите сайт:
sudo a2ensite openerp-ssl
Перенаправление HTTP на HTTPS (опционально)
Чтобы автоматически редиректить HTTP (порт 80) на HTTPS, добавьте в /etc/apache2/sites-available/default (вне блоков
RewriteEngine on
RewriteCond %{SERVER_PORT} ^80$
RewriteRule ^(.*)$ https://%{SERVER_NAME}$1 [L,R]
Шаг 11.4. Правки конфигураций OpenERP
Сделаем так, чтобы незашифрованные сервисы слушали только localhost и чтобы сервер знал путь к ключу и сертификату.
Отредактируйте /etc/openerp-server.conf:
sudo nano /etc/openerp-server.conf
Убедитесь, что присутствуют и настроены следующие параметры:
xmlrpc = True
xmlrpc_interface = 127.0.0.1
xmlrpc_port = 8069
netrpc = True
netrpc_interface = 127.0.0.1
netrpc_port = 8070
xmlrpcs = True
xmlrpcs_interface =
xmlrpcs_port = 8071
secure_pkey_file = /etc/ssl/openerp/server.key
secure_cert_file = /etc/ssl/openerp/server.crt
Если вы хотите включить WebDAV/CalDAV, добавьте в конец конфигурации:
[webdav]
enable = True
vdir = webdav
Далее отредактируйте конфигурацию веб‑клиента /etc/openerp-web.conf:
sudo nano /etc/openerp-web.conf
Пример настроек:
# Some server parameters that you may want to tweak
server.socket_host = "127.0.0.1"
# Set to True if you are deploying your App behind a proxy
# e.g. Apache using mod_proxy
tools.proxy.on = True
# If your proxy does not add the X-Forwarded-Host header, set
# the following to the public host url.
tools.proxy.base = 'https://your-ip-or-domain'
# Set to false to disable CSRF checks
tools.csrf.on = False
Замените tools.proxy.base на публичный домен или IP сервера.
Шаг 11.5. Перезапуск и проверка
Перезапустите сервисы, чтобы применить изменения:
sudo service openerp-server restart
sudo service openerp-web restart
sudo service apache2 restart
Проверки:
- Внешний доступ к веб‑интерфейсу по HTTPS: https://your-ip-or-domain
- GTK‑клиент: укажите порт 8071 и протокол XMLRPC (Secure)
- WebDAV ссылка имеет формат:
https://your-ip-or-domain/webdav/DB_NAME/calendars/users/USERNAME/c/CALENDAR_NAME
Рекомендации по безопасности
Important: Самоподписанный сертификат удобен для тестов, но не обеспечивает доверия для браузеров и мобильных клиентов. Для продакшна используйте сертификат от CA.
Практические советы:
- Отключите старые протоколы SSLv2/SSLv3 и разрешите только TLS 1.2+/1.3, если ваша версия Apache их поддерживает.
- Включите HTTP Strict Transport Security (HSTS) заголовок для защиты от восстановления HTTP.
- Ограничьте права на приватный ключ (chmod 640, владелец — пользователь процесса OpenERP).
- Минимизируйте набор поддерживаемых шифров и используйте безопасные наборы шифров (cipher suites). Точные строки зависят от версии OpenSSL на вашем сервере.
- Регулярно обновляйте систему и пакеты Apache/OpenSSL.
Короткая методология проверки безопасности:
- Проверить, что 8080, 8069, 8070 недоступны извне (netstat/ss и внешние сканеры).
- Подключиться по HTTPS и проверить цепочку сертификатов и заголовки.
- Выполнить базовый SSL тест (например, онлайн сканеры) для оценки протоколов и шифров.
Отладка и распространенные проблемы
Проверки при проблемах:
- Если веб‑интерфейс недоступен: проверьте логи Apache (/var/log/apache2/error.log, access.log) и логи OpenERP.
- Если WebDAV не работает: убедитесь, что блок /webdav/ присутствует и что OpenERP слушает xmlrpc (порт 8069).
- Если GTK‑клиент не подключается: убедитесь, что в клиенте выбран XMLRPC Secure и порт 8071.
- Если при перезапуске Apache возникает ошибка конфигурации: проверьте синтаксис командой apache2ctl configtest.
Чеклист для отладки:
- Проверить права на /etc/ssl/openerp/*.key и .crt
- Проверить, что openerp-server прослушивает localhost:8069 и 8071
- Проверить, что Apache слушает 0.0.0.0:443
- Проверить заголовок X-Forwarded-Proto от Apache
Руководство по ролям
Администратор:
- Генерация и хранение ключей и сертификатов.
- Мониторинг логов и обновлений безопасности.
- Настройка Apache и firewall.
Разработчик/интегратор:
- Проверка корректности ProxyPass и обработки заголовков.
- Тестирование WebDAV/CalDAV и API на соответствие ожиданиям.
Конечный пользователь:
- Подключение к HTTPS URL и проверка сертификата.
- Для GTK‑клиента выбрать XMLRPC (Secure) и порт 8071.
Модель принятия решения: самоподписанный или CA
flowchart TD
A[Нужен временный тестовый доступ?] -->|Да| B[Используйте самоподписанный сертификат]
A -->|Нет| C[Планируется продакшн]
C --> D[Имеется публичный домен?]
D -->|Да| E[Получите сертификат от CA 'Let's Encrypt/другие']
D -->|Нет| F[Рассмотрите внутренний CA или приобретение домена]
Контрольные критерии приёмки
- Веб‑интерфейс доступен по HTTPS и отображается без локальных конфигураций прокси.
- Незашифрованные порты (8080, 8069, 8070) не принимают внешние соединения.
- GTK‑клиент успешно подключается через XMLRPC Secure на порт 8071.
- WebDAV/CalDAV работают по URL /webdav/ и корректно авторизуют пользователей.
Краткая карта действий после установки
- Сгенерировать сертификат и ключ, переместить в /etc/ssl/openerp.
- Настроить VirtualHost Apache и включить необходимые модули.
- Ограничить слушающие интерфейсы OpenERP на 127.0.0.1.
- Перезапустить сервисы и проверить доступность по HTTPS.
- Провести базовую проверку безопасности и логи.
Частые ошибки и как их исправить
- Ошибка: «502 Bad Gateway» — проверьте, слушает ли внутренний сервис на указанном порту и правильно ли указан адрес в ProxyPass.
- Проблемы с WebDAV — убедитесь, что секция
присутствует и что OpenERP включает WebDAV. - Браузер ругается на сертификат — это ожидаемо для самоподписанных сертификатов; для устранения используйте сертификат от доверенного CA.
Итог
Эта схема позволяет централизованно управлять SSL через Apache, оставляя внутренние сервисы OpenERP доступными только локально. Для тестовых и небольших установок самоподписанный сертификат упрощает развертывание, однако для боевого использования следует применять сертификат, подписанный доверенным CA, и дополнительную жёсткую настройку TLS.
Summary: реализуйте SSL‑терминацию на Apache, ограничьте слушающие интерфейсы OpenERP до localhost, протестируйте WebDAV и GTK‑подключение по защищённому XMLRPC, и примените практики безопасности для продакшн‑окружения.
Похожие материалы

Защита данных при урагане и наводнении

Защита от BYOVD: rwdrv.sys и отключение Defender
SSL для OpenERP на Ubuntu — Apache как прокси

Как выбрать лучший VPN-провайдер

Отключить таргетинг Facebook по истории просмотров
