[SSL 설치 가이드] Apache - Single

동영상으로 자세히 살펴보세요.

  동영상 가이드 

 

 

1. Apache 데몬(프로세스) 확인 방법

[root@localhost ~]# ps -ef | grep httpd

root 19403 1 0 05:01 ? 00:00:00 /usr/local/apache2/bin/httpd -k start

daemon 19404 19403 0 05:01 ? 00:00:00 /usr/local/apache2/bin/httpd -k start

daemon 19405 19403 0 05:01 ? 00:00:00 /usr/local/apache2/bin/httpd -k start

daemon 19406 19403 0 05:01 ? 00:00:00 /usr/local/apache2/bin/httpd -k start

daemon 19407 19403 0 05:01 ? 00:00:00 /usr/local/apache2/bin/httpd -k start

daemon 19408 19403 0 05:01 ? 00:00:00 /usr/local/apache2/bin/httpd -k start

root 19538 19479 0 05:56 pts/3 00:00:00 grep httpd

 

 

 

2. Apache 사용 포트 확인

 

 

[root@localhost ~]# netstat -nap | grep httpd

tcp 0 0 :::80 :::* LISTEN 19403/httpd

 

 

 

3. Apache&SSL 환경 설정

1) "vi" 명령어를 사용하여 Apache의 환경파일(httpd.conf)을 열기

RPM 아파치일 경우 주로 /etc/httpd/conf에 httpd.conf이 존재합니다.

 

 

[root@localhost ~]# cd /usr/local/apache2/conf/

[root@localhost conf]# ls

extra httpd.conf magic mime.types original

[root@localhost conf]# vi httpd.conf

 

 

2) Apache 설정 내용 확인

 

 

Listen 80

 

#

# Dynamic Shared Object (DSO) Support

#

# To be able to use the functionality of a module which was built as a DSO you

# have to place corresponding `LoadModule' lines at this location so the

# directives contained in it are actually available _before_ they are used.

# Statically compiled modules (those listed by `httpd -l') do not need

# to be loaded here.

#

# Example:

# LoadModule foo_module modules/mod_foo.so

#

LoadModule authn_file_module modules/mod_authn_file.so

LoadModule authn_dbm_module modules/mod_authn_dbm.so

LoadModule authn_anon_module modules/mod_authn_anon.so

LoadModule authn_dbd_module modules/mod_authn_dbd.so

LoadModule authn_default_module modules/mod_authn_default.so

LoadModule authz_host_module modules/mod_authz_host.so

LoadModule authz_groupfile_module modules/mod_authz_groupfile.so

LoadModule authz_user_module modules/mod_authz_user.so

/ssl

설명 : ssl (단어) 검색

 

 

3) "mod_ssl.so" 모듈이 존재하는지 확인 (1.3.x 버전 아파치일 경우 libssl.so)

 

 

LoadModule usertrack_module modules/mod_usertrack.so

LoadModule unique_id_module modules/mod_unique_id.so

LoadModule setenvif_module modules/mod_setenvif.so

LoadModule version_module modules/mod_version.so

LoadModule ssl_module modules/mod_ssl.so

설명 : "LoadModule ssl_module modules/mod_ssl.so"에 #(주석)이 있을 경우 주석 해제

 

 

# Distributed authoring and versioning (WebDAV)

#Include conf/extra/httpd-dav.conf

 

# Various default settings

#Include conf/extra/httpd-default.conf

 

# Secure (SSL/TLS) connections

Include conf/extra/httpd-ssl.conf

설명 : "Include conf/extra/httpd-ssl.conf" 에 주석(#)이 있을 경우 주석 해제

 

#

# Note: The following must must be present to support

# starting without SSL on platforms with no /dev/random equivalent

# but a statically compiled-in mod_ssl.

#

< IfModule ssl_module>

SSLRandomSeed startup builtin

SSLRandomSeed connect builtin

< /IfModule> 

:wq!

설명 : 저장 후 종료

 

 

4) SSL 환경파일을 "vi" 명령어로 편집 합니다.

RPM 아파치일 경우 주로 /etc/httpd/conf.d에 ssl.conf 이 존재합니다

 

 

[root@localhost conf]# vi ./extra/httpd-ssl.conf

 

Listen 443

설명 : SSL 포로토콜 포트 선언 설정

 

SSLPassPhraseDialog builtin

설명 : 개인키 패스워드 수동 입력 설정

 

NameVirtualHost *:443

설명 : 가상호스트를 관리하기 위한 기본 지시어 선언

 

< VirtualHost *:443> 

설명 : 호스트 해더 지정 ( 기본 설정 : _default_ )

 

# General setup for the virtual host

DocumentRoot "/usr/local/apache2/htdocs" 

설명 : SSL을 설정 할 도메인의 DocumentRoot와 동기화

ServerName www.eznbiz.com:443 

설명 : SSL을 설정 할 도메인의 Domain과 동기화

ServerAdmin service@eznbiz.com

ErrorLog /usr/local/apache2/logs/error_log

TransferLog /usr/local/apache2/logs/access_log

 

# SSL Engine Switch:

