리눅스 SSL설치 _ Apache_멀티인증서
페이지 정보
작성자
본문
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)을 열기
[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" 모듈이 존재하는지 확인
LoadModule usertrack_module modules/mod_usertrack.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" 명령어로 편집 합니다.
[root@localhost conf]# vi ./extra/httpd-ssl.conf Listen 443 Listen 444 Listen 446 설명 : SSL을 서비스 포트 설정 SSLPassPhraseDialog builtin 설명 : 개인키 패스워드 수동 입력 설정 <VirtualHost _default_:443> 설명 : 호스트 해더 지정 ( 기본 설정 : _default_ ) # General setup for the virtual host DocumentRoot "/usr/local/apache2/htdocs" 설명 : SSL을 설정 할 도메인의 DocumentRoot와 동기화 ServerName www.ucert.co.kr:443 설명 : SSL을 설정 할 도메인의 Domain과 동기화 ServerAdmin ucert@ucert.co.kr 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 SSLCertificateFile /usr/local/apache2/conf/ucert/www.ucert.co.kr.crt 설명 : 발급 받은 파일 중 "인증서 파일"을 지정 SSLCertificateKeyFile /usr/local/apache2/ucert/www.ucert.co.kr.key 설명 : 발급 받은 파일 중 "개인키 파일"을 지정 SSLCertificateChainFile /usr/local/apache2/conf/ucert/www.ucert.co.kr.ca-bundle 설명 : 발급 받은 파일 중 "CA 인증서 파일"을 지정 설명 : SSLCertificateChainFile 에 주석(#)이 있을 경우 주석 해제 <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> * Port기반의 VirtualHost를 추가하여 위와 같이 SSL을 적용 할 도메인에 맞게 설정 합니다. (WildCard Domain 인증서 또는 Multi Domain 인증서는 중복 포트 사용이 가능 합니다.) 설명 : VirtualHost 설정 <VirtualHost *:443> DocumentRoot "/home/ucert_support/" ServerName support.ucert.co.kr:443 ServerAdmin ucert@ucert.co.kr ErrorLog /usr/local/apache2/logs/error_log TransferLog /usr/local/apache2/logs/access_log 설명 : 인증서 설정 SSLEngine on SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL SSLCertificateFile /usr/local/apache2/conf/ucert/start.ucert.co.kr.crt SSLCertificateKeyFile /usr/local/apache2/ucert/start.ucert.co.kr.key SSLCertificateChainFile /usr/local/apache2/conf/ucert/start.ucert.co.kr.ca-bundle <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> 설명 : VirtualHost 설정 <VirtualHost *:443> DocumentRoot "/home/ucert_test/" ServerName test.ucert.co.kr:443 ServerAdmin ucert@ucert.co.kr ErrorLog /usr/local/apache2/logs/error_log TransferLog /usr/local/apache2/logs/access_log 설명 : 인증서 설정 SSLEngine on SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL SSLCertificateFile /usr/local/apache2/conf/ucert/start.ucert.co.kr.crt SSLCertificateKeyFile /usr/local/apache2/ucert/start.ucert.co.kr.key SSLCertificateChainFile /usr/local/apache2/conf/ucert/start.ucert.co.kr.ca-bundle <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! 설명 : 저장 후 종료 |
참고. 개인키 패스워드 자동 입력 설정
#SSLPassPhraseDialog builtin
설명 : 개인키 패스워드 수동 입력 설정
SSLPassPhraseDialog exec:/usr/local/apache2/conf/ucert/pass.sh
설명 : 개인키 패스워드 자동 입력 설정
[root@localhost conf]# vi /usr/local/apache2/conf/ucert/pass.sh
설명 : 패스워드 출력 스크립트 작성 아래 내용을 입력 합니다.
#!/bin/sh
echo 패스워드
설명 : "패스워드"는 발급 받은 패스워드.txt 파일에 저장 되어 있습니다.
:wq!
설명 : 저장 후 종료
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 포트 및 만료일 확인
[root@localhost ~]# netstat -nap | grep httpd tcp 0 0 :::80 :::* LISTEN 19301/httpd tcp 0 0 :::443 :::* LISTEN 19301/httpd 443포트 Listen 된 상태에서 아래의 명령어를 사용하여 로컬에서 인증서를 확인 합니다. [root@localhost ~]# openssl s_client -connect 127.0.0.1:443 | openssl x509 depth=2 C = US, O = GeoTrust Inc., CN = GeoTrust Global CA 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 ~]# openssl s_client -connect localhost:443 < /dev/null 2>&1 | openssl x509 -noout -enddate notAfter=Feb 15 21:38:20 2012 GMT 설명 : 로컬에서 인증서 출력이 정상적이고 외부에서 https://[도메인]으로 브라우저 접속 시 통신이 되지 않을 경우 내부 방화벽(예. iptables), 외부 방화벽 등에 SSL포트가 Allow (또는 웹방화벽에 인증서가 설치가) 되어있는지 확인 합니다. |
댓글목록
등록된 댓글이 없습니다.