티스토리 뷰
본 포스팅은 Apache에서 SSL을 적용하는 가이드입니다.
기존 설치되어있는 Apache에서 SSL 인증서를 만들고, 적용하여 HTTP>HTTPS로의 Rewrite를 테스트해보도록 하겠습니다.
Apache 웹서버에 SSL를 적용하기 위해 아래 두 항목이 웹서버에 설치되어 있어야 합니다.
-bash-4.2$ sudo yum install openssl [sudo] password for apacheUser: Loaded plugins: fastestmirror, langpacks Loading mirror speeds from cached hostfile * base: centos.mirror.cdnetworks.com * extras: centos.mirror.cdnetworks.com * updates: centos.mirror.cdnetworks.com Package 1:openssl-1.0.2k-12.el7.x86_64 already installed and latest version |
2. mod_ssl 을 설치합니다.
-bash-4.2$ sudo yum install mod_ssl [sudo] password for apacheUser: Loaded plugins: fastestmirror, langpacks Loading mirror speeds from cached hostfile * base: centos.mirror.cdnetworks.com * extras: centos.mirror.cdnetworks.com * updates: centos.mirror.cdnetworks.com .. .. Total download size: 111 k Installed size: 224 k Is this ok [y/d/N]: y Downloading packages: mod_ssl-2.4.6-80.el7.centos.1.x86_64.rpm | 111 kB 00:00:00 Running transaction check Running transaction test Transaction test succeeded Running transaction Installing : 1:mod_ssl-2.4.6-80.el7.centos.1.x86_64 1/1 Verifying : 1:mod_ssl-2.4.6-80.el7.centos.1.x86_64 1/1 Installed: mod_ssl.x86_64 1:2.4.6-80.el7.centos.1 Complete!
|
/etc/httpd/modules 아래에 mod_ssl.so 이 생성됩니다.
이를 APACHE_HOME/modules/아래에 copy합니다.
2.openssl 명령어를 이용해서, 개인키 생성 > CSR 생성 > 자체적으로 서명한 crt파일 생성을 완료합니다.
개인키 생성> -bash-4.2$ sudo openssl genrsa -des3 -out test.key 2048 [sudo] password for apacheUser: Generating RSA private key, 2048 bit long modulus ..................................+++ .............................................................................................+++ e is 65537 (0x10001) Enter pass phrase for test.key: Verifying - Enter pass phrase for test.key: CSR 생성>
-bash-4.2$ sudo openssl req -new -key test.key -out test.csr Enter pass phrase for test.key: You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [XX]:kr State or Province Name (full name) []:kyungkido Locality Name (eg, city) [Default City]:bundanggu Organization Name (eg, company) [Default Company Ltd]:sw Organizational Unit Name (eg, section) []:kkm Common Name (eg, your name or your server's hostname) []:kkm Email Address []:kkm Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []: 자체적으로 서명한 crt파일 생성> -bash-4.2$ sudo openssl x509 -req -days 365 -in test.csr -signkey test.key -out test.crt Signature ok subject=/C=kr/ST=kyungkido/L=bundanggu/O=sw/OU=kkm/CN=kkm/emailAddress=kkm Getting Private key Enter pass phrase for test.key: |
How To Generate SSL Key, CSR and Self Signed Certificate For Apache
https://www.thegeekstuff.com/2009/07/linux-apache-mod-ssl-generate-key-csr-crt-file/
3. httpd.conf 수정
LoadModule ssl_module modules/mod_ssl.so LoadModule socache_shmcb_module modules/mod_socache_shmcb.so → mod_ssl과 mod_socache_shmcb 모듈을 활성화합니다. Include conf/extra/httpd-ssl.conf → httpd-ssl.conf를 사용할 수 있도록 활성화 시킵니다. LoadModule rewrite_module modules/mod_rewrite.so → rewrite 기능을 사용할 수 있도록 활성화 시킵니다. |
4. httpd-ssl.conf 설정
<VirtualHost _default_:443> # General setup for the virtual host DocumentRoot "/home/apache/apache/htdocs" ServerName www.kkm.com:443 ServerAdmin you@example.com ErrorLog "/home/apache/apache/logs/error_log" TransferLog "/home/apache/apache/logs/access_log" JkMount /* load_balancer
SSLEngine on SSLCertificateFile [인증서 파일 경로] SSLCertificateKeyFile [키파일 경로] SSLCACertificateFile [중계인증서 파일경로] |
5. httpd-vhost.conf 설정 : HTTP > HTTPS 로의 Rewrite를 위한 설정을 합니다.
<VirtualHost *:80> DocumentRoot "/home/apache/apache/htdocs" ServerName www.kkm.com ServerAlias www.kkm.com ErrorLog "/home/apache/apache/logs/ddd/error_log" CustomLog "/home/apache/apache/logs/ddd/access_log" common JkMount /* load_balancer RewriteEngine On RewriteCond %{HTTPS} off RewriteRule .* https://www.kkm.com/session.jsp </VirtualHost> |
*참고하기*
RewriteCond %{HTTPS} on/off 설정을 이용하여 프로토콜 별로 처리할 수 있습니다. Rewrite를 추가하는 부분에서 SSL 인증서를 사용하고 있다면 [P] 옵션을 사용하기 때문에 (P=Proxy) SSLProxyEngine On
설정을 추가해줘야 합니다.
Proxy를 사용하지 않아도 될 경우에는 [P,R,L] -> [R=301,L] 사용
- HTTP를 HTTPS로 리다이렉트 <IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [P,R,L]
</IfModule>
- HTTPS를 HTTP로 리다이렉트 SSLProxyEngine On => SSL 인증서를 이용하고 있다면 넣어줘야 한다.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} on
RewriteRule .* http://%{HTTP_HOST}%{REQUEST_URI} [P,R,L]
</IfModule>
- HTTP/HTTPS를 고려하여, 받은 URL 그대로 리다이렉트.
SSLProxyEngine On => SSL 인증서를 이용하고 있다면 넣어줘야 한다.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} on
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [P,R,L]
RewriteCond %{HTTPS} off
RewriteRule .* http://%{HTTP_HOST}%{REQUEST_URI} [P,R,L] </IfModule> |
*참고하기*
한 컴퓨터/장비에서 여러개의 웹서비스들을 구동할 수 있도록 할 수 있는 방법을 아파치 가상 호스트(VirtualHost)라고 하며,그 적용방법은 크게 아래의 4가지로 나눌 수 있습니다.
1. IP기반 가상호스트(IP-based virtual host) : 가상호스트별로 각각 IP주소 1개씩 부여 일반적인 설정은 보통 httpd-vhosts.conf에 가상 호스트를 설정하고, httpd.conf 파일 마지막에 Include conf/extra/httpd-vhosts.conf를 추가하는 방식으로 이루어집니다. IP 기반 가상 호스트(IP-based virtual host) <VirtualHost 211.49.89.1:80> <VirtualHost 211.49.89.2:80> 포트 기반 가상 호스트(port-based virtual host) <VirtualHost 211.49.89.1:80> <VirtualHost 211.49.89.1:90> 이름 기반 가상 호스트(name-based virtual host) <VirtualHost *:80> <VirtualHost *:80> <VirtualHost _default_:*> |
6.모든 설정 완료 후, apache를 기동합니다.
7.결과
http://www.kkm.com/session.jsp 호출 시,
https://www.kkm.com/session.jsp 로 호출되는것을 확인할 수 있습니다.
|
고맙습니다.
'④ 미들웨어 > ⓐ Apache' 카테고리의 다른 글
[apache] LogFormat 설정 참고자료 (nickname) (2) | 2019.01.19 |
---|---|
[Apache] 아파치 다중 프로세스 기동하기 (0) | 2018.12.27 |
[apache] 설치 (+apr,apr-util,pcre) (0) | 2018.10.18 |
Apache, WebtoB ProxySSL 상호인증 설정 및 테스트 가이드 (0) | 2018.08.14 |
[Apache] Sticky Session 사용가이드 (0) | 2018.08.13 |
- Total
- Today
- Yesterday
- Docker
- JEUS6
- Architecture
- openstack token issue
- OpenStack
- SA
- 마이크로서비스 아키텍처
- apache
- MSA
- aa
- JEUS7
- API Gateway
- git
- jeus
- webtob
- wildfly
- openstack tenant
- nodejs
- SWA
- 마이크로서비스
- 쿠버네티스
- 아키텍처
- 오픈스택
- TA
- kubernetes
- Da
- k8s
- aws
- JBoss
- node.js
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |