[Apache 2.x] (CentOS 6.8) 에 SSL 인증서 적용 > 기술자료 | 해피정닷컴

[Apache 2.x] (CentOS 6.8) 에 SSL 인증서 적용 > 기술자료

본문 바로가기

사이트 내 전체검색

[Apache 2.x] (CentOS 6.8) 에 SSL 인증서 적용 > 기술자료

Linux [Apache 2.x] (CentOS 6.8) 에 SSL 인증서 적용

페이지 정보


본문

Ⅰ. Apache 2.x에 대한 인증서 서명 요청(CSR) 생성

1. 서버의 터미널(SSH)에 로그인합니다.


2. 프롬프트에 다음 명령을 입력합니다.
[root@localhost /] cd /etc/pki/tls/private
[root@localhost /] openssl req -new -newkey rsa:2048 -nodes -keyout yourdomain.com.key -out yourdomain.com.csr
Generating a 2048 bit RSA private key
................+++
..................................................................................................+++
writing new private key to 'yourdomain.com.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) []:Seoul
Locality Name (eg, city) [Default City]:Gurogu
Organization Name (eg, company) [Default Company Ltd]:MyCompanyName
Organizational Unit Name (eg, section) []:DepartmentName
Common Name (eg, your name or your server's hostname) []:yourdomain.com
Email Address []:yourmail@yourdomain.com

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:비밀번호
An optional company name []:

i. Country Name (2 letter code) [XX]
   국가: 조직이 법적으로 등록된 국가의 국제 표준화 기구(ISO) 형식의 2자리 국가 코드.
ii. State or Province Name (full name) []:
   주 또는 도: 조직이 위치한 주 또는 도의 이름. 줄여쓰지 마십시오.
iii. Locality Name (eg, city) [Default City]
   도시 또는 지역: 조직이 등록되거나 위치한 도시의 이름. 줄여쓰지 마십시오.
iv. Organization Name (eg, company) [Default Company Ltd]
   조직: 법적으로 등록된 회사 이름. 개인으로 등록하는 경우 인증서 요청자의 이름을 입력합니다.
v. Organizational Unit Name (eg, section) []
   팀명 또는 부서 <영문:Web Service Team>
vi. Common Name (eg, your name or your server's hostname) [] 
    서비스 도메인명 <도메인명: happyjung.com >
    와일드카드 인증서를 요청하는 경우 와일드카드가 필요한 일반 이름의 왼쪽에 별표(*)를 추가합니다.
    예: *.coolexample.com.
vii. Email Address []
    도메인소유자 이메일 <이메일: admin@yourdomain.com >
viii. A challenge password []:
     SSL에 대해 암호를 입력하지 않으려면 암호 필드를 비워두십시오. 하지만 더 위험할 수도 있습니다.


3. 텍스트 편집기에서 yourdomain.com.csr 을 열고 모든 텍스트를 복사합니다.


4. 복사한 CSR를 SSL 발급업체의 지정된 CSR 입력창에 붙여넣습니다.


5. SSL 인증서 파일 및 인증서 번들 파일을 Apache 서버에 복사합니다. 
업로드경로 : /etc/pki/tls/certs/



Ⅱ. SSL 설정

1. Apache 버전 확인
[root@localhost /]# httpd -v
Server version: Apache/2.2.15 (Unix)
Server built:   ...


2. 암호화 모듈 설치 확인
[root@localhost /]# httpd -l
Compiled in modules:
  core.c
  prefork.c
  http_core.c
  mod_so.c


3. Apache 버전에 따른 SSL 설정파일

3-1. Apache 1.x 일때
[root@localhost /]# find / -name httpd.conf -print
/etc/httpd/conf/httpd.conf


3-2. Apache 2.x 일때
[root@localhost /]# find / -name ssl.conf -print
/etc/httpd/conf.d/ssl.conf


3-3. Apache 2.2.x 일때
[root@localhost /]# find / -name httpd-ssl.conf -print



4. SSL 인증파일을 서버에 업로드 합니다.
/etc/pki/tls/certs/*.crt
/etc/pki/tls/private/도메인.csr
/etc/pki/tls/private/도메인.key


5. ssl.conf 설정 수정
Apache 버전 2.4.8 미만
지시문 입력할 경로
SSLCertificateFile 인증서 파일 경로
SSLCertificateKeyFile 키 파일 경로
SSLCertificateChainFile 중간 번들 경로
 
Apache 버전 2.4.8 이상
지시문 입력할 경로
SSLCertificateFile 인증서 파일 경로
SSLCertificateKeyFile 키 파일 경로
SSLCACertificatePath 중간 번들 경로


[root@localhost /]# vi /etc/httpd/conf.d/ssl.conf

5-1. 도메인주소
#DocumentRoot "/var/www/html"
#ServerName www.example.com:443
를 변경
DocumentRoot "/home/happyjung/public_html"
Servernqame www.happyjung.com:433


5-2. 인증서 파일 경로
SSLCertificateFile /etc/pki/tls/certs/localhost.crt
를 변경
#SSLCertificateFile /etc/pki/tls/certs/localhost.crt
SSLCertificateFile /etc/pki/tls/certs/도메인.crt


5-3. 키 파일 경로
SSLCertificateKeyFile /etc/pki/tls/private/localhost.key
를 변경
#SSLCertificateKeyFile /etc/pki/tls/private/localhost.key
SSLCertificateKeyFile /etc/pki/tls/private/도메인.key


5-4. 중간 번들 경로
#SSLCertificateChainFile /etc/pki/tls/certs/server-chain.crt
를 변경
#SSLCertificateChainFile /etc/pki/tls/certs/server-chain.crt
SSLCertificateChainFile /etc/pki/tls/certs/gd_bundle-g2-g1.crt   # GoDaddy 에서 제공하는 번들


5-6. 인증암호 경로지정
SSLPassPhraseDialog  builtin
를 변경
#SSLPassPhraseDialog  builtin
SSLPassPhraseDialog exec:/etc/httpd/conf.d/ssl.pass



6. ssl 실행암호 파일 만들기
위에서 SSLPassPhraseDialog 설정을 추가했었는데 거기서 지정한 파일을 다음과 같이 만든다.
#!/bin/sh
echo "암호"

즉 이 파일을 실행하면 암호가 입력되도록 하는 것입니다. 
이 파일 만든 다음에 꼭 실행 권한을 줍니다. 그래야 httpd가 이 파일을 실행해서 암호를 입력 받습니다.
그렇지 않으면 httpd가 작동하지 않습니다.
[root@localhost /]# chmod 755 /etc/httpd/conf.d/ssl.pass



7. 문법오류 검사
[root@localhost /]# /etc/init.d/httpd configtest
Syntax OK

[root@localhost /]# /usr/sbin/httpd -S
VirtualHost configuration:
wildcard NameVirtualHosts and _default_ servers:
_default_:443          localhost (/etc/httpd/conf.d/ssl.conf:74)
*:80                   is a NameVirtualHost
         default server happyjung1.com (/etc/httpd/conf/httpd.conf:1012)
         port 80 namevhost happyjung1.com (/etc/httpd/conf/httpd.conf:1012)
                 alias www.happyjung1.com
         port 80 namevhost happyjung2.com (/etc/httpd/conf/httpd.conf:1019)
                 alias www.happyjung2.com
Syntax OK


8. Apache 재시작
[root@localhost /]# service httpd restart


9. SSL 포트가 정상작동하는지 확인
[root@localhost /]# netstat -na | grep 443
tcp        0      0 :::443                      :::*                        LISTEN     


10. apache 에서 모든 URL을 강제로 https 로 변경 ( Redirect Request to SSL )
VirtualHost 설정 내용에  Redirect 내용 명령어 추가
[root@localhost /]# vi /etc/httpd/conf/httpd.conf 
<VirtualHost *:80>
    DocumentRoot /home/happyjung/public_html
    ServerName happyjung.com
    ServerAlias www.happyjung.com
    ErrorLog logs/happyjung.com-error_log
    CustomLog logs/happyjung.com-access_log combined
    <IfModule mod_rewrite.c>
        RewriteEngine On
        RewriteCond %{HTTPS} off
        RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R,L]
    </IfModule>

</VirtualHost>


11. SSL VirtualHost 추가 ... <향후 테스트후 내용 수정예정>
<VirtualHost _default_:443>
DocumentRoot "/var/www/html"
ServerName www.example.com

ErrorLog logs/ssl_error_log
TransferLog logs/ssl_access_log
LogLevel warn

#   SSL Engine Switch:
SSLEngine on

#   SSL Protocol support:
SSLProtocol all -SSLv2

#   SSL Cipher Suite:
SSLCipherSuite DEFAULT:!EXP:!SSLv2:!DES:!IDEA:!SEED:+3DES

#   Server Certificate:
SSLCertificateFile /etc/pki/tls/certs/localhost.crt

#   Server Private Key:
SSLCertificateKeyFile /etc/pki/tls/private/localhost.key

#   Server Certificate Chain:
SSLCertificateChainFile /etc/pki/tls/certs/server-chain.crt

#   Certificate Authority (CA):
#SSLCACertificateFile /etc/pki/tls/certs/ca-bundle.crt

#   Client Authentication (Type):
#SSLVerifyClient require
#SSLVerifyDepth  10

#   Access Control:
#<Location />
#SSLRequire (    %{SSL_CIPHER} !~ m/^(EXP|NULL)/ \
#            and %{SSL_CLIENT_S_DN_O} eq "Snake Oil, Ltd." \
#            and %{SSL_CLIENT_S_DN_OU} in {"Staff", "CA", "Dev"} \
#            and %{TIME_WDAY} >= 1 and %{TIME_WDAY} <= 5 \
#            and %{TIME_HOUR} >= 8 and %{TIME_HOUR} <= 20       ) \
#           or %{REMOTE_ADDR} =~ m/^192\.76\.162\.[0-9]+$/
#</Location>

#   SSL Engine Options:
#SSLOptions +FakeBasicAuth +ExportCertData +StrictRequire
<Files ~ "\.(cgi|shtml|phtml|php3?)$">
    SSLOptions +StdEnvVars
</Files>
<Directory "/var/www/cgi-bin">
    SSLOptions +StdEnvVars
</Directory>

#   SSL Protocol Adjustments:
SetEnvIf User-Agent ".*MSIE.*" \
         nokeepalive ssl-unclean-shutdown \
         downgrade-1.0 force-response-1.0

#   Per-Server Logging:
CustomLog logs/ssl_request_log \
          "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"

</VirtualHost>


관련사이트
http://www.comodossl.co.kr/Certificate/InstallGuide/Apache.htm
한국정보보호진흥원 : 보안서버 구축가이드 
https://kr.godaddy.com/help/apachecentos-ssl-5238
http://whiteship.me/?p=13580
http://verynyang.tistory.com/1
https://www.happyjung.com/lecture/1355 
[한국전자인증] Apache Server 인증서 설치(2011).pdf
http://whiteship.me/?p=13580 
http://www.cyberciti.biz/faq/warn-_default_-virtualhost-overlap-port80-first-hasprecedence/
https://kr.godaddy.com/help/csr-apache-2x-5269 
https://kr.godaddy.com/help/apachecentos-ssl-5238
http://blog.naver.com/ncloud24/220713966597 
http://taesachi.com/?p=6 

댓글목록

등록된 댓글이 없습니다.


Total 2,634건 87 페이지
  • RSS
기술자료 목록
914
ClassicASP   13888  2010-07-22 20:28  
913
일반   24018  2010-07-22 16:57  
912
일반   18949  2010-07-22 10:16  
911
MySQL   14909  2010-07-21 21:48  
910
PHP   21659  2010-07-21 21:47 ~ 2024-03-22 08:47  
909
일반   22460  2010-07-19 10:00 ~ 2010-08-10 00:00  
908
PHP   21972  2010-07-10 15:48 ~ 2021-01-03 22:59  
907
Linux   18213  2010-07-09 10:22 ~ 2017-08-02 00:00  
906
일반   22620  2010-07-08 22:56  
905
일반   12432  2010-07-06 17:28  
904
일반   15472  2010-07-06 16:59  
903
Editor   18794  2010-06-28 18:03 ~ 2017-11-08 17:56  
902
일반   41072  2010-06-26 10:44  
901
WindowsServer   19680  2010-06-21 20:29 ~ 2016-01-26 00:00  
열람
Linux   34514  2010-06-21 20:29 ~ 2017-04-11 00:00  
899
ClassicASP   16256  2010-06-20 03:23 ~ 2013-06-14 00:00  
898
Linux   12004  2010-06-19 09:55  
897
일반   17319  2010-06-16 15:50  
896
일반   10151  2010-06-16 10:33  
895
JavaScript   20789  2010-06-12 11:55  

검색

해피정닷컴 정보

회사소개 회사연혁 협력사 오시는길 서비스 이용약관 개인정보 처리방침

회사명: 해피정닷컴   대표: 정창용   전화: 070-7600-3500   팩스: 042-670-8272
주소: (34368) 대전시 대덕구 대화로 160 대전산업용재유통단지 1동 222호
개인정보보호책임자: 정창용   사업자번호: 119-05-36414
통신판매업신고: 제2024-대전대덕-0405호 [사업자등록확인]  
Copyright 2001~2024 해피정닷컴. All Rights Reserved.