GNU/Linux >> Belajar Linux >  >> Cent OS

SSL gratis untuk Nginx di Centos oleh Let's encrypt

Ikhtisar

Let's encrypt adalah otoritas sertifikat yang menyediakan cara sederhana untuk mendapatkan sertifikat SSL/TLS untuk situs web Anda secara gratis, sehingga memungkinkan https terenkripsi di server web. Let's Encrypt menyederhanakan pengadaan dan pemasangan sertifikat SSL menggunakan perangkat lunak bernama CertBot. Klien perangkat lunak ini melayani proses yang sepenuhnya otomatis untuk server web Apache. Namun, sertifikat SSL gratis dari Let's Encrypt dapat diinstal secara manual di server web mana pun dengan beberapa penyesuaian internal.

Dalam tutorial ini, kami akan mendemonstrasikan prosedur menggunakan certbot-auto Mari Enkripsi klien untuk mendapatkan sertifikat SSL gratis dan menggunakannya dengan Nginx di Ubuntu 14.04. Tutorial ini juga akan menjelaskan kepada Anda cara memperbarui sertifikat SSL Anda secara otomatis. Jika Anda menjalankan server web yang berbeda, cukup ikuti dokumentasi server web Anda untuk mempelajari cara menggunakan sertifikat dengan penyiapan Anda.

Prasyarat

  • Pengguna non-root dengan hak istimewa Sudo
  • Anda harus memiliki atau memiliki kontrol administratif atas domain yang ingin Anda dapatkan sertifikat SSLnya.
  • A-Record dibuat di bawah panel DNS, yang mengarahkan domain Anda ke alamat IP publik server Anda. Ini diperlukan karena cara Let's Encrypt memvalidasi bahwa Anda memiliki domain yang sertifikatnya diterbitkan. Misalnya, jika Anda ingin mendapatkan sertifikat untuk example.com , domain tersebut harus diselesaikan ke server Anda agar proses validasi berfungsi. Pengaturan kami akan menggunakan example.com dan www.example.com sebagai nama domain, jadi kedua data DNS diperlukan

Langkah 1 — Instal Let's Encrypt Client

Awalnya, Anda harus mengunduh klien perangkat lunak CertBot di server Anda. Anda dapat mengunduh CertBot dari situs web resmi EFF.

Unduh perangkat lunak CertBot ke direktori /usr/local/sbin directory on your server:

cd /usr/local/sbin
sudo wget https://dl.eff.org/certbot-auto
$ cd /usr/local/sbin   
sudo wget https://dl.eff.org/certbot-auto
[sudo] password for example: 
--2016-11-28 13:26:28--  https://dl.eff.org/certbot-auto
Resolving dl.eff.org... 173.239.79.196
Connecting to dl.eff.org|173.239.79.196|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 44442 (43K) [text/plain]
Saving to: `certbot-auto'

100%[======================================>] 44,442       154K/s   in 0.3s    

2016-11-28 13:26:30 (154 KB/s) - `certbot-auto' saved [44442/44442]

Cert-Bot sekarang diunduh ke /usr/local/sbin di server Anda. Sekarang buat file tersebut dapat dieksekusi dengan memasukkan perintah berikut:

sudo chmod a+x /usr/local/sbin/certbot-auto

Perangkat lunak Cerbot-auto sekarang siap dipasang.

Langkah 2 — Dapatkan Sertifikat

Ada beberapa cara untuk mendapatkan sertifikat SSL dari Let's Encrypt melalui berbagai plugin. Anda perlu mendapatkan plugin autentikator untuk mendapatkan sertifikat SSL. Pastikan bahwa plugin ini hanya akan mendapatkan sertifikat dan Anda perlu menginstal sertifikat secara manual.

Dalam tutorial ini, mari gunakan plugin bernama Webroot untuk otentikasi.

Plugin Webroot

