RadarURL
Skip to content
조회 수 4 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

 포스팅은 Apache에서 SSL을 적용하는 가이드입니다.


기존 설치되어있는 Apache에서 SSL 인증서를 만들고, 적용하여 HTTP>HTTPS로의 Rewrite를 테스트해보도록 하겠습니다. 

Apache 웹서버에 SSL를 적용하기 위해 아래 두 항목이 웹서버에 설치되어 있어야 합니다.

- Openssl 암호화 라이브러리 
- Mod_ssl 모듈 
 
위 두 항목이 웹서버에 설치되어 있다면 개인키를 생성하고 생성된 개인키를 바탕으로 CSR 파일을 생성합니다. 
생성된 CSR 파일을 공식 인증기관에 접수하여 정식 인증서를 발급받습니다.
발급된 인증서를 웹서버에 설치하게 되면 SSL 설정을 완료하게 됩니다.
위 일련의 진행사항은 아래와 같은 절차를 따르게 됩니다. 
1. openssl 라이브러리 설치상태 확인 
2. mod_ssl 모듈 설치상태 확인 
3. 개인키 생성 
4. CSR 생성 
5. 공식 인증기관에 접수 
6. 정식 인증서 발급 
7. SSL 설정
 
그럼 진행하도록 하겠습니다. 
 
1. openssl 설치
 

-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개씩 부여
2. 포트기반 가상호스트(port-based virtual host) : 동일한 호스트에 포트만 다르게 지정
3. 이름기반 가상호스트(name-based virtual host) : 같은 IP에서 도메인명이 다른 가상호스트들 운용
4. 기본 가상호스트(default virtual host) : 특정 호스트에 해당 사항 없을때 기본적으로 응답하게 될 호스트

일반적인 설정은 보통 httpd-vhosts.conf에 가상 호스트를 설정하고, httpd.conf 파일 마지막에 Include conf/extra/httpd-vhosts.conf를 추가하는 방식으로 이루어집니다.

IP 기반 가상 호스트(IP-based virtual host)
- IDC 또는 전용망 네트워크환경에서 한 1개의 서버장비에 여러개의 IP를 할당받고 IP별로 가상호스트를 사용하는 방법입니다.
- IP추가를 위해 각각의 네트워크 설정 등이 필요합니다.

 
Listen 211.49.89.1:80
 isten 211.49.89.2:80

 <VirtualHost 211.49.89.1:80>
   DocumentRoot /var/www/site1
   ServerName site1.example.com
 </VirtualHost>

 <VirtualHost 211.49.89.2:80>
   DocumentRoot /var/www/site2
   ServerName site2.example.com
 </VirtualHost>
 

포트 기반 가상 호스트(port-based virtual host)
- 포트를 기반으로 가상 호스트를 설정합니다. Listen 포트에 사용할 포트를 여러개 설정한 후 VirtualHost를 해당 포트로 설정하면 됩니다.
- 포트번호를 사용자가 미리알고 사용하여야하는 용도의 서비스에 적합하며, 1개의 장비/회선/IP에 각기 다른 여러개의 포트로 구분하여 사용하는 서비스에 적합합니다.
 
 
Listen 80
 Listen 90

 <VirtualHost 211.49.89.1:80>
   DocumentRoot /var/www/port_80
  ServerName site1.example.com
 </VirtualHost>

 <VirtualHost 211.49.89.1:90>
   DocumentRoot /var/www/port_90
  ServerName site2.example.com
 </VirtualHost>
 

이름 기반 가상 호스트(name-based virtual host)
- 한 장비/IP에 여러개의 도메인 이름을 부여하고 도메인 이름별로 가상 호스트를 사용하는 방법입니다.
- 일반적인 웹호스팅 서비스에 많이 사용되는 방식으로 이름 기반 가상 호스트는 클라이언트 요청시 전송하는 헤더중 Host 헤더정보를 사용하여 가상 호스트 설정에 따라 웹 서비스를 하게 됩니다.
 
  
NameVirtualHost *:80

 <VirtualHost *:80>
  DocumentRoot /var/www/site1
  ServerName id1.codns.com
</VirtualHost>

 <VirtualHost *:80>
  DocumentRoot /var/www/site2
  ServerName id2.codns.com
</VirtualHost>
 
 
기본 가상호스트(default virtual host)
- 기본 가상호스트란 어떤 가상호스트에도 해당하지않은 IP 주소와 포트에 대한 모든 요청을 처리하여 호스트를 띄워주는 것입니다.즉, 지정된 가상호스트가 없을 때 기본적으로 응답에 응할 호스트를 지정해 둔 것이 기본 가상호스트입니다.
- default(기본) 가상호스트의 포트로 와일드카드를 사용하여 어떤 요청도 주서버로 못가도록 만듭니다.
- AliasMatch나 RewriteRule을 사용하여 어떤 요청을 특정 페이지(혹은 스크립트)로 재작성할(rewrite) 수 있습니다.

 
NameVirtualHost *:80

 <VirtualHost _default_:*>
  DocumentRoot /var/www/site
  DocumentRoot /www/default
 </VirtualHost>
 
 
