Apache SSL/TLS 설정 (IP기반)

현재는 도메인이 없는 상태로 아파치 서버의 SSL/TLS 설정을 진행합니다.

앞서 APM구조 설치가 안되신 분들은 아래 링크를 참고하여 설치를 완료해주세요.


1. SSL 모듈 설치

ssl 모듈 설치를 진행.

# mod_ssl 및 OpenSSL 설치
dnf install mod_ssl openssl -y

Apache에서 SSL/TLS를 사용하기 위한 기본 모듈을 설치

SSL 모듈 설치

2. SSL/TLS 인증서 생성

서버에서 개인키 생성, 인증서 서명 요청, 자체 서명 인증서 생성 작업을 진행합니다.

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년간 유효한 인증서가 생성되었습니다.

인증서 적용확인.
인증서 확인

By Low ahn

리눅스를 처음 접하시는 분들은 위한 다양한 리눅스 정보를 공유합니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다