본문 바로가기



01. 우분투서버ip 도메인 연결후 SSL/TLS 인증서 발급받기



도메인과 IP를 연결하하고 우분투에서 SSL/TLS인증서를 발급받습니다.

저 같은 경우 가비아에서 도메인을 등록하였기 때문에 가비아기준으로 설명하겠습니다.

도메인등록 사이트가 가비아가 아니라도 개념은 비슷할 것이라 생각합니다.

 

1. 도메인 DNS설정

1. 가비아 웹사이트에 로그인 합니다.
2. 페이지 상단의 '도메인' 메뉴를 클릭합니다.
3. 관리하고자 하는 도메인 네임(여기서는 alphonse.kr) 옆의 '관리' 버튼을 클릭합니다.
4. 왼쪽 메뉴에서 'DNS 관리'를 선택합니다.
5. '레코드 관리' 탭을 클릭합니다.
6. '레코드 추가' 버튼을 클릭합니다.
7. '타입' 드롭다운 메뉴에서 'A'를 선택합니다.
8. '호스트명'에는 도메인 이름을 입력합니다. 루트 도메인을 사용하려면 '@'를 입력하거나, www 같은 서브도메인을 사용하려면 해당 이름을 입력합니다.
9. 'IP주소'에는 우분투 서버의 IP 주소(여기서는 177.177.777.777 )를 입력합니다.
10. 'TTL'은 기본 설정값 그대로 두어도 무방합니다. TTL은 DNS 캐시의 유효 기간을 설정하는 것으로, 너무 낮게 설정하면 DNS 서버에 부담이 가고, 너무 높게 설정하면 DNS 정보 변경 시 반영이 늦어집니다.
11. '저장' 버튼을 클릭하여 설정을 완료합니다.

이렇게 하면 도메인 이름 test.kr이 우분투 서버의 IP 주소인 177.177.777.777 로 연결됩니다. DNS 정보가 전파되는 데는 약간의 시간이 걸릴 수 있으니, 설정 후 즉시 반영되지 않을 수 있습니다. 설정 후 몇 시간 내로는 정상적으로 접속이 가능해야 합니다. 추가적인 질문이 있으시다면 알려주세요.

 

2. WWW접속 설정

www 서브도메인과 루트 도메인(www 없는 경우) 모두를 사용하려면, 가비아의 DNS 설정에서 두 개의 A 레코드를 추가하면 됩니다.

 

첫 번째 A 레코드:

  • 타입: A
  • 호스트명: @
  • IP주소: 177.177.777.777

두 번째 A 레코드:

  • 타입: A
  • 호스트명: www
  • IP주소: 177.177.777.777


이렇게 설정하면, http://www.test.kr와 test.kr 모두 우분투 서버의 IP 주소인 177.177.777.777로 연결됩니다. 
추가적인 질문이 있으시면 알려주세요.

 

3. 눈에 거슬리는 "주의 요함"을 제거해 봅시다.

 

"주의요함"이라는 표시가 브라우저 주소창에 나타난다는 것은, 일반적으로 사이트가 HTTPS를 사용하지 않거나 SSL 인증서가 유효하지 않거나 만료되었음을 의미합니다.

이 문제를 해결하려면 SSL 인증서를 설치하고 적용해야 합니다. Let's Encrypt는 무료 SSL 인증서를 제공하는 인증기관 중 하나입니다. Certbot라는 도구를 사용하면 이 과정을 쉽게 진행할 수 있습니다.

3_1. 먼저, SSH를 사용하여 서버에 접속합니다.
3_ 2. Certbot과 Nginx 플러그인을 설치합니다.

sudo apt-get update
sudo apt-get install software-properties-common
sudo add-apt-repository universe
sudo add-apt-repository ppa:certbot/certbot
sudo apt-get update
sudo apt-get install certbot python3-certbot-nginx

 


3_ 3. Certbot을 실행하여 인증서를 발급받고 Nginx에 설치합니다.

sudo certbot --nginx
- 첫번째 : 이메일을 입력하라고 한다. 관련 메일을 받아볼 이메일주소를 입력하라고
- 두번째 : (A)gree/(C)ancel: A를 입력하고 진행
- 세번째 : 이메일수신동의 Y또는 N 아무거나 무방합니다.
- 네번째 : 중요! [도메인이름입력] No names were found in your configuration files. Please enter in your domain
name(s) (comma and/or space separated)  (Enter 'c' to cancel): 



축하드립니다! SSL 인증서와 체인이 성공적으로 생성되어 '/etc/letsencrypt/live/도메인명 .kr/fullchain.pem'에 저장되었습니다. 또한 키 파일은 '/etc/letsencrypt/live/도메인명.kr/privkey.pem'에 저장되었습니다. 이 인증서는 2024년 3월 1일에 만료됩니다.
다음 번에 새 인증서를 얻거나 현재 인증서를 수정하려면, "certonly" 옵션과 함께 다시 certbot을 실행하면 됩니다. 모든 인증서를 비대화식으로 갱신하려면 "certbot renew"를 실행하시면 됩니다.
계정 자격증명은 '/etc/letsencrypt'에 있는 Certbot 설정 디렉토리에 저장되었습니다. 이 파일은 중요한 정보를 포함하고 있으므로 지금 바로 안전하게 백업해두시는 것이 좋습니다. 이 설정 디렉토리는 Certbot에 의해 얻어진 인증서와 개인 키도 포함하고 있으므로 정기적으로 백업하는 것이 이상적입니다.

그럼, 다음 작업을 위해 준비하셔도 좋습니다.

3_ 4. 인증서 갱신을 자동화합니다.

sudo certbot renew --dry-run

이 명령은 인증서 갱신의 시험 실행을 진행합니다. 
실제 인증서 갱신은 Certbot이 자동으로 수행하지만, 이 명령을 실행하여 갱신 과정에 문제가 없는지 확인할 수 있습니다.
이 과정을 마치면, 브라우저에서 사이트를 방문할 때 "주의요함" 대신 "https://"로 시작하는 안전한 연결을 나타내는 자물쇠 아이콘이 나타나야 합니다. 

 

3_5. 설정파일수정 

server {
    listen 80;
    server_name test.kr http://www.test.kr;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    server_name test.kr http://www.test.kr;

    ssl_certificate /etc/letsencrypt/live/test.kr/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/test.kr/privkey.pem;

    root /var/www/html/test;
    index index.html index.htm;

    location / {
        try_files $uri $uri/ /index.php$is_args$args;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
    }

    location ~ /\.ht {
        deny all;
    }
}