예제에 표기된 항목설명
1. NameVirtualHost 항목 : 만일 서버가 유동아이피를 사용하신다면 "NameVirtualHost *"과 같이 *를 아이피대신 사용하세요. 원래는 "NameVirtualHost 아이피"와 같이 현재 서버의 아이피를 넣어줘야 하지만 유동아이피를 사용하므로 아이피가 바뀔때 마다 이 부분을 수정해 줄 수는 없는 일입니다. "*" 기호는 "모든"이라는 의미를 가지고 있으므로 아이피대신 이 기호를 사용하시면 됩니다.
2. VirtualHost 항목 : 이 부분도 위와 같은 이유로 "*"를 사용하시면 됩니다.
3. ServerName 항목 : 사용할 도메인 주소를 적어 줍니다.
4. ServerAlias 항목 : 이것은 어떤 도메인으로 접속했을 때 홈페이지를 보이도록 할 것인지를 정하는 부분입니다. 즉, 첫번째 가상 호스트에서는 "*.aaa.com"을 지정했으므로 "aaa.com"을 포함한 "xxx.aaa.com" , "yyy.aaa.com" 등 앞에 어떠한 레코드(서브 도메인)를 붙여서 접속하더라도 모두 홈페이지를 보여줍니다.  이와는 다르게 두번째 가상 호스트에서는 "*"기호를 사용하지 않았으므로 이 항목에서 지정한 "bbb.com" , "xxx.bbb.com" , "www.bbb.com"로 접속 했을 때만 홈페이지를 보여줍니다.
5. DocumentRoot 항목 : 각각의 가상 호스트가 갖게될 홈디렉토리의 경로를 적어 줍니다. 윈도우용 아파치의 경우는 "C:\Apache2.2\htdocs\site"형식으로 경로를 작성하며, 리눅스의 경우에는 "/var/www/site"형식으로 작성하시면 됩니다. 

 

 

 

6.모든 설정 완료 후, apache를 기동합니다. 

 

7.결과 

http://www.kkm.com/session.jsp 호출 시,

https://www.kkm.com/session.jsp 로 호출되는것을 확인할 수 있습니다. 

 

 0101.jpg

 

 

 

 

고맙습니다.

 

출처 : https://waspro.tistory.com/383

?

List of Articles
번호 제목 글쓴이 날짜 조회 수
101 [Linux] 아파치(Apache) SSL 인증서 설치 JAESOO 2021.01.12 7
100 리눅스 CentOS 7 HTTPS 리다이렉트 설정 JAESOO 2021.01.12 6
» [Apache] SSL 적용하기 / HTTP->HTTPS로 Rewrite하기 JAESOO 2021.01.12 4
98 centos 7.x에서 ssl 설치하기 JAESOO 2021.01.12 5
97 CentOS7 Apache ssl 인증서 적용 그리고 80 to 443 redirect JAESOO 2021.01.12 3
96 무료 SSL 보안 인증서 발급받기 (Free SSL Certificate) JAESOO 2021.01.12 2
95 [리눅스][XE]XpressEngine(제로보드) 사용 시, 500 Internal Server Error when using .htaccess with RewriteEngine JAESOO 2021.01.02 4
94 CentOS 7 yum으로 phpMyAdmin 설치 & 권한(permission) 문제 해결 JAESOO 2021.01.02 4
93 [리눅스/CentOS 7] PHP7.2 설치(Webtatic) JAESOO 2021.01.02 0
92 CentOS 7 PHP / PHP-FPM 7.4 설치 (remi repo) JAESOO 2021.01.02 7
91 Apache 403 Forbidden error 해결 방법 JAESOO 2021.01.02 0
90 아파치 Forbidden You don’t have permission to access / on this server. 에러 해결 JAESOO 2021.01.02 3
89 [리눅스] 웹서버(아파치;apache) 설치후 다른 계정으로 실행하기 JAESOO 2021.01.02 1
88 [CentOS] 아파치(apache) 제거하기 JAESOO 2021.01.02 3
87 [Linux] Apache 웹서버 정리 JAESOO 2021.01.02 4
86 CentOS 7 - Apache 아파치 실행 상태 확인 JAESOO 2021.01.02 1
85 아파치 2.4에서 httpd.conf 데몬 실행 오류 찾아내는 방법 JAESOO 2021.01.02 0
84 service httpd.service 오류 발생 시 해결방법 JAESOO 2021.01.02 2
83 [Apache & TOMCAT 연동 2] 일반계정으로 아파치 관리 JAESOO 2021.01.02 0
82 CentOS 7 / Apache / 하나의 서버에 여러 사이트 운영하기 JAESOO 2021.01.02 2
Board Pagination Prev 1 2 3 4 5 6 Next
/ 6

PageViews   Today : 476   Yesterday : 503   Total : 22,259,890  /  Counter Status   Today : 173   Yesterday : 189   Total : 1,825,707
Site Info   Member : 253  /  Total documents : 1,303   New documents : 0  /  Total comments : 26

Edited by JAESOO

sketchbook5, 스케치북5

sketchbook5, 스케치북5

나눔글꼴 설치 안내


이 PC에는 나눔글꼴이 설치되어 있지 않습니다.

이 사이트를 나눔글꼴로 보기 위해서는
나눔글꼴을 설치해야 합니다.

설치 취소