웹사이트 검색

Apache 및 Nginx에서 TLS 1.3을 활성화하는 방법


TLS 1.3전송 계층 보안(TLS) 프로토콜의 최신 버전이며 적절한 IETF 표준을 갖춘 기존 1.2 사양을 기반으로 합니다. RFC 8446. 이전 버전보다 더 강력한 보안과 향상된 성능을 제공합니다.

이 문서에서는 유효한 TLS 인증서를 얻고 Apache에서 호스팅되는 도메인에서 최신 TLS 1.3 버전 프로토콜을 활성화하는 단계별 가이드를 보여줍니다. Nginx 웹 서버.

요구사항:

  • Apache 버전 2.4.37 이상.
  • Nginx 버전 1.13.0 이상.
  • OpenSSL 버전 1.1.1 이상.
  • DNS 레코드가 올바르게 구성된 유효한 도메인 이름입니다.
  • 유효한 TLS 인증서.

Let’s Encrypt에서 TLS 인증서 설치

Let's Encrypt에서 무료 SSL 인증서를 얻으려면 표시된 대로 Acme.sh 클라이언트와 Linux 시스템에 필요한 몇 가지 패키지를 설치해야 합니다.


apt install -y socat git  [On Debian/Ubuntu]
dnf install -y socat git  [On RHEL/CentOS/Fedora]
mkdir /etc/letsencrypt
git clone https://github.com/Neilpang/acme.sh.git
cd acme.sh 
./acme.sh --install --home /etc/letsencrypt --accountemail [email 
cd ~
/etc/letsencrypt/acme.sh --issue --standalone --home /etc/letsencrypt -d example.com --ocsp-must-staple --keylength 2048
/etc/letsencrypt/acme.sh --issue --standalone --home /etc/letsencrypt -d example.com --ocsp-must-staple --keylength ec-256

참고: 위 명령의 example.com을 실제 도메인 이름으로 바꾸세요.

SSL 인증서를 설치한 후에는 아래 설명에 따라 도메인에서 TLS 1.3을 활성화할 수 있습니다.

Nginx에서 TLS 1.3 활성화

위 요구사항에서 언급했듯이 Nginx 1.13 버전부터 해당 TLS 1.3이 지원됩니다. 이전 Nginx 버전을 실행 중인 경우 먼저 최신 버전으로 업그레이드해야 합니다.


apt install nginx
yum install nginx

Nginx 버전과 Nginx가 컴파일된 OpenSSL 버전을 확인하세요. nginx 버전이 1.14 이상인지 확인하세요. 및 openssl 버전 1.1.1).


nginx -V
샘플 출력

nginx version: nginx/1.14.1
built by gcc 8.2.1 20180905 (Red Hat 8.2.1-3) (GCC) 
built with OpenSSL 1.1.1 FIPS  11 Sep 2018
TLS SNI support enabled
....

이제 nginx 설치를 시작하고 활성화하고 확인하십시오.


systemctl start nginx.service
systemctl enable nginx.service
systemctl status nginx.service

이제 선호하는 편집기를 사용하여 nginx vhost 구성 /etc/nginx/conf.d/example.com.conf 파일을 엽니다.


vi /etc/nginx/conf.d/example.com.conf

ssl_protocols 지시문을 찾아 아래와 같이 줄 끝에 TLSv1.3을 추가합니다.


server {
  listen 443 ssl http2;
  listen [::]:443 ssl http2;

  server_name example.com;

  # RSA
  ssl_certificate /etc/letsencrypt/example.com/fullchain.cer;
  ssl_certificate_key /etc/letsencrypt/example.com/example.com.key;
  # ECDSA
  ssl_certificate /etc/letsencrypt/example.com_ecc/fullchain.cer;
  ssl_certificate_key /etc/letsencrypt/example.com_ecc/example.com.key;

  ssl_protocols TLSv1.2 TLSv1.3;
  ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256';
  ssl_prefer_server_ciphers on;
}

마지막으로 구성을 확인하고 Nginx를 다시 로드합니다.


nginx -t
systemctl reload nginx.service

Apache에서 TLS 1.3 활성화

Apache 2.4.37부터 TLS 1.3을 활용할 수 있습니다. 이전 버전의 Apache를 실행 중인 경우 먼저 최신 버전으로 업그레이드해야 합니다.


apt install apache2
yum install httpd

설치가 완료되면 Apache가 컴파일된 Apache 및 OpenSSL 버전을 확인할 수 있습니다.


httpd -V
openssl version

이제 nginx 설치를 시작하고 활성화하고 확인하십시오.


-------------- On Debian/Ubuntu -------------- 
systemctl start apache2.service
systemctl enable apache2.service
systemctl status apache2.service

-------------- On RHEL/CentOS/Fedora --------------
systemctl start httpd.service
systemctl enable httpd.service
systemctl status httpd.service

이제 선호하는 편집기를 사용하여 Apache 가상 호스트 구성 파일을 엽니다.


vi /etc/httpd/conf.d/vhost.conf
OR
vi /etc/apache2/apache2.conf

ssl_protocols 지시문을 찾아 아래와 같이 줄 끝에 TLSv1.3을 추가합니다.


<VirtualHost *:443>
SSLEngine On

RSA
ssl_certificate /etc/letsencrypt/example.com/fullchain.cer;
ssl_certificate_key /etc/letsencrypt/example.com/example.com.key;
ECDSA
ssl_certificate /etc/letsencrypt/example.com_ecc/fullchain.cer;
ssl_certificate_key /etc/letsencrypt/example.com_ecc/example.com.key;

ssl_protocols TLSv1.2 TLSv1.3
ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256';
ssl_prefer_server_ciphers on;
SSLCertificateFile /etc/letsencrypt/live/example.com/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/example.com/chain.pem

     ServerAdmin [email 
     ServerName www.example.com
     ServerAlias example.com
    #DocumentRoot /data/httpd/htdocs/example.com/
    DocumentRoot /data/httpd/htdocs/example_hueman/
  # Log file locations
  LogLevel warn
  ErrorLog  /var/log/httpd/example.com/httpserror.log
  CustomLog "|/usr/sbin/rotatelogs /var/log/httpd/example.com/httpsaccess.log.%Y-%m-%d 86400" combined
</VirtualHost>

마지막으로 구성을 확인하고 Apache를 다시 로드합니다.


-------------- On Debian/Ubuntu -------------- 
apache2 -t
systemctl reload apache2.service

-------------- On RHEL/CentOS/Fedora --------------
httpd -t
systemctl reload httpd.service

사이트가 TLS 1.3을 사용하고 있는지 확인

웹 서버를 통해 구성한 후에는 Chrome 70+ 버전의 Chrome 브라우저 개발 도구를 사용하여 사이트가 TLS 1.3 프로토콜을 통해 핸드셰이킹되고 있는지 확인할 수 있습니다.

그게 다야. Apache 또는 Nginx 웹 서버에서 호스팅되는 도메인에서 TLS 1.3 프로토콜을 성공적으로 활성화했습니다. 이 기사에 대해 궁금한 점이 있으면 아래 댓글 섹션에 자유롭게 문의하세요.