본문 바로가기
IT Info/Linux

Linux 아파치(httpd) yum 설치 및 SSL 적용 방법 [RHEL, CentOS]

by Myste.Lee 2020. 10. 19.
728x90

간혹 대뜸 아차피 Web 서버에 SSL 인증서를 적용해달라는 요청을 받을 때가 있다

이때 참고하려고 간단하게 작성해본다

 

순서

1. 서버 개인키 생성

2. CSR(Certificate Signing Request) 인증서 생성 (요청서 일종의 인증서 생성 양식)

3. 서버 개인키와 CSR을 통해 CRT 인증서를 생성

4. 아파치 웹서버(httpd)에 적용

 

*실제 On-Site에서는 인증서를 생성하지 않은 실제 공인 인증서를 적용하니 3번 항목은 필요 없다

 

서버 개인키 생성

openssl genrsa -des3 -out private.key 2048    /   개인키 암호 입력

*이후 암호를 제거하여 키 사용 시에 암호를 묻지 않도록 한다 (용량이 조금 줄어든다)

CSR 생성

openssl req -new -key private.key -out CSR_Template.csr

*나머진 상관 없으나 Common Name은 도메인 명으로 주의해서 작성한다, 마지막 3개 항목은 공란 처리해도 무관

 

SSL 인증서 생성

openssl x509 -req -days 365 -in CSR_Template.csr -signkey private.key -out ssl.crt

아파치(httpd) 적용 - 컴파일 버전이 아닌 yum 설치했으므로 설정 경로를 다를 수 있음

*yum install httpd mod_ssl 설치

 

vi /etc/httpd/conf/httpd.conf 수정

*SELinux 설정 때문에 오류 발생 시

cat /var/log/messages 보면 파일이 없는 것처럼 오류를 뿜는데 그건 SELinux 설정 때문이다 (끄는 거 싫엉)

SSLCertificateFile: file '/SSL/ssl.crt' does not exist or is empty

SSLCertificateFile: file '/SSL/private.key' does not exist or is empty

chcon -t cert_t /SSL/private.key

-rw-r--r--. root root unconfined_u:object_r:default_t:s0 private.key

-rw-r--r--. root root unconfined_u:object_r:cert_t:s0 private.key

chcon -t cert_t /SSL/ssl.crt

-rw-r--r--. root root unconfined_u:object_r:default_t:s0 ssl.crt

-rw-r--r--. root root unconfined_u:object_r:cert_t:s0 ssl.crt

 

정상 동작 확인 방법

1. netstat -tnlp

2. Web Page

3. curl https://testlocal.net -k (-k옵션은 사설인증서이기 때문에 사용)

 

#요약

1. openssl genrsa -des3 -out private.key 2048 (암호 입력)

2. openssl req -new -key private.key -out CSR_Template.csr

3. openssl x509 -req -days 365 -in CSR_Template.csr -signkey private.key -out ssl.crt

4. /etc/httpd/conf/httpd.conf 수정

 

*주의* 방화벽 허용(80, 443), SELinux 설정(끄지 말고 옵션 허용)

 

##내용 추가##

CSR 생성 시 SAN(Subject Alt Name) DNS 추가 요청이 있을 때 추가하는 방법

RHEL, CentOS 7 기준 /etc/pki/tls/openssl.cnf 수정하는 방법 또는 별도의 .cnf 파일을 만들어 참조하도록 할 수 있다

 

[ req ]

req_extensions = req_ext 추가

적당한 곳에 아래 항목 추가 [ usr_cert ] 항목 윗줄이 좋음.. 중간쯤에 넣으면 에러남 스크립트 실행 시 위쪽부터 수행 되어 그런듯...

[ req_ext ]
subjectAltName = @alt_names
[alt_names]
DNS.1 = NameserverAddress

DNS.2 = NameserverAddress

DNS.3 = NameserverAddress

 

 

동일하게 CSR 생성 후 확인해본다

openssl req -in CSR_Template.csr -noout -text

 

728x90

댓글