テクノロジーガイド

ステップ 11 — SSL

3 min read インフラ 更新されました 02 Oct 2025
OpenERP を Apache で SSL 終端する手順(Ubuntu)
OpenERP を Apache で SSL 終端する手順(Ubuntu)

重要: この手順は自己署名証明書を前提としています。商用環境や公開サービスでは信頼済み CA の証明書(例: Let’s Encrypt)を検討してください。

目的と前提

  • 目的: Apache を使って SSL 終端を行い、OpenERP の各種インターフェース(Web, WebDAV/CalDAV, XMLRPC-SSL)を暗号化する。
  • 前提: Ubuntu 10.04 LTS サーバ、OpenERP(サーバと web クライアント)がインストール済みで、ローカルで動作していること。root または sudo 権限があること。

用語(1行定義):

  • リバースプロキシ: クライアントからの要求をバックエンドサーバに中継する代理サーバ。
  • SSL/TLS: ネットワーク通信を暗号化するプロトコル。

手順概要

  1. Apache と必要なモジュールをインストールする。
  2. サーバ用の鍵と自己署名証明書を生成する。
  3. Apache の SSL 用 VirtualHost を作成してリバースプロキシ設定を行う。
  4. OpenERP サーバと web クライアントの設定をローカルバインド(127.0.0.1)に変更し、SSL 用証明書のパスを指定する。
  5. サービス再起動と動作確認。

重要な設計ポイント

  • 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)が外部からアクセスできない。

テストケース(簡易)

  1. ブラウザで https://your-ip-or-domain にアクセスしてログインできること。
  2. 自己署名証明書の警告が出るが、例外登録すれば接続できること。
  3. GTK クライアントでサーバ接続設定にポート 8071 と XMLRPC-SSL を指定して接続できること。
  4. 非暗号化ポートに外部からアクセスできないこと(nmap などで確認)。

運用 SOP(短い手順)

  1. 設定変更後は必ず sudo apache2ctl configtest で構文チェック。
  2. サービスを再起動: sudo service openerp-server restart; sudo service openerp-web restart; sudo service apache2 restart。
  3. 監視設定(証明書期限、プロセス稼働)を有効化。

マイグレーション/互換性メモ

  • 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 を推奨します。
  • 設定変更後はサービス再起動と接続テストを行い、ログや監視で運用を継続的に確認してください。

重要: 本ガイドは技術的手順と運用上の留意点をまとめたものであり、組織のセキュリティポリシーに従って適用してください。


この内容が役立てば幸いです。設定や運用で困った点があれば具体的なエラーメッセージやログを添えてご相談ください。

共有する: X/Twitter Facebook LinkedIn Telegram
著者
編集

類似の素材

Windows デスクトップにシステム情報を表示する方法
Windows

Windows デスクトップにシステム情報を表示する方法

OpenERP の起動スクリプト導入と自動化
インフラ

OpenERP の起動スクリプト導入と自動化

YouTubeの不評数を表示する方法(Chrome・Android)
ガイド

YouTubeの不評数を表示する方法(Chrome・Android)

ハリケーン・洪水・自然災害からデータを守る方法
防災・IT

ハリケーン・洪水・自然災害からデータを守る方法

BYOVD攻撃からWindowsを守る手順と対策
セキュリティ

BYOVD攻撃からWindowsを守る手順と対策

OpenERP を Apache で SSL 終端する手順(Ubuntu)
インフラ

OpenERP を Apache で SSL 終端する手順(Ubuntu)