Гид по технологиям

SSL: настройка Apache как SSL-прокси для OpenERP на Ubuntu 10.04 LTS

5 min read Администрирование Обновлено 02 Oct 2025
SSL для OpenERP на Ubuntu — Apache как прокси
SSL для OpenERP на Ubuntu — Apache как прокси

Введение

В этой инструкции показан рабочий способ предоставления 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.

Короткая методология проверки безопасности:

  1. Проверить, что 8080, 8069, 8070 недоступны извне (netstat/ss и внешние сканеры).
  2. Подключиться по HTTPS и проверить цепочку сертификатов и заголовки.
  3. Выполнить базовый 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/ и корректно авторизуют пользователей.

Краткая карта действий после установки

  1. Сгенерировать сертификат и ключ, переместить в /etc/ssl/openerp.
  2. Настроить VirtualHost Apache и включить необходимые модули.
  3. Ограничить слушающие интерфейсы OpenERP на 127.0.0.1.
  4. Перезапустить сервисы и проверить доступность по HTTPS.
  5. Провести базовую проверку безопасности и логи.

Частые ошибки и как их исправить

  • Ошибка: «502 Bad Gateway» — проверьте, слушает ли внутренний сервис на указанном порту и правильно ли указан адрес в ProxyPass.
  • Проблемы с WebDAV — убедитесь, что секция присутствует и что OpenERP включает WebDAV.
  • Браузер ругается на сертификат — это ожидаемо для самоподписанных сертификатов; для устранения используйте сертификат от доверенного CA.

Итог

Эта схема позволяет централизованно управлять SSL через Apache, оставляя внутренние сервисы OpenERP доступными только локально. Для тестовых и небольших установок самоподписанный сертификат упрощает развертывание, однако для боевого использования следует применять сертификат, подписанный доверенным CA, и дополнительную жёсткую настройку TLS.

Summary: реализуйте SSL‑терминацию на Apache, ограничьте слушающие интерфейсы OpenERP до localhost, протестируйте WebDAV и GTK‑подключение по защищённому XMLRPC, и примените практики безопасности для продакшн‑окружения.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Мобильные данные не работают на iPhone или iPad
Техническая поддержка

Мобильные данные не работают на iPhone или iPad

Как закрыть вкладки на Android
How-to

Как закрыть вкладки на Android

Напоминания о фильтре для Nest Thermostat
Умный дом

Напоминания о фильтре для Nest Thermostat

Как удалить папку 3D Objects в Windows 10
Windows

Как удалить папку 3D Objects в Windows 10

Circle to Search на iPhone — Google Lens и ярлыки
How-to

Circle to Search на iPhone — Google Lens и ярлыки

Как создать ветку в Git — практическое руководство
GIT

Как создать ветку в Git — практическое руководство