# Enable/Disable SSL for this virtual host.

 

SSLEngine on

SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL

Apache는 SSL파일의 확장자에 상관없이 파일 내용만 맞으면 정상적으로 구동됩니다.

SSLCertificateFile /usr/local/apache2/conf/eznbiz/www.eznbiz.com.crt 

설명 : 발급 받은 파일 중 "인증서 파일"을 지정

SSLCertificateKeyFile /usr/local/apache2/eznbiz/www.eznbiz.com.key 

설명 : 발급 받은 파일 중 "개인키 파일"을 지정

SSLCertificateChainFile /usr/local/apache2/conf/eznbiz/ChainBundle.crt 

설명 : 발급 받은 파일 중 "Chain CA인증서 파일"을 지정 

설명 : SSLCertificateChainFile 에 주석(#)이 있을 경우 주석 해제

SSLCACertificateFile /usr/local/apache2/conf/eznbiz/ROOT.crt 

설명 : 발급 받은 파일 중 "ROOT CA인증서 파일"을 지정 

설명 : SSLCACertificateFile 에 주석(#)이 있을 경우 주석 해제

 

< FilesMatch "\.(cgi|shtml|phtml|php)$">

SSLOptions +StdEnvVars

< /FilesMatch>

< Directory "/usr/local/apache2/cgi-bin">

SSLOptions +StdEnvVars

< /Directory>

BrowserMatch ".*MSIE.*" \

nokeepalive ssl-unclean-shutdown \

downgrade-1.0 force-response-1.0

CustomLog /usr/local/apache2/logs/ssl_request_log \

"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"

< /VirtualHost> 

:wq!

설명 : 저장 후 종료

 

 

 

참고설명. 개인키 패스워드 자동 입력 설정

 

 

[root@localhost conf]# vi /usr/local/apache2/conf/eznbiz/pass.sh

설명 : 패스워드 출력 스크립트 작성 아래 2줄의 내용을 입력 합니다

#!/bin/sh

echo 패스워드

설명 : "패스워드"는 발급 받은 패스워드.txt 파일에 저장 되어 있습니다

:wq!

설명 : 저장 후 종료

 

[root@localhost conf]# chmod 700 /usr/local/apache2/conf/eznbiz/pass.sh

설명 : 실행 권한 설정

 

[root@localhost conf]# vi extra/httpd-ssl.conf 

#SSLPassPhraseDialog builtin

설명 : 개인키 패스워드 수동 입력 설정을 주석처리

SSLPassPhraseDialog exec:/usr/local/apache2/conf/eznbiz/pass.sh

설명 : 개인키 패스워드 자동 입력 스크립트 실행 경로 명시

 

 

 

Windows환경의 Apahce웹서버를 사용하시는 경우에는 키 파일의 패스워드가 없어야 정상적으로 구동됩니다.

개인키 패스워드 제거 하기

[root@localhost ssl]# openssl rsa -in [키 파일] -out [새로운 키 파일명]

[패스워드 입력]

 

패스워드 제거 후 키 파일 내용

-----BEGIN RSA PRIVATE KEY-----

VIEaXhX+IZtFw25vfK.............

-----END RSA PRIVATE KEY-----

 

 

 

4. Apache TEST & 재시작

 

 

/usr/local/apache2/bin/apachectl configtest

Syntax OK

설명 : "Syntax OK" 정상 적으로 설정 되었을 경우 나오는 메시지

 

/usr/local/apache2/bin/apachectl stop

/usr/local/apache2/bin/apachectl start

설명 : 2.2.x 버전 ↑(이상)

/usr/local/apache2/bin/apachectl startssl

설명 : 2.0.x 버전 ↓(이하)

 

 

 

5. Apache 포트 및 만료일 확인

 

 

설명 : TCP 443포트 확인

[root@localhost ~]# netstat -nap | grep httpd

tcp 0 0 :::80 :::* LISTEN 19301/httpd

tcp 0 0 :::443 :::* LISTEN 19301/httpd

 

설명 :443포트 Listen 된 상태에서 아래의 명령어를 사용하여 로컬에서 인증서를 확인 합니다

명령어 형식 : openssl s_client -connect [도메인명, 혹은 서버IP]:[SSL 포트] | openssl x509

 

[root@localhost ~]# openssl s_client -connect 127.0.0.1:443 | openssl x509

depth=1 /C=BE/O=GlobalSign nv-sa/CN=GlobalSign Extended Validation CA - SHA256 - G2

verify error:num=20:unable to get local issuer certificate

verify return:0

-----BEGIN CERTIFICATE-----

MIIE2jCCA8KgAwIBAgICD/cwDQYJKoZIhvcNAQEFBQAwPDELMAkGA1UEBhMCVVMx

FzAVBgNVBAoTDkdlb1RydXN0LCBJbmMuMRQwEgYDVQQDEwtSYXBpZFNTTCBDQTAe

Fw0xMDEyMTQxMDQ4NTlaFw0xMjAyMTUyMTM4MjBaMIHlMSkwJwYDVQQFEyBrdW9u

SXgyYmI0a0lxZGpvWWE1bklYQWRxNVl6dG9RUDELMAkGA1UEBhMCS1IxGDAWBgNV

BAoTD3d3dy51Y2VydC5jby5rcjETMBEGA1UECxMKR1Q1NDc2OTQxMDExMC8GA1UE

CxMoU2VlIHd3dy5yYXBpZHNzbC5jb20vcmVzb3VyY2VzL2NwcyAoYykxMDEvMC0G

A1UECxMmRG9tYWluIENvbnRyb2wgVmFsaWRhdGVkIC0gUmFwaWRTU0woUikxGDAW

BgNVBAMTD3d3dy51Y2VydC5jby5rcjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC

AQoCggEBAMl6qA1dEc/FKw2qSjlh0iZDVGp+zqjBXW/iwkcnEZCzy/wxauh85OwM

G4TZ2FhJQabssuyVocWJGE/Fq3sO6U6lYZwycUKWN45sZTLGhdCbC0ZSb0OUq7tx

A8pDSqH/2/kG8a/Yfn8zGmXgsWi5swgfPKIa7dcmnmglA1x4YDquo0npWMizgt2z

mqQcuY5S/QKCDZo5Ee1BXaS4D7ZHiXzw5W9sDtsqo1nO37gLHTpNhIQrYnzN4ay7

l0FHLxiwEi2O/gndd4Z4/Rr0loFTdemStSPQlIRTag/+8/tMo+BoxHmPFTuWyNAb

MShN1eti+c0qWGsHigjvXMWtyg0NT4UCAwEAAaOCATowggE2MB8GA1UdIwQYMBaA

FGtpPWoYQkrdjwJlOf01JIZ4kRYwMA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAU

BggrBgEFBQcDAQYIKwYBBQUHAwIwJwYDVR0RBCAwHoIPd3d3LnVjZXJ0LmNvLmty

ggt1Y2VydC5jby5rcjBDBgNVHR8EPDA6MDigNqA0hjJodHRwOi8vcmFwaWRzc2wt

Y3JsLmdlb3RydXN0LmNvbS9jcmxzL3JhcGlkc3NsLmNybDAdBgNVHQ4EFgQUkHru

EM3YsHLS8SjMWr7kBkyKu/YwDAYDVR0TAQH/BAIwADBJBggrBgEFBQcBAQQ9MDsw

OQYIKwYBBQUHMAKGLWh0dHA6Ly9yYXBpZHNzbC1haWEuZ2VvdHJ1c3QuY29tL3Jh

cGlkc3NsLmNydDANBgkqhkiG9w0BAQUFAAOCAQEAcjR0KR5MnA8gJFhZ4GRHSfvD

N2WX88pZPtE0BlEOU18HLLg8xL5Bb8exvX5+sExHS9zasRHUIPAYpwALSf4/WP7M

96ZMAEAggR9Dt8pCyFO7QXgkB3QQ7EsEK+s01wSWxMN5/ZcSV7O0k/DF83DH118x

/DFVeGNJsbwC0BEzVe/HnmBo77dxCdG+M16R59s2BjEr9Lq9sNnnE3drqs51qrs+

T0CyUWSpZ9KhlwjcLCMKe/SY8WIXIYaAx+IqJ7XJQU+GV1AJP3zHldhngL7eMMFo

ROpAHbjfkI0XboRtTAVs0K46omCAA4JViVF1DDKaXPZ+swif4GlzY/ijwPLDkA==

-----END CERTIFICATE-----

 

설명 : 인증서 시작과 만료일 확인

[root@mail ~]# echo "" | openssl s_client -connect localhost:443 | openssl x509 -noout -dates

notBefore=Jun 30 11:16:09 2016 GMT      인증서 시작일

notAfter=Sep 12 10:58:54 2017 GMT       인증서 만료일

 

설명 : 만료일만 확인

[root@mail ~]# openssl s_client -connect localhost:443 < /dev/null 2>&1 | openssl x509 -noout -enddate

notAfter=Sep 12 10:58:54 2017 GMT

 

설명 : 로컬에서 인증서 출력이 정상적이고 외부에서 https://[도메인]으로 브라우저 접속 시 통신이 되지 않을 경우 내부 방화벽(예. iptables), 외부 방화벽, 웹방화벽 등에 해당 SSL포트가 Allow 되어있는지 확인하고, 또는 웹방화벽에 인증서가 설치가 되어야 하는지 확인하시고 필요하시면 웹방화벽에도 인증서를 설치합니다.  

 

< 목록으로

이지앤비즈 원격지원 프로그램 다운로드

X

이지앤비즈 원격지원

고객님의 PC에 원격접속하여 문제를 신속히 해결해 드립니다.

1

원격지원 클라이언트 프로그램을
다운로드 후 실행한다. (KPOST_QS.exe)

원격지원 다운로드 Windows용 클라이언트 Mac용 클라이언트

다운로드 후 실행이 안 되는 고객님은 고객센터 1522-4693로 문의주시기 바랍니다.

2

원격지원 클라이언트 프로그램을
다운로드 후 실행한다. (KPOST_QS.exe)

원격지원

TOP