워드프레스 Linux 서버 Let’s Encrypt SSL 무료 인증서 직접 설치하기

워드프레스 Linux 서버에 직접 Let’s Encrypt SSL 무료 인증서 직접 설치하겠습니다.

HTTP vs HTTPS

HTTP(Hypertext Transfer Protocol)와 HTTPS(Hypertext Transfer Protocol Secure)는 인터넷에서 데이터를 전송하는 데 사용되는 프로토콜입니다.

HTTP는 웹 브라우저와 웹 서버 간의 통신을 위해 개발되었으며, HTTPS는 HTTP의 보안 버전으로 SSL(Secure Sockets Layer) 또는 TLS(Transport Layer Security) 프로토콜을 사용하여 데이터를 암호화합니다.

http 프로토콜은 인터넷에서 주고받는 데이터 정보를 제3자가 악의적인 감청이나 변조하는 등 보안에 취약합니다.

표로 비교

HTTPHTTPS
통신 방식평문암호화
포트 번호80443
암호화암호화되지 않음SSL 또는 TLS를 사용하여 데이터 암호화
인증서필요하지 않음SSL/TLS 인증서가 필요함

HTTPS에서는 클라이언트가 서버에 접속할 때 서버가 발급한 디지털 인증서를 확인합니다. 이 디지털 인증서에는 서버의 공개 키(public key)와 해당 공개 키로부터 생성된 디지털 서명(digital signature)이 포함되어 있습니다. 클라이언트는 이 디지털 서명을 검증하여 신뢰할 수 있는 서버인지 확인하고, 그 후에 안전한 통신을 수행합니다.

따라서, 개인 정보나 기밀성이 요구되거나 온라인 상거래 등과 같은 보안적으로 중요한 작업을 할 때 HTTPS를 사용하는 것이 좋습니다.

SSL, TLS

SSL은 보안 소켓 계층(Secure Sockets Layer)으로 웹사이트와 브라우저 사이 데이터를 암호화하여 보호하기 위한 표준 기술입니다. 초기 넷스케이프에서 개발한 1.0 버전으로 만들어졌고 보안 결함이 발생되어. 2.0, 3.0 버전이 공개되었습니다. 그러나 SSL.3.0이후 많은 보안 결함이 있었습니다. 그 후속 버전인 TLS(Transport Layer Security)은 SSL 보다 암호화 성능이 크게 향상되었습니다.

Let’s Encrypt

Let’s Encrypt(https://letsencrypt.org/)는 무료로 제공되는 공개 인증서 기관입니다. 워드프레스를 운영하기 위해 SSL 인증서가 필요했습니다. 개발자로 일하면서 서버 작업은 어느정도 지식이 있기 때문에 직접 무료 인증서인 Let’s Encrypt 적용해보았습니다.

SSL을 무료로 90일간 이용할 수 있으며 90일마다 갱신하면 지속적으로 HTTPS 서비스를 이용할 수 있습니다.

저는 AWS EC2에 nginx를 설치하여 진행했습니다. AWS EC2 nginx 설치가 궁금한 분들은 제 블로그 링크를 확인해주세요.

-> AWS 가입 후 nginx 설치

1. linux 우분투 letsencrypt 설치

sudo apt update
sudo apt-get install  letsencrypt -y
service nginx stop 처리

certbot certonly --manual \
--preferred-challenges=dns \
--email 이메일 \
--server https://acme-v02.api.letsencrypt.org/directory \
--agree-tos \
-d www.내도메인 \
-d it.내도메인 \

lets encrypt를 설치하면 Certbot을 사용할 수 있습니다. Let’s Encrypt에서 제공하는 공식 ACME(자동화된 인증서 관리 환경) 클라이언트입니다. Certbot은 웹 서버에서 SSL/TLS 인증서를 자동으로 발급, 갱신 및 설치할 수 있는 도구입니다.

–preferred-challenges=dns DNS TXT 이용하여 SSL 설치.
–email 이메일 정보를 이용하여 갱신 시점등 메일을 받을 수 있음.
-d 도메인 여러개 설정 가능

certbot을 실행하면 DNS TXT 타입의 레코드 이름이 _acme-challen… 와 같은 값이 나옵니다.

대부분 도메인 사이트에 DNS 관리하는 서비스가 있습니다. 저는 가비아에서 도메인을 구매했습니다.

DNS 타입을 TXT로 넣고 호스트는 _acme-challenge로 설정하고 값은 certbot에 나온 정보를 입력하고 Enter 키를 눌르면 됩니다.

그러나 바로 반영이 안되는 경우 조금 기다렸다가 해보시면 됩니다. 또는 enter를 누르기 전에 nslookup 명령어를 이용해 확인 가능합니다.

nslookup -q=TXT _acme-challenge..

nslookup 사용시 위와 같이 나옵니다.

Enter 후 잠시 기다리면 fullchain.pem과 privkey.pem이 생성 됩니다. /etc/letsencrypt/live/내도메인 폴더로 이동하여 파일을 확인합니다.

Nginx 인증서 파일 설정

server {
        listen 80;
        listen [::]:80;
        server_name 내도메인;
        root /var/www/내도메인 서비스;

        listen 443 ssl; # managed by Certbot

        # RSA certificate
        ssl_certificate /etc/letsencrypt/live/위치/fullchain.pem; 
        ssl_certificate_key /etc/letsencrypt/live/위치/privkey.pem;

발급 받은 인증서 정보를 nginx에 복사하여 넣어주고 재시작을 진행하면 SSL이 정상적으로 작동됩니다.

내 도메인에 접속하고 브라우저에 자물쇠 모양이 보입니다. 자물쇠를 클릭하여 인증서 확인하면 정상적으로 발급된 것을 알 수 있습니다.

SSL 테스트

SSL 서버를 테스트하는 사이트가 있습니다. SSL 인증서를 테스트하고 보안에 관한 평가를 제공하는 무료 온라인 도구입니다. 이 사이트를 사용하면 서버의 SSL 구성을 분석하여 약점을 찾을 수 있으며, 이를 통해 더욱 안전한 인터넷 환경을 조성할 수 있습니다. 또한, SSL 인증서가 제대로 구성되어 있는지 확인하고, 사용 중인 SSL 버전 및 암호화 방식 등을 확인할 수 있습니다.

www.ssllabs.com/ssltest/

사이트 테스트를 진행하니 A 점수를 받았습니다.

Leave a Comment