기술 가이드

OpenERP 서버에서 Apache로 SSL 설정 (Ubuntu 10.04)

6 min read 서버관리 업데이트됨 02 Oct 2025
OpenERP에 Apache로 SSL 설정하기 (Ubuntu 10.04)
OpenERP에 Apache로 SSL 설정하기 (Ubuntu 10.04)

목표 및 개요

이 문서는 Ubuntu 10.04 LTS Server에서 실행 중인 새 OpenERP 서버에 SSL 암호화 접근을 제공하는 현재의 방법을 설명합니다. Apache를 리버스 프록시로 사용해 웹(HTTP) 트래픽과 WebDAV/CalDAV 트래픽을 SSL에서 종료(termination)합니다. GTK 데스크톱 클라이언트는 OpenERP 서버의 XMLRPC-SSL 포트로 직접 암호화된 연결을 맺습니다.

중요: 이 가이드에서는 자체 서명(self-signed) 인증서를 사용합니다. 자체 서명의 장단점 논의와 공개 CA 사용 방법은 이 문서 범위를 벗어납니다.

Note: Debian/Ubuntu 계열에서 Apache 패키징과 설정 방식은 다른 배포판과 차이가 있으므로, 서버에 있는 /usr/share/doc/apache2.2-common/README.Debian.gz 문서를 참고하세요.

사전 조건

  • Ubuntu 10.04 LTS Server에 root 또는 sudo 권한이 있는 계정
  • OpenERP(Server) 및 OpenERP-Web(웹 클라이언트)이 설치되어 있고 기본 포트에서 동작 중(예: XMLRPC 8069, 웹클라이언트 8080)
  • Apache2를 설치하고 모듈을 활성화할 수 있는 권한
  • openssl 명령 사용 가능

중요: 운영 환경에서는 자체 서명 대신 신뢰 가능한 CA에서 발급된 인증서를 사용하는 것을 권장합니다.

단계 요약

  1. Apache 및 필요한 모듈 설치
  2. 인증서와 키 생성(자체 서명)
  3. Apache에 가상호스트(SSL) 구성 파일 생성
  4. OpenERP 서버 및 웹클라이언트 설정 변경하여 내부 바인딩으로 제한
  5. 서비스 재시작 후 동작 확인

Step 11.1. Apache 및 필요 모듈 설치

서버에 다음 명령으로 apache2를 설치합니다:

sudo apt-get install apache2

그다음 SSL과 프록시 관련 모듈(mod_ssl은 Ubuntu에서 ssl로 제공), mod_proxy, mod_proxy_http, mod_headers, (선택) mod_rewrite 등을 활성화합니다:

sudo a2enmod ssl proxy_http headers rewrite

이제 SSL 인증서와 키를 생성하겠습니다.

Step 11.2. 인증서 및 키 생성

임시 디렉터리에서 파일을 생성한 뒤 최종 위치로 이동하는 방식을 사용합니다(처음 cd는 홈 디렉터리로 이동하기 위함입니다).

cd
mkdir temp
cd temp

새 개인키를 생성합니다. 이 과정에서 passphrase(암호문구)를 입력하라는 프롬프트가 뜹니다:

openssl genrsa -des3 -out server.pkey 1024

서버가 부팅할 때마다 passphrase를 입력하고 싶지 않다면 키에서 passphrase를 제거합니다:

openssl rsa -in server.pkey -out server.key

다음으로 CSR(Signing Request)을 만듭니다. 이 요청서에는 최종 인증서에 들어갈 정보가 포함됩니다:

openssl req -new -key server.key -out server.csr

여러 항목을 묻는 프롬프트가 표시됩니다. 일부는 비워둘 수 있고, 기본값을 사용하거나 ‘.’를 입력해 필드를 비워둘 수 있습니다. 예시:

  • Country Name (2 letter code) [AU]:
  • State or Province Name (full name) [Some-State]:
  • Locality Name (eg, city) []:
  • Organization Name (eg, company) [Internet Widgits Pty Ltd]:
  • Organizational Unit Name (eg, section) []:
  • Common Name (eg, YOUR name) []: <– 중요: 이 값은 인증서의 CN으로, 공개 도메인 또는 서버 IP를 입력
  • Email Address []:
  • A challenge password []:
  • An optional company name []:

마지막으로 자체 서명 인증서를 생성합니다(유효기간 예: 365일):

openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

