웹사이트 검색

CentOS 8에서 로컬 자체 서명 SSL 인증서를 만드는 방법


SSL(Secure Socket Layer) 및 향상된 버전인 TLS(Transport Socket Layer)는 보안 프로토콜입니다. 클라이언트의 웹 브라우저에서 웹 서버로 전송되는 웹 트래픽을 보호하는 데 사용됩니다.

SSL 인증서는 클라이언트 브라우저와 웹 서버 사이에 보안 채널을 생성하는 디지털 인증서입니다. 이를 통해 신용 카드 데이터, 로그인 자격 증명 및 기타 개인정보와 같은 민감하고 기밀인 데이터가 암호화되어 해커가 귀하의 정보를 도청하거나 도용하는 것을 방지합니다.

자체 서명 SSL 인증서란 무엇입니까?

자체 서명 SSL 인증서는 인증 기관(CA)에서 서명하고 신뢰하는 다른 SSL 인증서와 달리 그것을 소유한 개인.

생성하는 것은 완전히 무료이며 로컬에서 호스팅되는 웹 서버를 암호화하는 저렴한 방법입니다. 그러나 다음과 같은 이유로 프로덕션 환경에서는 자체 서명된 SSL 인증서를 사용하지 않는 것이 좋습니다.

  1. 인증 기관에서 서명한 것이 아니기 때문에 자체 서명된 SSL 인증서는 사용자가 계속 진행하기로 결정하면 앞으로 발생할 수 있는 잠재적인 위험에 대해 사용자에게 경고하는 경고를 웹 브라우저에 생성합니다. 이러한 경고는 바람직하지 않으며 사용자가 귀하의 웹 사이트를 방문하지 못하게 하여 웹 트래픽이 감소할 가능성이 있습니다. 이러한 경고에 대한 해결 방법으로 조직에서는 일반적으로 직원들이 경고를 무시하고 계속 진행하도록 권장합니다. 이로 인해 다른 온라인 사이트에서 이러한 경고를 계속 무시하기로 결정하는 사용자들 사이에 위험한 습관이 생겨 잠재적으로 피싱 사이트의 피해자가 될 수 있습니다.
  2. 자체 서명된 인증서는 낮은 수준의 암호화 기술 및 해시를 구현하므로 보안 수준이 낮습니다. 따라서 보안 수준은 표준 보안 정책과 동등하지 않을 수 있습니다.
  3. 또한 PKI(공개 키 인프라) 기능도 지원되지 않습니다.

즉, TLS/SSL 암호화가 필요한 로컬 시스템에서 서비스와 애플리케이션을 테스트하는 경우 자체 서명된 SSL 인증서를 사용하는 것은 나쁜 생각이 아닙니다.

이 가이드에서는 CentOS 8 서버 시스템의 Apache 로컬 호스트 웹 서버에 로컬 자체 서명 SSL 인증서를 설치하는 방법을 배웁니다.

전제 조건:

시작하기 전에 다음과 같은 기본 요구 사항이 있는지 확인하세요.

  1. CentOS 8 서버의 인스턴스입니다.
  2. 서버에 설치된 Apache 웹서버
  3. /etc/hosts 파일에 이미 구성 및 정의된 호스트 이름입니다. 이 가이드에서는 서버의 호스트 이름으로 tecmint.local을 사용하겠습니다.

1단계: CentOS에 Mod_SSL 설치

1. 시작하려면 Apache 웹 서버가 설치되어 실행 중인지 확인해야 합니다.

sudo systemctl status httpd

예상되는 결과는 다음과 같습니다.

웹서버가 실행되고 있지 않으면 부팅 시 명령을 사용하여 웹서버를 시작하고 활성화할 수 있습니다.

sudo systemctl start httpd
sudo systemctl enable httpd

그런 다음 Apache가 실행 중인지 확인할 수 있습니다.

2. 로컬 자체 서명 SSL 인증서의 설치 및 설정을 활성화하려면 mod_ssl 패키지가 필요합니다.

sudo dnf install mod_ssl

설치가 완료되면 다음을 실행하여 설치를 확인할 수 있습니다.

sudo rpm -q mod_ssl

또한 OpenSSL 패키지가 설치되어 있는지 확인하세요(OpenSSLCentOS 8에서 기본적으로 설치됨).

sudo rpm -q openssl 

2단계: Apache용 로컬 자체 서명 SSL 인증서 생성

