본문 바로가기

WEB/Apache,OHS

[Apache] Apache2.4.* 설치 & SSL 인증서 적용 (Windows)

#. 참고 Apache 문서

https://httpd.apache.org/docs/2.4/platform/windows.html

 

#. Windows용 Apache 다운로드

https://www.apachelounge.com/download/

 


 

#. 보안취약점 조치 설정은 아래 글 참고

https://hyuunchul.tistory.com/289

 


 

#01. 설치 환경

OS : Windows10, Windows Server 2022

WAS : WebLogic12.2.1.4

 


 

#02. 설치 파일

01. Microsoft Visual C++ 2015-2022

Apache 서버 프로세스 및 WebLogic Plugin 사용을 위해 필요하다

 

02. Apache 2.4.*

https://www.apachelounge.com/download/

 

 


 

#03. 설치 절차

Microsoft Visual C++ 2015-2022 설치 후

원하는 경로에 Apache 설치파일 압축 해제

 

{APACHE_HOME}/conf/httpd.conf 파일을 수정한다.

Apache 서버가 설치된 경로로 수정한다.

SRVROOT 부분 수정

Define SRVROOT "D:/work/app/apache/apache2457"

 

Error Log 설정

로그 파일 로테이션 설정은 아래 이미지 참고

LogLevel은 info로 수정

(설정예시)

ErrorLog "||E:/app/apache2457/bin/rotatelogs.exe E:/logs/apache/error_log/error.log_%Y%m%d 86400 +540"

 

 

Access Log 설정

마찬가지로 로그 파일 로테이션 설정은 아래 이미지 참고

common 이 아닌 combined 설정이 권장된다

(설정예시)

CustomLog "||E:/app/apache2457/bin/rotatelogs.exe E:/logs/apache/access_log/access.log_%Y%m%d 86400 +540" combined

 


 

#04. 서비스 등록

관리자 권한으로 CMD 실행

{APACHE_HOME}/bin 디렉토리로 이동

아래 명령어 실행

-n 옵션을 사용하면 원하는 이름으로 서비스 등록을 할 수 있다.
해당 옵션 사용하지 않으면 default 값인 Apache2.4 로 등록

httpd.exe -k install -n "서비스이름"

 

 


 

#05. Apache 기동

httpd.exe 로 기동하면 CMD 창이 총 3개 활성화 된다.

(Apache 프로세스, Error Log 로테이션 프로세스, Access Log 로테이션 프로세스)

너무 번잡하므로, 윈도우 환경에서는 서비스를 통해 백그라운드로 기동하는 것이 편하다.

 

윈도우 서비스 창에서 직접 기동하는 방법이 있으며

ApacheMonitor.exe 를 활용하는 방법도 있다.

 

윈도우 장비 상에 등록되어 있는 Apache 서비스들을 일괄적으로 관리할 수 있어 편리하다.

 


 

#06. WAS (WebLogic) 연동

httpd.conf 맨 하단에 작성한다.

아래 설정 예시 참고

#weblogic_plugin
LoadModule weblogic_module E:/app/apache2457/weblogic_plugin_12214/lib/mod_wl_24.so

<IfModule mod_weblogic.c>
    WebLogicCluster 127.0.0.1:8000
    MatchExpression */api/*
    MatchExpression *.jsp
    MatchExpression *.do
    MatchExpression *.nx
    Idempotent OFF
    WLIOTimeoutSecs 300
    WLCookieName WLS_SESSIONID
</IfModule>

<Location /api>
    SetHandler weblogic-handler
    WebLogicCluster 127.0.0.1:8000
    Idempotent OFF
    WLIOTimeoutSecs 300
    WLCookieName AMS_SESSIONID
</Location>

 


 

#07. openssl 활용하여 테스트용 SSL 인증서 생성

참고 글 (Apache 문서)

https://www.apachelounge.com/viewtopic.php?t=5684

 

bin 디렉토리에 openssl.exe 파일이 기본으로 포함되어있다.

해당 openssl을 사용하여 SSL 인증서 생성이 가능하다.

 

httpd.conf 에서 아래 부분을 주석 해제한다.

Include conf/extra/httpd-ssl.conf

 

ssl 사용 위해 추가로 load 필요한 module 이 있다.

아래 내용들도 주석 해제한다.

LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
LoadModule ssl_module modules/mod_ssl.so
LoadModule log_config_module modules/mod_log_config.so
LoadModule setenvif_module modules/mod_setenvif.so

 

아래 절차대로 SSL 인증서 생성

#01. 환경변수 설정
set OPENSSL_CONF=D:\work\app\apache\apache2457\conf\openssl.cnf

=============================================================

#02. 개인키 생성
D:\work\app\apache\apache2457\bin\openssl.exe genrsa -des3 -out server.key 2048
Enter PEM pass phrase: (인증서 비밀번호)

=============================================================

#03. 인증요청서 생성
D:\work\app\apache\apache2457\bin\openssl.exe req -new -key D:\work\app\apache\apache2457\conf\ssl_wallet\server.key -out D:\work\app\apache\apache2457\conf\ssl_wallet\server.csr
Enter pass phrase for server.key: (인증서 비밀번호 입력)


(자신의 경우에 맞게 적절히 입력)
Country Name (2 letter code) [XX]:KR
State or Province Name (full name) []:Seoul
Locality Name (eg, city) [Default City]:Yeongdeungpo
Organization Name (eg, company) [Default Company Ltd]:Jmnote
Organizational Unit Name (eg, section) []:Jmnote
Common Name (eg, your name or your server's hostname) []:jmnote.com
Email Address []:web@jmnote.com


(아래의 두 줄이 나올 때는 그냥 Enter로 넘어가면 됨)
A challenge password []:
An optional company name []:


=============================================================

#04. 개인키에서 패스워드 제거
D:\work\app\apache\apache2457\bin\openssl.exe rsa -in server.key -out server.key
Enter pass phrase for server.key: (개인키 패스워드 입력)
writing RSA key

패스워드가 제거된 개인키 파일 server.key 가 생성된다

해당 작업을 수행하지 않을 시
Apache 서버 기동 시 마다 SSL 인증서 패스워드를 입력해야 한다

=============================================================

#05. 인증서 생성
D:\work\app\apache\apache2457\bin\openssl.exe x509 -req -days 3650 -in server.csr -signkey server.key -out server.crt
서버 인증서인 secure.crt가 생성됨

=============================================================

 

httpd-ssl.conf 파일에 SSL 인증서 경로를 지정한다

SSLCertificateFile "D:/work/app/apache/apache2457/ssl_wallet/server.crt"
SSLCertificateKeyFile "D:/work/app/apache/apache2457/ssl_wallet/server.key"