본문 바로가기

OS-서버/리눅스-유닉스

리눅스 웹 서버 https 설정하기

반응형



인터넷에 이런 저런 사이트 돌아다니다가
"이 사이트는 안전하지 않습니다." 라는 문구를 마주한 적이 있을 것이다.



https를 사용하려면 Kisa, GeoTrust, Verisign, Digicert와 같은 공인 SSL 인증서 발급기관에서
인증서를 발급받은 후 서버에 적용시켜야 한다. 

저러한 문구가 나온다는 것은 SSL 인증서 등록 과정을 거치지 않은 것이다.


https를 사용하는 기술적인 이유는
http는 통신할 때 데이터를 평문으로 주고받는데
https를 사용하면 통신 데이터가 암호화되어 내용을 읽을 수 없으므로
보안적인 측면에서 사용을 권장하고 있다.
하지만 이 기술이 악용되는 경우도 상당히 많다.
대부분의 불법 사이트는 HTTPS를 사용하는데 이는
데이터 통신이 암호화로 이루어져 단속이 힘든점을 이용한 것이다.

아무튼 서론은 제쳐두고 본인이 운영하고자 하는 웹 서버에
https를 적용하려면 인증서를 발급해야 한다.
키를 발급받는 것은 인증서 암호화해서
안전하게 보관하려고 하는 이유다.

필자는 리눅스 - CentOS 7.0.1406 (Core)에서 

HTTPS 구축 실습을 진행했다.
실제 공인인증서를 발급받으려면 최소 10만원은 들기 때문에 

돈이 들지 않는 사설 인증서(자체 인증서)로 만들어 보겠다.
사설 인증서로 만들면 보안 인증서에 문제가 있다고 뜨는데

https 환경 구축을 목표로 두는 것이므로 실습하는 것에 의미를 두자. 



순서는 다음과 같다.

openssl 패키지 설치

yum -y install openssl 


키를 생성할 위치로 이동한다.

cd /etc/pki/tls/certs/


키를 생성한다.

openssl genrsa -out http.key 2048

➽ 옵션
버전 = genrsa
키 생성 = out
키 이름(원하는 대로) = http.key
키 비트수 = 2048


인증서(CSR)를 만든다.

openssl req -new -key http.key -out http.csr

Country Name (2 letter code) [XX]: 국가코드(kr)
State or Province Name (full name) []: 시 이름(Seoul)
Locality Name (eg, city) [Default City]: 시/군/구(Ansan)
Organization Name (eg, company) [Default Company Ltd]:회사명(jcompany)
Organizational Unit Name (eg, section) []: 부서명(mod)
Common Name (eg, your name or your server's hostname) []: 서비스 도메인명(www.abc.com)
Email Address []:이메일 주소 (abcd@naver.com)

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

마지막에 나오는 A challenge password 와 An optional company name
두 항목은 입력하지 않고 Enter 만 눌러 넘어간다.
두 정보가 입력될 경우 잘못된 CSR이 생성될 수 있다.


키와 인증서를 합친다.

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

-days 365는 SSL 인증서 유효기간을 365일로 한다는 뜻이다.


ssl 모듈을 설치한다.

yum -y install mod_ssl


ssl 파일을 설정한다.
vim /etc/httpd/conf.d/ssl.conf


 59번 째 줄 주석을 해제한다.



100,107번 째 줄 각각 인증서 파일과 키 파일 경로를 지정해준다.


웹 서버 데몬을 재시작한다.

systemctl restart httpd



서비스 상태와 포트를 점검한다.

netstat -natlp | grep httpd

lsof -i tcp:443

 

반응형