System/CentOS | Ubuntu

[CentOS 6] Apache - SSL 설정

jykim23 2019. 7. 10. 11:49

Apache_ssl 설정


ssl(secure sockets layer) 이란? 

더보기

 SSL은 인터넷 상거래에 필요한 개인정보를 보호하기 위한 개인정보 유지 프로토콜입니다. 인터넷 프로토콜이 보안면에서 기밀성을 유지하지 못한다는 문제를 극복하기 위해, 테리사(Terrisa)가 개발해 넷스케이프(Netscape)가 Netscape와 NetSite의 암호화 중심 프로토콜로 사용하고 있다.

apache 서버에서 ssl 통신을 하기 위해서는 openssl 모듈이 적용되어있어야 하는데 atachectl -l 옵션을 사용하여 mod_ssl.so 모듈이 있는지 확인하고 없을경우 설치해줘야 하는데, httpd 2.0 이상 버전의 경우 mod_ssl 모듈이 포함되어있으므로 configure을 해준다.

 

Apache 설치

 

Static 방식과 DSO방식 2가지로 구분됩니다.

Static은 특정 모듈 추가시 매번 재설치해야 하지만
DSO방식은 재설치 필요 없이 모듈만 추가시킵니다.

 

 

 

순서

 

환경 설정

key, csr, crt 생성

key, crt 등록

apache 재가동

사이트 확인

 

 

 

  • 환경 설정

# vi /home/httpd/conf/httpd.conf

주석 해제

ssl 관련 모듈 사용을 위해 주석을 해제합니다.

 

 

주석 해제

 

vhosts 사용을 위한 주석도 해제합니다.

 

 

 

 

mkdir ssl

디렉토리 생성

ssl 관련 파일을 저장할 디렉터리를 생성합니다.

 

 

 

방화벽 설정 (80, 443)

방화벽 추가

인증서 사용을 위해 포트 TCP 443을 개방합니다.

 

 

 

 

  • key, csr, crt 생성

key 생성

csr 생성

crt 생성

 

# vi /home/httpd/conf/extra/httpd-ssl.conf

 

 

개인키 생성

key 생성

Openssl 명령어를 이용하여 웹서버의 RSA 키( 2048비트 암호화 )를 생성합니다. 

 

 

 

인증 요청서 생성

csr 생성

 

 

생성 확인

CSR ( Certificate Signing Request ) 이란? 

더보기

SSL 서버를 운영하는 회사의 정보를 암호화하여 인증기관으로 보내 인증서를 발급받게 하는 일종의 신청서입니다. 
CSR은 ASCII 텍스트 파일로 생성됩니다. 
CSR을 생성할 때 서버의 식별명을 입력하게 됩니다. 식별명은 각 서버를 공유하게 나타내는 이름으로 다음과 같은 정보를 포함합니다. 

Country Name ( 국가코드) [] : KR
State or Province Name ( 지역 ) [] : Seoul
Locality Name ( 시/군/구 ) [] : Junglang 
Organization Name ( 회사명 ) [] : kjy 
Organizational Unit Name ( 부서명 ) [] : service team
Common Name ( 서비스 도메인명 ) [] : www.kimjy.com
Email Address [] : admin@kimjy.com

CSR 항목에 대한 설명

Country Name : 이것은 두 자로 된 ISO 형식의 국가 코드입니다. 
State or Province Name : 시 이름을 입력해야 하며 약어를 사용할 수 없습니다. 
Locality Name : 이 필드는 대부분의 경우 생략이 가능하며 업체가 위치한 곳을 나타냅니다. 
Organization : 사업자 등록증에 있는 회사명과 일치되는 영문회사명을 입력하시면 됩니다. 
Organization Unit : "리눅스 관리팀", "윈도우 관리팀" 등과 같이 업체의 부서를 입력할 수 있습니다. 
Common Name : 인증받을 도메인주소를 입력하시면 됩니다.

이 정보로 웹 사이트를 식별하므로 호스트 이름을 변경할 경우 다른 디지털 ID를 요청해야 합니다. 
호스트에 연결하는 클라이언트 브라우저가 디지털 ID의 이름과 URL이 일치하는지를 확인합니다. 

CSR 항목 입력시 주의사항
* Common Name 에는 인증서를 설치할 사이트의 도메인의 이름을 정확하게 입력하셔야 합니다.
* Common Name 에는 IP 주소, 포트번호, 경로명, http:// 나 https:// 등은 포함할 수 없습니다.
* CSR 항목에는 < > ~! @ # $ % ^ * / \ ( )? 등의 특수 68 문자를 넣을 수 없습니다.
* CSR 생성후 서버에 개인키 (Private Key)가 생성됩니다. 개인키를 삭제하거나 분실할 경우 인증서를 발급받아도 설치가 불가합니다. 따라서 꼭 개인키를 백업받아 두셔야 합니다.
* 정보입력과정 마지막에 나오는 A challenge password와 An optional company name 두 항목은 입력하지 마시고 Enter 만 누르고 넘어가야 합니다. 두 정보가 입력될 경우 잘못된 CSR 생성될 수 있습니다.

 

 

 

 

인증서 생성

crt 생성

 

# openssl x509 -req -days 365 -in kimjy.csr -signkey kimjy.key -out kimjy.crt

사설 인증서 365일 생성

 

나중에 SSL 갱신할때 기존 crt 파일을 백업하고 위 방법으로 crt 파일을 재생성합니다.

 

 

 

 

  • key, crt 등록

# vi /home/httpd/conf/extra/httpd-ssl.conf

SSLCertificateFile "/home/httpd/conf/ssl/kimjy.crt" 
SSLCertificateKeyFile "/home/httpd/conf/ssl/kimjy.key"

생성한 crt, key값을 경로와 함께 추가합니다.

 

 

 

 

 

 

 

  • Apache, Iptables 재가동

 

Apache 재가동

# /home/httpd/bin/apachectl stop

# /home/httpd/bin/apachectl start

 

 

shmcb error

당황...하셨어요?

오류 내용 확인합니다.

 

# vi /home/httpd/conf/httpd.conf

해당 모듈 주석 해제

해당 모듈 주석 해제하여 모듈을 사용합니다. Apache 재가동합니다.

 

 

방화벽 재가동

# service iptables restart

 

 

 

  • 사이트 확인

https://서버IP

 

사설 인증서 사용으로 경고창이 뜹니다.

 

 

 

 

성-공

 

 

SSL 구성을 마무리하겠습니다.