작업 디렉터리에서 실제로 필요한 파일은 server.key(개인키)와 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에 인증서·키 경로를 알려줄 준비가 되었습니다.

중요: 개인키(server.key)는 최소 권한(읽기 권한을 갖는 사용자 제한 등)으로 관리하세요. 키 노출은 즉시 보안 사고로 이어집니다.

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/ 요청은 OpenERP의 XMLRPC(WebDAV) 포트(예: 8069)로 전달합니다.
  • /(루트) 요청은 웹 클라이언트(예: 8080)로 전달합니다.
  • 순서가 중요합니다. /가 /webdav/보다 먼저 나오면 WebDAV 요청이 제대로 매칭되지 않을 수 있습니다.

사이트를 활성화합니다:

sudo a2ensite openerp-ssl

선택적으로 비암호화(HTTP) 요청을 HTTPS로 리디렉션하려면 /etc/apache2/sites-available/default 파일(또는 적절한 non-ssl 사이트 파일)에 mod_rewrite 규칙을 추가합니다:

RewriteEngine on
RewriteCond %{SERVER_PORT} ^80$
RewriteRule ^(.*)$ https://%{SERVER_NAME}$1 [L,R]

Step 11.4. OpenERP 서버 및 웹 클라이언트 설정 변경

외부에서 비암호화 서비스가 접근되지 않도록 OpenERP 서버와 웹 클라이언트를 로컬(Localhost)로 바인딩합니다. 그리고 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

웹 클라이언트 설정 파일 편집:

sudo nano /etc/openerp-web.conf

다음과 같이 수정해 웹 클라이언트도 로컬에서만 수신하도록 합니다(문법과 따옴표는 ASCII 표준 따옴표로 사용):

# 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를 넣으세요.

Step 11.5. 동작 확인

변경 사항을 적용하려면 서비스를 재시작합니다:

sudo service openerp-server restart
sudo service openerp-web restart
sudo service apache2 restart

