현재는 도메인이 없는 상태로 아파치 서버의 SSL/TLS 설정을 진행합니다.
앞서 APM구조 설치가 안되신 분들은 아래 링크를 참고하여 설치를 완료해주세요.
포스팅 목차
1. SSL 모듈 설치
ssl 모듈 설치를 진행.
# mod_ssl 및 OpenSSL 설치
dnf install mod_ssl openssl -y
Apache에서 SSL/TLS를 사용하기 위한 기본 모듈을 설치
2. SSL/TLS 인증서 생성
서버에서 개인키 생성, 인증서 서명 요청, 자체 서명 인증서 생성 작업을 진행합니다.
# 개인키(Private Key) 생성 - TLS 암호화의 기초
openssl genrsa -out /etc/pki/tls/private/server.key 2048
# 인증서 서명 요청(CSR) 생성
openssl req -new -key /etc/pki/tls/private/server.key -out /etc/pki/tls/certs/server.csr -subj "/CN=172.16.117.120"
# 자체 서명 인증서 생성 - TLS 인증서
openssl x509 -req -days 365 -in /etc/pki/tls/certs/server.csr -signkey /etc/pki/tls/private/server.key -out /etc/pki/tls/certs/server.crt
SSL/TLS 인증서 생성 명령어 상세 설명
1. 개인키(Private Key) 생성
openssl genrsa -out /etc/pki/tls/private/server.key 2048
명령어 구성 요소
openssl : OpenSSL 도구 실행
genrsa : RSA 개인키 생성 명령
-out : 출력 파일 지정2048: 키 길이 (비트 단위)
설명
RSA 알고리즘을 사용하여 2048비트 길이의 개인키 생성이 개인키는 SSL/TLS 암호화의 기본이 되는 중요한 파일보안을 위해 엄격한 파일 권한 설정 필요 (chmod 600)
2. 인증서 서명 요청(CSR) 생성
openssl req -new -key /etc/pki/tls/private/server.key -out /etc/pki/tls/certs/server.csr -subj “/CN=172.16.117.120”
명령어 구성 요소
req : 인증서 요청 관련 명령
-new : 새로운 CSR 생성
-key : 사용할 개인키 지정
-out : CSR 출력 파일 지정
-subj : 주체 정보 직접 지정
CN : Common Name (서버 식별자)
설명
CSR은 인증서 발급을 위한 요청 파일서버의 신원 정보를 포함여기서는 IP 주소를 CN으로 사용
3. 자체 서명 인증서 생성
openssl x509 -req -days 365 -in /etc/pki/tls/certs/server.csr -signkey /etc/pki/tls/private/server.key -out /etc/pki/tls/certs/server.crt
명령어 구성 요소
x509 : X.509 인증서 관련 명령
-req : CSR을 처리
-days 365 : 인증서 유효기간 (1년)
-in : 입력 CSR 파일
-signkey : 서명에 사용할 개인키
-out : 출력 인증서 파일
설명
CSR을 기반으로 자체 서명된 인증서 생성1년간 유효한 인증서 생성개인키로 직접 서명 (자체 서명)
생성 후 파일의 권한을 아래와 같이 조정합니다.
( 소유자만 읽기/쓰기 가능, 소유자는 읽기/쓰기 가능 )
3. Apache SSL 설정
/etc/httpd/conf.d/ssl.conf을 편집기로 열어주신 다음에 아래와 같이 인증서 활성화 설정을 적용합니다.
# HTTP에서 HTTPS로 리다이렉션
<VirtualHost *:80>
ServerName 172.16.117.120
Redirect permanent / https://172.16.117.120/
</VirtualHost>
# SSL/TLS 설정
<VirtualHost _default_:443>
ServerName 172.16.117.120
DocumentRoot "/var/www/html"
# SSL/TLS 활성화
SSLEngine on
SSLCertificateFile /etc/pki/tls/certs/server.crt
SSLCertificateKeyFile /etc/pki/tls/private/server.key
# TLS 프로토콜 및 암호화 설정
SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1
SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256
SSLHonorCipherOrder on
<Directory "/var/www/html">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
4. Apache 재시작
위 설정이 끝나면 아파치를 재시작.
systemctl restart httpd
*자체 인증서 사용으로 크롬 브라우저의 경우 “주의요함”이 발생할 수있습니다.
아래 단계에서 실제로 인증서가 적용되었는지 확인을 합니다.
echo | openssl s_client -connect 172.16.117.120:443 2>/dev/null | openssl x509 -noout -dates
인증서 유효기간 해석
시작일(notBefore) : 2024년 11월 26일 12:46:20 GMT
만료일(notAfter) : 2025년 11월 26일 12:46:20 GMT
앞서 생성한 자체 서명 인증서의 유효기간을 보여줍니다.
인증서 생성 시 -days 365 옵션을 사용했기 때문에 1년간 유효한 인증서가 생성되었습니다.