Plugin webroot menghasilkan file eksklusif di direktori / .well-known di dalam root dokumen Anda, yang dapat diakses oleh Let's Encrypt melalui server web Anda dan ini akan menyelesaikan validasi otoritas Anda atas domain tersebut. Anda mungkin perlu mengonfigurasi izin untuk file di / .well-known.

Jika Anda belum menginstal Ngnix, gunakan perintah di bawah ini untuk menginstalnya:

sudo yum update
sudo yum install ngnix

Agar file dapat diakses oleh certbot-auto, mari buat beberapa perubahan yang diperlukan pada file konfigurasi Nginx. File konfigurasi ngnix ditempatkan di direktori /etc/nginx/sites-available/default, secara default. Mari kita edit file konfigurasinya:

sudo vim /etc/nginx/sites-available/default

Tambahkan blok lokasi berikut ke file:

Tambahkan ke blok server SSL
server {
        . . .

        location ~ /.well-known {
                allow all;
        }

        . . .
}

Anda juga ingin mencari pengaturan root dokumen Anda dengan mencari root direktif, karena jalur diperlukan untuk menggunakan plugin Webroot. Jika Anda menggunakan file konfigurasi default, rootnya adalah /usr/share/nginx/html .

Simpan file dengan menekan Esc diikuti oleh :wq! dan tekan tombol enter.

Anda dapat memeriksa file konfigurasi untuk kesalahan sintaks:

sudo nginx -t

Jika Anda menemukan file konfigurasi bebas dari kesalahan Sintaks, mulai ulang layanan ngnix

sudo service nginx restart

Sekarang, kita dapat menggunakan plugin webroot untuk validasi, karena kita mengetahui lokasi persis dari jalur webroot. Gunakan perintah berikut untuk meminta sertifikat SSL menggunakan plugin webroot:

certbot-auto certonly -a webroot --webroot-path=/usr/share/nginx/html -d example.com -d www.example.com

Nama domain tidak boleh ditentukan dengan -d pilihan. Jika Anda ingin satu sertifikat berfungsi dengan beberapa nama domain (mis. example.com dan www.example.com ), pastikan untuk menyertakan semuanya, dimulai dengan domain tingkat paling tinggi (mis. example.com ).

Catatan: certbot-auto perangkat lunak memerlukan hak pengguna super, jadi Anda akan diminta memasukkan sandi jika belum pernah menggunakan sudo baru-baru ini.

Saat certbot-auto menginisialisasi Anda akan diminta untuk beberapa informasi. Perintah yang tepat dapat bervariasi tergantung pada apakah Anda telah menggunakan certbot-auto klien sebelumnya. Berikan informasi yang diperlukan dan pilih setuju di bagian akhir.

Output:
IMPORTANT NOTES:
 - If you lose your account credentials, you can recover through
   e-mails sent to [email protected]
 - Congratulations! Your certificate and chain have been saved at
   /etc/letsencrypt/live/example.com/fullchain.pem. Your
   cert will expire on 2016-03-15. To obtain a new version of the
   certificate in the future, simply run Let's Encrypt again.
 - Your account credentials have been saved in your Let's Encrypt
   configuration directory at /etc/letsencrypt. You should make a
   secure backup of this folder now. This configuration directory will
   also contain certificates and private keys obtained by Let's
   Encrypt so making regular backups of this folder is ideal.
 - If like Let's Encrypt, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

Catat jalur dan tanggal kedaluwarsa dari output.

Catatan Firewall: Jika Anda menerima kesalahan seperti Failed to connect to host for DVSNI challenge , firewall server Anda mungkin perlu dikonfigurasi untuk mengizinkan lalu lintas TCP pada port 80 dan 443 .

Catatan: Jika domain Anda merutekan melalui layanan DNS seperti CloudFlare, Anda harus menonaktifkannya untuk sementara hingga Anda mendapatkan sertifikat.

Berkas Sertifikat

