Knowledgebase

Aveti intrebari? Sunteti in locul potrivit!

Instalarea certificatelor Let’s Encrypt utilizand Nginx pe Ubuntu 19.04

Inainte de a incepe:

Verificati versiunea Ubuntu

lsb_release -ds
# Ubuntu 19.04

Creati un nou utilizator cu dretpuri  sudo , in acest exemplu folosim johndoe.

adduser johndoe --gecos "John Doe"
usermod -aG sudo johndoe
su - johndoe

NOTA: inlocuiti johndoe cu username-ul dorit

Setati timezone-ul

sudo dpkg-reconfigure tzdata

Asigurati-va ca aveti ultimele actualizari

sudo apt update && sudo apt upgrade -y

instalati pachetele necesare

sudo apt install -y git wget curl socat

Instalati Nginx

sudo apt install -y nginx

Verificati versiunea:

sudo nginx -v
# nginx version: nginx/1.15.9 (Ubuntu)

Instalati Python si Lexicon

Ca prim pas in otinerea certificatelor de tip wildcard Let’s Encrypt utilizand acme.sh este necesar sa instalati  Python si Lexicon.

Pentru instalara Python:

sudo apt install -y python3

Verificati versiunea:

python3 --version
# Python 3.7.3

Instalarea Lexicon

sudo apt install -y lexicon

Verificati versiunea

lexicon --version
# lexicon 3.0.8

Instalati clientul acme.sh

Acme.sh is an ACME protocol client written purely in Shell (Unix shell) language that automates the process of getting a signed certificate via Let’s Encrypt. It supports ACME v1 and ACME v2, and most importantly it supports ACME v2 wildcard certs. In this section, we install an Acme.sh script.

NOTA: Este recomandat sa folositii utilizatorul root pentru instalarea  acme.sh

Schimbati utilizatorul ca  root

sudo su - root

Downloadati si instalati acme.sh.

git clone https://github.com/Neilpang/acme.sh.git
cd acme.sh
./acme.sh --install --accountemail "[email protected]"
source ~/.bashrc
cd

Verificati versiunea

acme.sh --version
# v2.8.2

Obtineti certificate wildcard  Let’s Encrypt

Pentru a obtine certificate wildcard este necesar sa validati utilinzand, metoda de validare  DNS.

# Configure your API key and username
export PROVIDER=user
export LEXICON_USERNAME="[email protected]"
export LEXICON_TOKEN="XXXXXXXXXXXXXXX"

# RSA 2048
acme.sh --issue --dns dns_lexicon -d example.com -d '*.example.com' --keylength 2048
# ECC 256
acme.sh --issue --dns dns_lexicon -d example.com -d '*.example.com' --keylength ec-256

NOTE:nu uitati sa inlocuiti  example.com cu numele domeniului dvs. , si inlocuiti valorile pentru API cu cele detinute de catre dvs.

Dupa ce execuati comenzile de mai sus certificatele si cheile le gasiti in:

  • For RSA: ~/.acme.sh/example.com directory.
  • For ECC/ECDSA: ~/.acme.sh/example.com_ecc directory.

NOTE: Sa nu folositi fisierele din directorul  ~/.acme.sh/ .

Pentru a lista certificatele:

acme.sh --list

Creati un fisier unde sa stoacati certificatele din productie ex directorul  /etc/letsencrypt

sudo mkdir -p /etc/letsencrypt/example.com
sudo mkdir -p /etc/letsencrypt/example.com_ecc

Instalati/copiati certificates pentru productie.

# RSA
acme.sh --install-cert -d example.com 
        --cert-file /etc/letsencrypt/example.com/cert.pem 
        --key-file /etc/letsencrypt/example.com/private.key 
        --fullchain-file /etc/letsencrypt/example.com/fullchain.pem 
        --reloadcmd "sudo systemctl reload nginx.service"

# ECC/ECDSA
acme.sh --install-cert -d example.com --ecc 
        --cert-file /etc/letsencrypt/example.com_ecc/cert.pem 
        --key-file /etc/letsencrypt/example.com_ecc/private.key 
        --fullchain-file /etc/letsencrypt/example.com_ecc/fullchain.pem 
        --reloadcmd "sudo systemctl reload nginx.service"

Acum am obtinut un certificat wildcard  Let’s Encrypt,  este necesar sa-l configuram pe  Nginx web server. Toate certificatele sunt reinnoite in mod automat la  60 de zile.

Rulati urmatoarea comanda:

exit

Configurarea  Nginx web server

Rulati sudo vim /etc/nginx/sites-available/example.com.conf si populati fisierul cu informatiile de mai jos .Inlocuiti example.com cu numele domeniului dorit

server {

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

  server_name example.com *.example.com;
  root /var/www/example.com;

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

}

Activati confirgurarea  example.com.conf link-uind fisierul spre directorul sites-enabled .

sudo ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled/

Testati configurarea Nginx

sudo nginx -t

Reincarcati Nginx.

sudo systemctl reload nginx.service