검증 포인트:

  • 웹 클라이언트는 포트 8080으로 직접 접근하면 안 됩니다(예: http://your-ip:8080 은 차단되어야 함).
  • GTK 클라이언트는 NetRPC(8070) 또는 XMLRPC(8069) 비암호화 포트로 연결되어서는 안 됩니다.
  • 웹 브라우저에서 https://your-ip-or-domain 로 접속하면 OpenERP 웹 인터페이스가 표시되어야 합니다.
  • GTK 클라이언트(데스크톱)에서는 포트 8071을 사용하고 프로토콜로 XMLRPC(Secure)를 선택해야 합니다.

CalDAV 캘린더 URL 예시:

https://your-ip-or-domain/webdav/DB_NAME/calendars/users/USERNAME/c/CALENDAR_NAME

문제 해결 팁

  • 브라우저에서 자체 서명 인증서 경고가 뜨면 인증서가 신뢰된 CA에 의해 발급되지 않았기 때문입니다(예상 동작).
  • 403/404/502 에러: Apache 로그(/var/log/apache2/error.log)와 OpenERP 로그를 확인하세요.
  • ProxyPass 설정에서 경로 순서가 중요합니다. /가 먼저 나오면 /webdav/ 규칙이 무시됩니다.

추가 자료: 역할 기반 체크리스트

시스템 관리자 체크리스트:

  • Apache와 필요한 모듈 설치 및 활성화
  • 인증서와 개인키 생성 및 보안 권한 설정
  • /etc/ssl/openerp 디렉터리 권한 확인
  • Apache 가상호스트 SSL 구성 적용 및 사이트 활성화
  • 방화벽(port) 규칙: 443 허용, 8080/8069 등 내부 포트는 로컬 바인딩으로 외부 차단
  • 서비스 재시작 및 로그 확인

응용 개발자/운영팀 체크리스트:

  • tools.proxy.base와 X-Forwarded-* 헤더 의존성 점검
  • CSRF 설정과 리버스 프록시 관련 보안 정책 검토
  • WebDAV 기능이 필요한지 여부 확인 및 vdir 설정

사용자 안내(간단 문구):

보안 하드닝 권장 사항

  • 자체 서명 인증서는 테스트/내부 환경에 적합하며, 운영 환경에서는 공인 CA 또는 Let’s Encrypt 같은 ACME 기반 인증서를 사용하세요.
  • TLS 프로토콜과 사이퍼 설정을 강화하세요(불필요한 오래된 프로토콜 비활성화). Apache의 SSLProtocol/SSLCipherSuite 지침을 따릅니다.
  • 개인키 접근 권한을 최소화하고, 키가 유출되면 즉시 인증서 재발급/교체하세요.
  • 정기적으로 패치 적용 및 로그 모니터링을 수행하세요.

1줄 용어집

  • SSL/TLS: 네트워크 통신의 암호화 계층
  • Apache: 널리 사용되는 HTTP 서버 소프트웨어
  • WebDAV/CalDAV: 웹 기반 파일/캘린더 접근을 위한 프로토콜
  • XMLRPC: 원격 프로시저 호출을 위한 XML 기반 프로토콜

수용 기준

  • HTTPS(443)를 통해 OpenERP 웹 UI에 정상 접근 가능
  • 비암호화 포트(8080, 8069, 8070)는 외부에서 접근 불가
  • GTK 클라이언트가 XMLRPC-SSL(포트 8071)로 접속 가능
  • WebDAV(사용 시)가 https를 통해 정상 동작

테스트 케이스(간단)

  • TC1: https://your-ip-or-domain 접속 → 웹 로그인 페이지 표시
  • TC2: http://your-ip-or-domain:8080 접속 → 접속 차단 또는 연결 실패
  • TC3: GTK 클라이언트로 포트 8071(XMLRPC-SSL) 접속 → 정상 로그인 가능
  • TC4: WebDAV 캘린더 URL 접속 → 캘린더 항목 조회 가능(설정한 경우)

결정 흐름(간단)

다음 Mermaid 다이어그램은 WebDAV를 활성화할지 결정하는 흐름입니다:

flowchart TD
  A[WebDAV/CalDAV 필요?] -->|예| B[OpenERP webdav 섹션 활성화]
  A -->|아니오| C[WebDAV 설정 제거]
  B --> D[Apache에서 /webdav/ 프록시 설정 추가]
  C --> D
  D --> E[전체 테스트 및 검증]

마이그레이션/버전 참고

  • 이 가이드는 Ubuntu 10.04과 해당 시절 OpenERP 구조(서버/웹 분리)를 기반으로 합니다. 최신 배포판과 OpenERP(또는 Odoo) 버전에서는 패키지명, 설정 경로, 기본 포트, 모듈 이름 등이 달라질 수 있습니다.
  • 최신 Ubuntu/데비안에서는 systemd 사용, Apache 구성 위치 및 모듈 동작이 달라질 수 있으니 배포판 문서를 참고하세요.

요약

  • Apache를 리버스 프록시로 사용해 SSL 종료를 구성하면 OpenERP의 여러 인터페이스를 HTTPS로 안전하게 노출할 수 있습니다.
  • 자체 서명 인증서는 내부/테스트용으로 적합하지만 운영 환경에서는 공인된 CA 인증서를 권장합니다.
  • OpenERP 및 웹 클라이언트를 로컬 바인딩하여 비암호화 포트를 외부에서 차단해야 합니다.

중요: 이 문서는 구현 예시를 제공하며, 실제 운영 환경에서는 추가적인 보안 검토(예: TLS 설정, HSTS, 인증서 관리 등)가 필요합니다.

저는 이 방법이 도움이 되었으면 합니다. 개선 의견이나 질문이 있으면 알려 주세요.

공유하기: X/Twitter Facebook LinkedIn Telegram
저자
편집

유사한 자료

Debian 11에 Podman 설치 및 사용하기
컨테이너

Debian 11에 Podman 설치 및 사용하기

Apt-Pinning 간단 소개 — Debian 패키지 우선순위 설정
시스템 관리

Apt-Pinning 간단 소개 — Debian 패키지 우선순위 설정

OptiScaler로 FSR 4 주입: 설치·설정·문제해결 가이드
그래픽 가이드

OptiScaler로 FSR 4 주입: 설치·설정·문제해결 가이드

Debian Etch에 Dansguardian+Squid(NTLM) 구성
네트워크

Debian Etch에 Dansguardian+Squid(NTLM) 구성

안드로이드 SD카드 설치 오류(Error -18) 완전 해결
안드로이드 오류

안드로이드 SD카드 설치 오류(Error -18) 완전 해결

KNetAttach로 원격 네트워크 폴더 연결하기
네트워킹

KNetAttach로 원격 네트워크 폴더 연결하기