Setelah mendapatkan sertifikat, Anda akan memiliki file berkode PEM berikut:

  • cert.pem: Sertifikat domain Anda
  • chain.pem: Sertifikat rantai Let's Encrypt
  • fullchain.pem:cert.pem dan chain.pem digabungkan
  • privkey.pem: Kunci pribadi sertifikat Anda

Anda dapat memeriksa apakah file tersebut ada dengan menjalankan perintah ini (mengganti nama domain Anda):

sudo ls -l /etc/letsencrypt/live/your_domain_name

Output harus berupa empat file sertifikat yang disebutkan sebelumnya. Sebentar lagi, Anda akan mengonfigurasi server web Anda untuk menggunakan fullchain.pem sebagai file sertifikat, dan privkey.pem sebagai file kunci sertifikat.

Hasilkan Grup Diffie-Hellman yang Kuat

Untuk lebih meningkatkan keamanan, buat grup Diffie-Hellman yang kuat dengan menggunakan perintah:

sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048

Jalur grup DH adalah /etc/ssl/certs/dhparam.pem 2048

Langkah 3 — Konfigurasikan TLS/SSL di Server Web (Nginx)

Sekarang Anda harus mengkonfigurasi server web Nginx Anda untuk menggunakannya. Edit konfigurasi Nginx yang berisi blok server Anda :

sudo nano /etc/nginx/sites-available/default

Temukan server memblokir. Berkomentarlah atau hapus baris yang mengkonfigurasi blok server ini untuk mendengarkan pada port 80. Dalam konfigurasi default, dua baris ini harus dihapus:

Penghapusan konfigurasi Nginx
        listen 80 default_server;
        listen [::]:80 default_server ipv6only=on;

