웹사이트 검색

RHCE 시리즈: Apache용 NSS(네트워크 보안 서비스)를 사용하여 TLS를 통해 HTTPS 구현 - 8부


웹 서버의 유지 관리 및 보안을 담당하는 시스템 관리자라면 서버에서 제공되거나 서버를 통해 전달되는 데이터가 항상 보호되도록 최선을 다하지 않을 수 없습니다.

웹 클라이언트와 서버 간의 보다 안전한 통신을 제공하기 위해 HTTPSSL의 조합으로 HTTPS 프로토콜이 탄생했습니다( SSL(Secure Sockets Layer)) 또는 최근에는 TLS(전송 계층 보안)입니다.

일부 심각한 보안 위반으로 인해 SSL은 더 이상 사용되지 않고 보다 강력한 TLS로 대체되었습니다. 이러한 이유로 이 문서에서는 TLS를 사용하여 웹 서버와 클라이언트 간의 연결을 보호하는 방법을 설명합니다.

이 튜토리얼에서는 Apache 웹 서버를 이미 설치하고 구성했다고 가정합니다. 그렇지 않은 경우 계속 진행하기 전에 이 사이트의 다음 문서를 참조하십시오.

  1. RHEL/CentOS 7에 LAMP(Linux, MySQL/MariaDB, Apache 및 PHP) 설치

OpenSSL 및 유틸리티 설치

먼저, Apache가 실행 중이고 httphttps가 모두 방화벽을 통과하도록 허용되는지 확인하세요.


systemctl start http
systemctl enable http
firewall-cmd --permanent –-add-service=http
firewall-cmd --permanent –-add-service=https

그런 다음 필요한 패키지를 설치하십시오.


yum update && yum install openssl mod_nss crypto-utils

중요: mod_nssmod_ssl로 바꾸려면 위 명령을 사용하세요. TLS를 구현하기 위한 NSS(네트워크 보안 서비스) 대신 >OpenSSL 라이브러리(사용할 항목은 전적으로 사용자에게 달려 있음) 하지만 이 기사에서는 더 강력한 NSS를 사용합니다. 예를 들어 PKCS #11과 같은 최신 암호화 표준을 지원합니다.

마지막으로 mod_nss를 사용하기로 선택한 경우 mod_ssl을 제거하거나 그 반대의 경우도 마찬가지입니다.


yum remove mod_ssl

NSS(네트워크 보안 서비스) 구성

mod_nss가 설치된 후 기본 구성 파일이 /etc/httpd/conf.d/nss.conf로 생성됩니다. 그런 다음 모든 ListenVirtualHost 지시문이 포트 443(HTTPS의 기본 포트)을 가리키는지 확인해야 합니다.


Listen 443
VirtualHost _default_:443

그런 다음 Apache를 다시 시작하고 mod_nss 모듈이 로드되었는지 확인하세요.


apachectl restart
httpd -M | grep nss

다음으로 /etc/httpd/conf.d/nss.conf 구성 파일을 다음과 같이 편집해야 합니다.

1. NSS 데이터베이스 디렉터리를 나타냅니다. 기본 디렉토리를 사용하거나 새 디렉토리를 생성할 수 있습니다. 이 튜토리얼에서는 기본값을 사용합니다:


NSSCertificateDatabase /etc/httpd/alias

2. /etc/httpd/nss-db-password.conf의 데이터베이스 디렉터리에 비밀번호를 저장하여 각 시스템 시작 시 수동 비밀번호 문구 입력을 방지하세요.


NSSPassPhraseDialog file:/etc/httpd/nss-db-password.conf

여기서 /etc/httpd/nss-db-password.conf에는 다음 줄만 포함되어 있으며 mypassword는 나중에 NSS 데이터베이스에 대해 설정할 비밀번호입니다.


internal:mypassword

또한 해당 권한과 소유권은 각각 0640root:apache로 설정되어야 합니다.


chmod 640 /etc/httpd/nss-db-password.conf
chgrp apache /etc/httpd/nss-db-password.conf

3. Red Hat은 SSLTLSv1.0 이전의 모든 TLS 버전을 비활성화할 것을 권장합니다. >POODLE SSLv3 취약점(자세한 내용은 여기 참조).

NSSProtocol 지시어의 모든 인스턴스가 다음과 같은지 확인하세요(다른 가상 호스트를 호스팅하지 않는 경우 하나만 찾을 수 있음).


NSSProtocol TLSv1.0,TLSv1.1

4. Apache는 자체 서명된 인증서이고 발급자를 유효한 것으로 인식하지 않으므로 다시 시작을 거부합니다. 이러한 이유로 이 특별한 경우에는 다음을 추가해야 합니다.


NSSEnforceValidCerts off

5. 꼭 필요한 것은 아니지만 NSS 데이터베이스의 비밀번호를 설정하는 것이 중요합니다.


certutil -W -d /etc/httpd/alias