사용한 환경 AWS(Amazon Linux AMI) + Nginx 1.16.1

 

Certbot 설치 및 인증서 발급

https://certbot.eff.org/에 접속해 웹서버 환경에 맞게 선택 (Nginx / CentOS6)

(AWS Linux는 CentOS 6버전과 호환된다.)

 

 

위에서 환경을 선택하면 해당 환경에 맞는 설치 방법을 확인할 수 있다.

(https://certbot.eff.org/lets-encrypt/centos6-nginx 설명에 따라 설치)

 

 

위의 내용에 따라 실제 사용한 스크립트

 

# certbot-auto 다운로드
$ wget https://dl.eff.org/certbot-auto

# certbot-auto 설치
$ sudo mv certbot-auto /usr/local/bin/certbot-auto
$ sudo chown root /usr/local/bin/certbot-auto 
$ sudo chmod 0755 /usr/local/bin/certbot-auto 

# 인증서 설치 (설치 중 나오는 내용에 따라 명령 입력)
$ sudo /usr/local/bin/certbot-auto --nginx --debug

# crontab에 인증서 갱신 추가
$ echo "0 0,12 * * * root python -c 'import random; import time; time.sleep(random.random() * 3600)' && /usr/local/bin/certbot-auto renew -q" | sudo tee -a /etc/crontab > /dev/null

# crontab 재실행
$ sudo service crond restart

위 내용을 실행하고 나면 /etc/crontab에 배치가 추가되어 있을 것이다.

 

여기까지 하고 나면 nginx 서버 설정 부분에 ssl관련 설정이 자동으로 들어가 있는 것을 확인할 수 있다.

사용하는 도메인이 하나인 경우엔 상관없지만 하나의 도메인에 여러개의 서브 도메인을 사용하는 경우 아래와 같이 와일드 카드 인증서를 받아 기존 인증서를 바꿔주자.

 

와일드 카드(*.domain.com) 발급

아래 명령에서 이메일 주소와 도메인 주소는 변경하고 터미널에서 실행한다.

 

certbot-auto certonly --manual --preferred-challenges=dns \
--email email-address@gmail.com \
--server https://acme-v02.api.letsencrypt.org/directory \
--agree-tos --debug --no-bootstrap \
-d *.domain.com
$ certbot-auto certonly --manual --preferred-challenges=dns \
    --email email-address@gmail.com \
    --server https://acme-v02.api.letsencrypt.org/directory \
    --agree-tos --debug --no-bootstrap \
    -d *.domain.com

실행 후 인증서 설치 위치를 확인해 nginx 서버 설정을 변경해준다.

 

이 경우 인증서 발급만 진행되므로 nginx설정과 인증서 갱신을 위한 crontab 설정은 반드시 해주어야 한다.

텔레그램 (https://www.telegram.org/)

 

텔레그램 봇 생성하고 토큰 받기

 

대화상대에서 BotFather를 찾아 대화창에 /start를 입력한다.

입력하면 사용할 수 있는 명령어들을 볼 수 있다.

(웹브라우저 접속은 여기로 => https://web.telegram.org/#/im?p=@BotFather)

 

BotFather 대화창에서 사용할 수 있는 명령들

 

봇 생성을 위해 대화창에 /newbot을 입력한다.

명령을 입력하고 나면 봇의 표시 이름(name)을 입력하라고 한다.

 

 

봇의 표시 이름(name)을 입력한다. "Test bot"이라는 이름을 입력했다.

이번엔 봇의 이름(username)을 입력하라고 한다. 아이디와 같이 봇을 인식하는 이름을 입력하면 된다.

 


봇의 이름(username)를 입력한다. test_bot를 입력했으나 중복이어서 다른 이름(anyway_test_bot)을 입력했다.

(이름은 항상 bot로 끝나야 한다. ex. TetrisBot, tetris_bot)

입력하고 나면 API에서 사용할 토큰을 알려준다.

 

빨간색 박스안에 1232767638:AAEM ... YRSBvnO-4Ng 이 부분이 토큰이다.

 

봇의 챗 아이디(chat_id) 알아내기

 

위에서 입력한 봇 이름(username)을 대화 목록 검색에서 찾아 대화를 시작하고 아래  START  버튼을 누른다.

 

 

웹브라우저 주소창에 "https://api.telegram.org/bot" + 위에서 확인한 토큰 + "/getUpdates" 을 입력한다.

(이 경우 주소는 이렇게 => https://api.telegram.org/bot1232767638:AAEMu9cVLfAynhswH7f784VwYRSBvnO-4Ng/getUpdates)

입력하고 나면 페이지에 JSON형식의 데이터가 출력되는데 이중에 chat.id에 해당하는 부분이 나의 챗 아이디.

 

위와 같이 보지 못 하고 내용이 result: [] 였다면 봇과 대화가 시작되지 않은 상태이니 START 버튼을 눌러 대화를 시작해주자

 

대화창에 메세지 보내기

 

위에서 확인한 챗 아이디를 이용해 웹브라우저 주소창에 "https://api.telegram.org/bot" + 토큰 + "/sendMessage?chat_id=" + 챗 아이디 + "&text=" + 보낼 메세지 이렇게 입력한다.

(https://api.telegram.org/bot1232767638:AAEMu9cVLfAynhswH7f784VwYRSBvnO-4Ng/sendMessage?chat_id=12345678&text=Telegram%20Bot%20Test%20Message)

 

대화창에서 보낸 매세지를 확인할 수 있다.

 

터미널에서 CURL을 이용해 메세지 보내기

 

curl명령을 아래와 같이 구성해서 메세지를 보낼 수 있다.

 

curl -s -X POST https://api.telegram.org/bot[토큰]/sendMessage -d chat_id=[챗아이디] -d text=[메세지]

 

위의 내용을 기준으로 작성하면 이렇게 된다. 

(아래 내용에 \는 명령문이 길어서 여러 줄로 입력할때 다음 줄에 계속 된다는 의미)

 

curl -s -X POST \
https://api.telegram.org/bot1232767638:AAEMu9cVLfAynhswH7f784VwYRSBvnO-4Ng/sendMessage \
-d chat_id=12345678 \
-d text="Telegram
Test
Message"

이렇게 여러 줄의 메세지도 보낼 수 있다.

 

메세지는 ""로 묶어서 여러 줄로 보내는 것도 가능한데 메세지 내용 끝에 \를 붙이면 다음 줄에 연결된다는 의미로 해석해 메세지가 한 줄로만 보내진다.

 

curl -s -X POST \
https://api.telegram.org/bot1232767638:AAEMu9cVLfAynhswH7f784VwYRSBvnO-4Ng/sendMessage \
-d chat_id=12345678 \
-d text="Telegram \
Test \
Message"

여러 줄의 메세지를 보내려면 메세지에 \를 입력하지 말자.

 

+ Recent posts