Kami akan mengonfigurasi blok server ini untuk mendengarkan pada port 443 dengan SSL diaktifkan sebagai gantinya. Dalam server { . Anda blok, tambahkan baris berikut tetapi ganti semua instance example.com dengan domain Anda sendiri:

Penambahan konfigurasi Nginx — 1 dari 3
        listen 443 ssl;

        server_name example.com www.example.com;

        ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

Ini memungkinkan server Anda menggunakan SSL, dan memerintahkannya untuk menggunakan sertifikat Let's Encrypt SSL yang kami peroleh sebelumnya.

Untuk mengizinkan hanya protokol dan sandi SSL yang paling aman, dan menggunakan grup Diffie-Hellman kuat yang kami buat, tambahkan baris berikut ke blok server yang sama:

Penambahan konfigurasi Nginx — 2 dari 3
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers on;
        ssl_dhparam /etc/ssl/certs/dhparam.pem;
        ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';
        ssl_session_timeout 1d;
        ssl_session_cache shared:SSL:50m;
        ssl_stapling on;
        ssl_stapling_verify on;
        add_header Strict-Transport-Security max-age=15768000;

Terakhir, di luar blok server asli (yang mendengarkan di HTTPS, port 443), tambahkan blok server ini untuk mengalihkan HTTP (port 80) ke HTTPS.

Penambahan konfigurasi Nginx — 3 dari 3
server {
    listen 80;
    server_name example.com www.example.com;
    return 301 https://$host$request_uri;
}

Simpan dan keluar.

Uji file konfigurasi untuk kesalahan sintaks dengan mengetik:

sudo nginx -t

Setelah Anda memverifikasi bahwa tidak ada kesalahan sintaks, terapkan perubahan dengan memulai ulang Nginx:

sudo service nginx restart

Sertifikat Let's Encrypt TLS/SSL sekarang sudah tersedia. Pada titik ini, Anda harus menguji apakah sertifikat TLS/SSL berfungsi dengan mengunjungi domain Anda melalui HTTPS di browser web.

Anda dapat menggunakan Laporan Labs SSL Qualys untuk melihat bagaimana skor konfigurasi server Anda:

Di browser web:
https://www.ssllabs.com/ssltest/analyze.html?d=example.com

Penyiapan SSL ini harus melaporkan A+ peringkat.

Langkah 4 — Siapkan Perpanjangan Otomatis

Sertifikat Let's Encrypt berlaku selama 90 hari, tetapi sebaiknya Anda memperbarui sertifikat setiap 60 hari untuk memungkinkan margin kesalahan. Pada saat penulisan ini, pembaruan otomatis masih belum tersedia sebagai fitur dari klien itu sendiri, tetapi Anda dapat memperbarui sertifikat secara manual dengan menjalankan certbot-auto klien dengan renew pilihan.

Untuk memicu proses perpanjangan untuk semua domain yang diinstal, jalankan perintah ini:

certbot-auto renew

Karena kami baru saja menginstal sertifikat, perintah hanya akan memeriksa tanggal kedaluwarsa dan mencetak pesan yang menginformasikan bahwa sertifikat belum diperpanjang. Outputnya akan terlihat seperti ini:

Output:
Checking for new version...
Requesting root privileges to run letsencrypt...
   /home/sammy/.local/share/letsencrypt/bin/letsencrypt renew
Processing /etc/letsencrypt/renewal/example.com.conf

The following certs are not due for renewal yet:
  /etc/letsencrypt/live/example.com/fullchain.pem (skipped)
No renewals were attempted.

Perhatikan bahwa jika Anda membuat sertifikat yang dibundel dengan beberapa domain, hanya nama domain dasar yang akan ditampilkan di output, tetapi pembaruan harus valid untuk semua domain yang disertakan dalam sertifikat ini .

Cara praktis untuk memastikan sertifikat Anda tidak kedaluwarsa adalah dengan membuat tugas cron yang secara berkala akan menjalankan perintah pembaruan otomatis untuk Anda. Karena pembaruan pertama-tama memeriksa tanggal kedaluwarsa dan hanya mengeksekusi pembaruan jika sertifikat kurang dari 30 hari dari kedaluwarsa, misalnya, aman untuk membuat tugas cron yang berjalan setiap minggu atau bahkan setiap hari.

Mari kita edit crontab untuk membuat pekerjaan baru yang akan menjalankan perintah pembaruan setiap minggu. Untuk mengedit crontab untuk pengguna root, jalankan:

sudo crontab -e

Tambahkan baris berikut:

entri crontab
30 2 * * 1 /usr/local/sbin/certbot-auto renew >> /var/log/le-renew.log
35 2 * * 1 /etc/init.d/nginx reload

Simpan dan keluar. Ini akan membuat tugas cron baru yang akan menjalankan certbot-auto renew perintahkan setiap hari Senin pukul 02.30, dan muat ulang Nginx pada pukul 02.35 (sehingga sertifikat yang diperbarui akan digunakan). Output yang dihasilkan oleh perintah akan disalurkan ke file log yang terletak di /var/log/le-renewal.log .


Cent OS
  1. Mengamankan ISPConfig 3.1 Dengan Lets Encrypt SSL Certificate Gratis

  2. Let's Encrypt:Dapatkan Sertifikat SSL Gratis Menggunakan Certbot

  3. Cara mendapatkan sertifikat SSL gratis dengan SSL It! dan Ayo Enkripsi di Plesk

  1. Cara Menginstal Sertifikat SSL di Apache untuk CentOS 7

  2. Instal Let's Encrypt di Centos 8

  3. Amankan Apache dengan Let's Encrypt di CentOS 7 - Proses Langkah demi Langkah?

  1. Cerbot Free SSL (Ayo Enkripsi)

  2. Cara Install Let's Encrypt SSL di CentOS 7 Menjalankan Apache Web Server

  3. Cara Setup Let's Encrypt SSL Certificate Dengan Nginx di CentOS 8 / RHEL 8 &CentOS 7 / RHEL 7