重要: この手順は自己署名証明書を前提としています。商用環境や公開サービスでは信頼済み CA の証明書(例: Let’s Encrypt)を検討してください。
目的と前提
- 目的: Apache を使って SSL 終端を行い、OpenERP の各種インターフェース(Web, WebDAV/CalDAV, XMLRPC-SSL)を暗号化する。
- 前提: Ubuntu 10.04 LTS サーバ、OpenERP(サーバと web クライアント)がインストール済みで、ローカルで動作していること。root または sudo 権限があること。
用語(1行定義):
- リバースプロキシ: クライアントからの要求をバックエンドサーバに中継する代理サーバ。
- SSL/TLS: ネットワーク通信を暗号化するプロトコル。
手順概要
- Apache と必要なモジュールをインストールする。
- サーバ用の鍵と自己署名証明書を生成する。
- Apache の SSL 用 VirtualHost を作成してリバースプロキシ設定を行う。
- OpenERP サーバと web クライアントの設定をローカルバインド(127.0.0.1)に変更し、SSL 用証明書のパスを指定する。
- サービス再起動と動作確認。
重要な設計ポイント
- Apache を SSL 終端として使うため、OpenERP 側は外部から直接非暗号化アクセスされないようローカルインターフェースで待ち受ける。
- WebDAV トラフィックは XMLRPC ポートへ(OpenERP 側)、通常の Web クライアントは 8080 へルーティングする。
- /webdav/ と / の順序は重要。/ より先に /webdav/ を評価させる必要がある。
Step 11.1 Apache と必要モジュールのインストール
サーバ上で Apache をインストールします:
sudo apt-get install apache2
次に、SSL 終端とプロキシに必要なモジュール(mod_ssl は Ubuntu のパッケージ構成により別名で提供されていることがありますが、ここでは Apache 標準モジュールを有効にします):
sudo a2enmod ssl proxy_http headers rewrite
Step 11.2 鍵と証明書の作成
一時ディレクトリを作り、鍵と CSR、自己署名証明書を作成します。
cd
mkdir temp
cd temp
新しい鍵を生成します(パスフレーズ入力を求められます):
openssl genrsa -des3 -out server.pkey 1024
サーバ起動時に毎回パスフレーズ入力したくない場合は、パスフレーズを削除します:
openssl rsa -in server.pkey -out server.key
署名要求(CSR)を作成します:
openssl req -new -key server.key -out server.csr
プロンプト例(必要なら空欄可): 国名、都道府県、市区町村、組織名、部署名、Common Name(FQDN または 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/
メモ: 上記では所有者を openerp ユーザ、グループを root に設定しています。運用ポリシーに合わせて調整してください。
Step 11.3 Apache サイト設定ファイルの作成
新しい VirtualHost 設定ファイルを作成します:
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
注: /webdav/ 用の Proxy 設定と / 用の Proxy 設定は両方必要な場合があります。WebDAV/CalDAV を使わないなら /webdav/ のブロックを削除できます。
サイトを有効化します:
sudo a2ensite openerp-ssl
オプション — 非暗号化アクセスを SSL にリダイレクトする設定(ファイル: /etc/apache2/sites-available/default の外側に追加):
RewriteEngine on
RewriteCond %{SERVER_PORT} ^80$
RewriteRule ^(.*)$ https://%{SERVER_NAME}$1 [L,R]
Step 11.4 OpenERP サーバと web-client の設定変更
OpenERP サーバ設定 (/etc/openerp-server.conf) を編集して、外部からの非暗号化アクセスを受け付けないようにします。また、XMLRPC-SSL 用に鍵と証明書のパスを指定します。
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
web クライアント側の設定 (/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 は公開用の URL(FQDN または公開 IP)に置き換えてください。CSRF 設定はセキュリティ要件に応じて検討してください。
Step 11.5 動作確認
設定を反映するためにサービスを再起動します:
sudo service openerp-server restart
sudo service openerp-web restart
sudo service apache2 restart
期待される状態:
- ポート 8080 の Web クライアントへ直接接続できないこと。
- GTK クライアントが NetRPC(8070)や XMLRPC(8069)へ直接接続できないこと。
- Web アクセスは https://your-ip-or-domain にアクセスすることで可能。
- GTK クライアントではポート 8071(XMLRPC-SSL)を指定し、XMLRPC(Secure)プロトコルを選ぶ。
CalDAV のカレンダー URL 例:
https://your-ip-or-domain/webdav/DB_NAME/calendars/users/USERNAME/c/CALENDAR_NAME
トラブルシューティング(よくある問題と対処)
- Apache が起動しない: 設定ファイルの構文エラーを確認(sudo apache2ctl configtest)。
- 証明書エラー: ブラウザは自己署名証明書を信頼しないため警告が出る。テスト目的なら例外登録を、運用目的なら信頼済み CA を使用する。
- WebDAV が動かない: /webdav/ Proxy 設定の順序と ProxyPass のターゲットポート(8069)を確認。
- GTK クライアント接続エラー: クライアント側でポート 8071 と XMLRPC-SSL が選ばれているかを確認。
セキュリティ強化(運用向け推奨)
- 信頼済み証明書を導入する(Let’s Encrypt などの無料 CA を含む)。
- TLS 設定を Harden(弱い暗号スイートの無効化、TLS 1.2/1.3 の優先)。
- /etc/ssl/openerp のパーミッションを最小化し、鍵は必要最小のユーザだけが読めるようにする。
- Apache の不要なモジュールを無効化する。
- HTTP ヘッダで HSTS を有効化し、X-Frame-Options、X-Content-Type-Options などを設定する。
重要: TLS 設定を変更する際は互換性(古いクライアントの要否)とのトレードオフを検討してください。
代替アプローチ
- 直接 OpenERP を TLS 終端可能な構成にする(アプリ側で TLS を扱う)— 簡便だがプロキシの柔軟性は下がる。
- リバースプロキシに nginx を使う — リソース効率や細かい TLS 設定で優位。
- ロードバランサ(HAProxy など)で TLS 終端、バックエンドは HTTP — スケーラビリティと可用性向上。
- 商用証明書を使用する(企業向け、公開サービスに必須)。
いつこの手順が向かないか(反例)
- 公開サービスで自己署名証明書を使うとユーザが警告に直面し UX が損なわれる。
- 大規模な負荷分散や可用性要件がある場合、単一の Apache インスタンスでの終端は不十分。
運用チェックリスト(ロール別)
管理者チェック(デプロイ前):
- /etc/ssl/openerp に正しい鍵・証明書がある。
- Apache の VirtualHost が正しく配置され有効化されている(a2ensite)。
- openerp-server.conf と openerp-web.conf が 127.0.0.1 にバインドされている。
運用担当チェック(監視・運用):
- 証明書有効期限を監視(自己署名でも期限切れは発生する)。
- Apache と OpenERP のプロセス監視/再起動手順を確認。
- ログ(Apache、OpenERP)に TLS 関連のエラーがないか定期確認。
エンドユーザ向けチェック:
- ブラウザから HTTPS にアクセスしログインできるか。
- GTK クライアントで XMLRPC-SSL(ポート 8071)で接続できるか。
受け入れ基準(Критерии приёмки)
- HTTPS 経由で OpenERP の Web クライアントにアクセスできる。
- WebDAV/CalDAV が HTTPS 経由で機能する(必要な場合)。
- GTK クライアントが XMLRPC-SSL で接続可能。
- 非暗号化ポート(8080, 8069, 8070)が外部からアクセスできない。
テストケース(簡易)
- ブラウザで https://your-ip-or-domain にアクセスしてログインできること。
- 自己署名証明書の警告が出るが、例外登録すれば接続できること。
- GTK クライアントでサーバ接続設定にポート 8071 と XMLRPC-SSL を指定して接続できること。
- 非暗号化ポートに外部からアクセスできないこと(nmap などで確認)。
運用 SOP(短い手順)
- 設定変更後は必ず sudo apache2ctl configtest で構文チェック。
- サービスを再起動: sudo service openerp-server restart; sudo service openerp-web restart; sudo service apache2 restart。
- 監視設定(証明書期限、プロセス稼働)を有効化。
マイグレーション/互換性メモ
- Ubuntu や Apache のバージョンが異なる場合、モジュール名や default サイトの扱いが変わることがある。パッケージマネージャやディストリのドキュメントを参照してください。
- Let’s Encrypt を利用する際は certbot の導入手順に従い、取得した証明書パスを SSLCertificateFile/SSLCertificateKeyFile に設定する。
意思決定フローチャート
以下は簡易的な導入意思決定の流れです。
flowchart TD
A[公開サービスか?] -->|はい| B[信頼済みCAを使う]
A -->|いいえ| C[自己署名でよい]
B --> D[Let's Encrypt / 商用 CA]
C --> E[手元で自己署名証明書を発行]
D --> F[Apache/nginxでTLS終端]
E --> F
F --> G[OpenERP を 127.0.0.1 にバインド]
G --> H[運用と監視を設定]
まとめ
- Apache をリバースプロキシ兼 SSL 終端として利用することで、OpenERP の複数のインターフェースを暗号化できます。
- 自己署名証明書は簡便ですが、公開環境では信頼済み CA を推奨します。
- 設定変更後はサービス再起動と接続テストを行い、ログや監視で運用を継続的に確認してください。
重要: 本ガイドは技術的手順と運用上の留意点をまとめたものであり、組織のセキュリティポリシーに従って適用してください。
この内容が役立てば幸いです。設定や運用で困った点があれば具体的なエラーメッセージやログを添えてご相談ください。