3. Apache 웹 서버와 모든 전제 조건을 확인한 후 암호화 키가 저장될 디렉토리를 생성해야 합니다.

이 예에서는 /etc/ssl/private에 디렉터리를 만들었습니다.

sudo mkdir -p /etc/ssl/private

이제 다음 명령을 사용하여 로컬 SSL 인증서 키와 파일을 만듭니다.

sudo openssl req -x509 -nodes -newkey rsa:2048 -keyout tecmint.local.key -out tecmint.local.crt

명령의 일부 옵션이 실제로 무엇을 의미하는지 살펴보겠습니다.

  • req -x509 – x509 인증서 서명 요청(CSR)을 사용하고 있음을 나타냅니다.
  • -nodes – 이 옵션은 OpenSSL이 암호 문구를 사용한 SSL 인증서 암호화를 건너뛰도록 지시합니다. 여기서의 아이디어는 암호 문구가 제공되면 불가능한 사용자 개입 없이 Apache가 파일을 읽을 수 있도록 허용하는 것입니다.
  • -newkey rsa:2048 – 이는 새 키와 새 인증서를 동시에 생성하려고 함을 나타냅니다. rsa:2048 부분은 2048비트 RSA 키를 생성한다는 의미입니다.
  • -keyout – 이 옵션은 생성 시 생성된 개인 키 파일을 저장할 위치를 지정합니다.
  • -out – 이 옵션은 생성된 SSL 인증서를 저장할 위치를 지정합니다.

3단계: Apache에 로컬 자체 서명 SSL 인증서 설치

4. SSL 인증서 파일이 생성되었으면 이제 Apache 웹 서버 설정을 사용하여 인증서를 설치할 차례입니다. /etc/httpd/conf.d/ssl.conf 구성 파일을 열고 편집합니다.

sudo vi /etc/httpd/conf.d/ssl.conf

가상 호스트 태그 사이에 다음 줄이 있는지 확인하십시오.

<VirtualHost *:443>
    ServerAdmin [email 
    ServerName www.tecmint.local
    ServerAlias tecmint.local
 
    DocumentRoot /var/www/html
 
    SSLEngine on
    SSLCertificateFile /etc/ssl/private/tecmint.local.crt
    SSLCertificateKeyFile /etc/ssl/private/tecmint.local.key
</VirtualHost>

파일을 저장하고 종료합니다. 변경 사항을 적용하려면 다음 명령을 사용하여 Apache를 다시 시작하십시오.

sudo systemctl restart httpd

5. 외부 사용자가 서버에 액세스하려면 그림과 같이 방화벽을 통해 포트 443을 열어야 합니다.

sudo firewall-cmd --add-port=443 --zone=public --permanent
sudo firewall-cmd --reload

3단계: Apache에서 로컬 자체 서명 SSL 인증서 테스트

모든 구성이 완료되면 브라우저를 실행하고 https 프로토콜을 사용하여 서버의 IP 주소 또는 도메인 이름을 사용하여 서버 주소를 찾아보세요.

테스트를 간소화하려면 Apache 웹 서버에서 HTTP 프로토콜을 HTTPS로 리디렉션하는 것을 고려할 수 있습니다. 이는 일반 HTTP에서 도메인을 탐색할 때마다 자동으로 HTTPS 프로토콜로 리디렉션되도록 하기 위한 것입니다.

따라서 서버의 도메인이나 IP를 찾아보세요

https://domain_name/

표시된 대로 연결이 안전하지 않음을 알리는 경고가 표시됩니다. 이는 브라우저마다 다릅니다. 짐작할 수 있듯이 이 경고는 SSL 인증서가 인증 기관에 의해 서명되지 않았고 브라우저가 이를 등록하고 인증서를 신뢰할 수 없다고 보고하기 때문에 발생합니다.

웹사이트로 이동하려면 위와 같이 '고급' 탭을 클릭하세요.

다음으로 브라우저에 예외를 추가합니다.

마지막으로, 브라우저를 다시 로드하고 이제 서버에 액세스할 수 있는지 확인합니다. 하지만 URL 표시줄에는 SSL 인증서가 자체 서명되고 SSL 인증서에 의해 서명되지 않은 것과 같은 이유로 사이트가 완전히 안전하지 않다는 경고가 표시됩니다. 인증 기관.

이제 CentOS 8의 Apache 로컬 호스트 웹 서버에 자체 서명된 SSL 인증서를 생성하고 설치할 수 있기를 바랍니다.