RadarURL
Skip to content
조회 수 2 추천 수 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
번호 분류 제목 글쓴이 날짜 조회 수
공지 [공지] 공부 게시판 입니다. 처누 2003.08.17 829488
2613 년말정산 JaeSoo 2021.01.25 1
2612 윈도우즈 윈도우10 시스템파일 손상 (초간단 오류 복구방법!!) file JaeSoo 2021.01.19 3
2611 소프트웨어 [Synology NAS] 레이 드라이브(RaiDrive)에 연동하여 서버에 쉽게 접근하기 file JaeSoo 2021.01.14 4
2610 윈도우즈 LG 그램 OS 설치 안될때 USB 설치 방법 file JaeSoo 2021.01.13 4
2609 웹서버,WAS [Linux] 아파치(Apache) SSL 인증서 설치 file JaeSoo 2021.01.12 3
2608 웹서버,WAS 리눅스 CentOS 7 HTTPS 리다이렉트 설정 file JaeSoo 2021.01.12 4
» 웹서버,WAS [Apache] SSL 적용하기 / HTTP->HTTPS로 Rewrite하기 file JaeSoo 2021.01.12 2
2606 웹서버,WAS centos 7.x에서 ssl 설치하기 JaeSoo 2021.01.12 4
2605 웹서버,WAS CentOS7 Apache ssl 인증서 적용 그리고 80 to 443 redirect JaeSoo 2021.01.12 2
2604 웹서버,WAS 무료 SSL 보안 인증서 발급받기 (Free SSL Certificate) file JaeSoo 2021.01.12 3
2603 경제 [키움증권 스탑로스 사용법], "자동감시주문 활용, 수익극대화 비법 전격공개" file JaeSoo 2021.01.09 5
2602 웹서버,WAS XE1에서 XE3로 데이터를 이전시킬 수 있을까요? JaeSoo 2021.01.03 5
2601 유닉스/리눅스 CentOS SELinux 설정 및 해제하기 JaeSoo 2021.01.03 5
2600 웹서버,WAS [리눅스][XE]XpressEngine(제로보드) 사용 시, 500 Internal Server Error when using .htaccess with RewriteEngine JaeSoo 2021.01.02 3
2599 데이터베이스 CentOS 7 yum으로 phpMyAdmin 설치 & 권한(permission) 문제 해결 file JaeSoo 2021.01.02 3
2598 웹서버,WAS [리눅스/CentOS 7] PHP7.2 설치(Webtatic) file JaeSoo 2021.01.02 5
2597 웹서버,WAS CentOS 7 PHP / PHP-FPM 7.4 설치 (remi repo) file JaeSoo 2021.01.02 9
2596 웹서버,WAS Apache 403 Forbidden error 해결 방법 file JaeSoo 2021.01.02 5
2595 웹서버,WAS 아파치 Forbidden You don’t have permission to access / on this server. 에러 해결 JaeSoo 2021.01.02 2
2594 웹서버,WAS CentOS-7.9.2009에 APM (Apache 2.4.6, PHP 7.4.13, MariaDB 5.5.68), XpressEngine 3, php 모듈(pdo, cURL, Fileinfo, GD, Mbstring, OpenSSL, Zip PHP) JaeSoo 2021.01.02 3
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 131 Next
/ 131

 

■ 즐겨찾기 - 가족
JAESOO's HOMEPAGE YOUNGAE's HOMEPAGE 장여은 홈페이지 장여희 홈페이지 장여원 홈페이지

■ 즐겨찾기 - 업무
알리카페 홀릭 숭실대 컴퓨터 통신연구실 (서창진) 말레이시아 KL Sentral 한국인 GuestHouse

■ 즐겨찾기 - 취미
어드민아이디 유에코 사랑회 아스가르드 좋은사람/나쁜사람 JServer.kr 제이서버 메타블로그 재수 티스토리

■ 즐겨찾기 - 강의, 커뮤니티
재수 강의 홈페이지 한소리 VTMODE.COM 숭실대 인공지능학과 숭실대 통신연구실


PageViews   Today : 1,080   Yesterday : 1,291   Total : 64,949,089  /  Counter Status   Today : 405   Yesterday : 499   Total : 4,185,893
Site Info   Member : 1,464  /  Total documents : 8,025   New documents : 0  /  Total comments : 563

design by by JAESOO.com

sketchbook5, 스케치북5

sketchbook5, 스케치북5

나눔글꼴 설치 안내


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

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

설치 취소