Azure의 Grafana – LetsEncrypt를 통해 SSL 활성화

Azure에서 Grafana를 실행하는 것에 관한 일련의 게시물의 일부다.결산
  • Part 1 – Hosting/Configuration
  • Part 2 – Azure MySQL Storage
  • 섹션 3 - LetsEncrypt를 사용하여 SSL 활성화(본문)
  • Part 4 – Azure AD Login
  • 섹션 5 – Azure Monitor 데이터 소스(출시 예정)
  • LetsEncrypt란?


    LetsEncrypt.org는 SSL을 사용하는 웹 사이트를 홍보하기 위한 제안입니다.중요한 데이터가 있는지 여부에 관계없이 SSL을 활성화해야 합니다.LetsEncrypt는 모든 도메인에서 사용할 수 있는 완전 무료 SSL 인증서를 제공합니다.인증서는 30일로 제한됩니다. 이것은 정기적으로 키를 다시 만들어야 한다는 것을 의미합니다.그러나'certbot'이라는 실용 프로그램이 우리를 위해 자동화를 실현할 것이다.
    인증서를 생성할 수 있는 여러 가지 방법이 있지만, 이 예에서는 이른바 HTTP 질문 방법을 사용할 것입니다.일반적으로 DNS 질의를 실행하는 방법이 더 안전합니다. 다른 포트를 여는 것에 의존하지 않기 때문입니다. 그러나 DNS 공급자에 특정하기 때문에 이 방법을 소개하지 않습니다.

    1단계 - 도메인 이름 설정


    유효한 인증서를 얻기 위해서는 IP 주소에서 작동하지 않는 도메인 이름이 필요합니다.
    도메인 이름을 grafana 인스턴스에 대한 IP 주소로 설정합니다.문제가 발생하지 않도록 하기 위해서, 나는 dig 또는 nslookup을 사용하여 그 지향이 정확하다는 것을 확보하는 것을 건의합니다.또한 포트 3000(즉 http://{domain}:3000/)에서 이 영역을 사용하여grafana에 접근하려고 시도합니다.

    2단계 - 필요한 포트 열기


    Lets Encrypt가 포트 80 (http) 에서 http 도전 통신을 할 수 있고, 사용자가 포트 443 (https) 에서 통신할 수 있도록 네트워크 보안 그룹의 포트를 열어야 합니다.
    Azure 포털의 VM으로 이동하여 네트워킹을 클릭한 다음 인바운드 포트 규칙 추가를 클릭합니다.

    대상 포트 범위의 경우 80,443과 같이 쉼표로 구분하여 80과 443을 입력한 다음 저장을 클릭합니다.

    3단계 - Grafana가 파일 시스템의 인증서에 액세스하도록 합니다.


    grafana 프로세스는 내장된 HTTP 서버가 있기 때문에 이 인증서를 사용합니다.따라서 프로세스는 인증서를 생성하는 위치에 접근해야 합니다.
    우선, 우리는 그룹을 만들 것입니다. 이 그룹은 ssl 인증서에 대한 접근을 제공할 것입니다.
    
    sudo groupadd sslcerts
    
    
    그리고 인증서를 위한 디렉터리를 만들고 소유권을 새로 만든 그룹으로 변경하며 권한을 수정할 것입니다
    
    sudo mkdir /etc/letsencrypt
    sudo mkdir /etc/letsencrypt/archive
    sudo mkdir /etc/letsencrypt/live
    sudo chown -R root:sslcerts /etc/letsencrypt/
    sudo chmod 755 /etc/letsencrypt/archive
    sudo chmod 755 /etc/letsencrypt/live
    
    
    마지막으로,grafana의 프로세스 사용자를 새로 만든 그룹에 추가할 것입니다.
    
    sudo usermod -G sslcerts -a grafana
    
    

    4단계 - LetsEncrypt Certbot 설치 및 실행


    다음에, 우리는certbot을 설치해야 한다. 이것은 Lets Encrypt와 통신할 응용 프로그램이다.APT에 가방이 하나 있어서 간단합니다.
    
    sudo apt install -y certbot
    
    
    그리고 나서 우리는 독립된 모드에서 이 도구를 실행할 수 있다.
    
    sudo certbot certonly --standalone
    
    
    Lets Encrypt에 전자 우편 주소를 주고 약관에 동의한 다음 인증서를 생성하고 싶은 영역을 추가해야 합니다.이것은 1단계에서 설정한 것입니다.https 등이 없습니다.
    Certbot은 다음에 포트 80에 임시 http 서버를 설정합니다. 이 서버는 LetsEncrypt 서버가 URL을 누르면 이 영역을 가지고 있는지 확인할 수 있습니다.
    완료하면 3단계에서 만든 폴더에 인증서 파일이 있습니다.
    azureuser@grafana-azure:~$ sudo ls -hal /etc/letsencrypt/live
    total 16K
    drwx------ 3 root root 4.0K Mar 13 21:08 .
    drwxr-xr-x 9 root sslcerts 4.0K Mar 13 21:08 ..
    -rw-r--r-- 1 root root 740 Mar 13 21:08 README
    drwxr-xr-x 2 root root 4.0K Mar 13 21:08 grafanablog.martinjt.me
    
    certbot이 디렉터리 그룹에 대한 변경 사항을 존중하지 않기 때문에 이 점을 바로잡아야 합니다.만약 우리가 파일에서 변경한다면,certbot는 재서명할 때 현금으로 바꿀 것입니다.

    5단계 – SSL을 사용하도록 Grafana 구성


    grafana 설정을 열어 편집하기
    
    sudo nano /etc/grafana/grafana.ini
    
    
    다음 설정을 편집합니다.
    protocol = https
    domain = <your-domain>
    enforce_domain = true
    root_url = https://<your-domain>
    cert_file = /etc/letsencrypt/live/<your-domain>/fullchain.pem
    cert_key = /etc/letsencrypt/live/<your-domain>/privkey.pem
    
    grafana 서비스를 다시 시작합니다.
    
    sudo systemctl restart grafana-server.service
    
    
    이제 다음과 같은 방법으로 서비스에 액세스할 수 있습니다.
    https://<your-domain>:3000/
    

    https용 포트 443
    기본적으로 Linux의 제한으로 인해 Grafana는 포트 443에서 정탐할 수 없습니다.다음 명령을 사용하여 이 기능을 활성화해야 합니다.
    
    sudo setcap 'cap_net_bind_service=+ep' /usr/sbin/grafana-server
    
    
    이제 grafana.ini을 다시 편집할 수 있습니다.
    http_port = 443 
    
    그리고 서비스 재개
    
    sudo systemctl restart grafana-server.service
    
    
    이제 포트를 사용하지 않고grafana 인스턴스에 액세스할 수 있어야 합니다.
    https://<your-domain>
    

    링크 첨부


    Setup Grafana on Ubuntu 18.04 with LetsEncrypt

    좋은 웹페이지 즐겨찾기