GNU/Linux >> Belajar Linux >  >> Linux

Memulai dengan acme.sh Mari Enkripsi klien SSL

Acme.sh adalah klien protokol ACME yang sederhana, kuat, dan mudah digunakan yang ditulis murni dalam bahasa Shell (Unix shell), kompatibel dengan shell bash, dash, dan sh. Ini membantu mengelola penginstalan, perpanjangan, pencabutan sertifikat SSL. Ini mendukung protokol ACME versi 1 dan ACME versi 2, serta sertifikat wildcard ACME v2. Menjadi klien ACME tanpa ketergantungan membuatnya lebih baik. Anda tidak perlu mendownload dan menginstal seluruh internet untuk menjalankannya. Alat ini tidak memerlukan akses root atau sudo, tetapi disarankan untuk menggunakan root.

Acme.sh mendukung metode validasi berikut yang dapat Anda gunakan untuk mengonfirmasi kepemilikan domain:

  • Mode akar web
  • Mode mandiri
  • Mode tls-alpn mandiri
  • Mode Apache
  • Mode Nginx
  • Mode DNS
  • Mode alias DNS
  • Mode tanpa status

Apa itu Let's Encrypt

Let's Encrypt (LE) adalah otoritas sertifikat (CA) yang menawarkan sertifikat SSL/TLS gratis dan otomatis, dengan tujuan mengenkripsi seluruh web. Jika Anda memiliki nama domain dan memiliki akses shell ke server, Anda dapat memanfaatkan Let's Encrypt untuk mendapatkan sertifikat tepercaya tanpa biaya. Let's Encrypt dapat mengeluarkan sertifikat SAN untuk hingga 100 nama host  dan sertifikat wildcard. Semua sertifikat berlaku untuk jangka waktu 90 hari.

Penggunaan Acme.sh dan perintah dasar

Di bagian ini, saya akan menunjukkan beberapa perintah dan opsi acme.sh yang paling umum.

Instalasi Acme.sh

Anda memiliki beberapa opsi untuk menginstal acme.sh.

Instal dari web melalui curl atau wget :

curl https://get.acme.sh | sh
source ~/.bashrc

atau

wget -O - https://get.acme.sh | sh
source ~/.bashrc

Instal dari GitHub :

curl https://raw.githubusercontent.com/Neilpang/acme.sh/master/acme.sh | INSTALLONLINE=1 sh

atau

wget -O - https://raw.githubusercontent.com/Neilpang/acme.sh/master/acme.sh | INSTALLONLINE=1 sh

Git clone dan instal:

git clone https://github.com/Neilpang/acme.sh.git
cd ./acme.sh
./acme.sh --install
source ~/.bashrc

Pemasang akan melakukan 3 tindakan:

  1. Buat dan salin acme.sh ke direktori home Anda ($HOME ):~/.acme.sh/ . Semua sertifikat akan ditempatkan di folder ini juga.
  2. Buat alias untuk:acme.sh=~/.acme.sh/acme.sh .
  3. Buat tugas cron harian untuk memeriksa dan memperbarui sertifikat jika diperlukan.

Penginstalan lanjutan:

git clone https://github.com/Neilpang/acme.sh.git
cd acme.sh
./acme.sh --install \
--home ~/myacme \
--config-home ~/myacme/data \
--cert-home ~/mycerts \
--accountemail "[email protected]" \
--accountkey ~/myaccount.key \
--accountconf ~/myaccount.conf \
--useragent "this is my client."

Anda tidak perlu menyetel semua opsi, cukup setel opsi yang Anda minati.

Opsi dijelaskan:

  • --home adalah direktori khusus untuk menginstal acme.sh in. Secara default, ini diinstal ke ~/.acme.sh.
  • --config-home adalah folder yang dapat ditulis, acme.sh akan menulis semua file (termasuk sertifikat/kunci, konfigurasi) di sana. Secara default, ini ada di --home.
  • --cert-home adalah direktori khusus untuk menyimpan sertifikat yang Anda keluarkan. Secara default, ini disimpan di --config-home .
  • --accountemail adalah email yang digunakan untuk mendaftarkan akun ke Let's Encrypt, Anda akan menerima email pemberitahuan pembaruan di sini. Defaultnya kosong.
  • --accountkey adalah file yang menyimpan kunci pribadi akun Anda. Secara default disimpan di --config-home .
  • --useragent adalah nilai header agen pengguna yang digunakan untuk mengirim ke Let's Encrypt.

Setelah penginstalan selesai, Anda dapat memverifikasinya dengan mencentang acme.sh versi:

acme.sh --version
# v2.8.1

Program ini memiliki banyak perintah dan parameter yang dapat digunakan. Untuk mendapatkan bantuan, Anda dapat menjalankan:

acme.sh --help

Menerbitkan sertifikat SSL

Jika Anda sudah menjalankan server web, Anda harus menggunakan mode root web . Anda akan memerlukan akses tulis ke folder root web. Berikut adalah beberapa contoh perintah yang dapat digunakan untuk mendapatkan sertifikat melalui mode webroot:

Domain tunggal + mode Webroot:

acme.sh --issue -d example.com --webroot /var/www/example.com

Beberapa domain dalam mode sertifikat + Webroot yang sama:

acme.sh --issue -d example.com -d www.example.com -d mail.example.com --webroot /var/www/example.com

Sertifikat ECC/ECDSA domain tunggal + Mode root web:

acme.sh --issue -d example.com --webroot /var/www/example.com --keylength ec-256

Beberapa domain dalam sertifikat ECC/ECDSA yang sama + Mode root web:

acme.sh --issue -d example.com -d www.example.com -d mail.example.com --webroot /var/www/example.com --keylength ec-256

Nilai yang valid untuk --keylength adalah:2048 (default), 3072, 4096, 8192 atau ec-256, ec-384.

Jika Anda tidak memiliki server web, mungkin Anda berada di server SMTP atau FTP, port 80 gratis, maka Anda dapat menggunakan mode standalone. Jika Anda ingin menggunakan mode ini, Anda harus menginstal alat socat terlebih dahulu.

Domain tunggal + mode Mandiri:

acme.sh --issue -d example.com --standalone

Beberapa domain dalam sertifikat yang sama + mode Mandiri:

acme.sh --issue -d example.com -d www.example.com -d mail.example.com --standalone

Jika Anda tidak memiliki server web, mungkin Anda menggunakan server SMTP atau FTP, port 443 gratis. Anda dapat menggunakan mode TLS ALPN mandiri. Acme.sh memiliki server web TLS yang berdiri sendiri, dapat mendengarkan di port 443 untuk mengeluarkan sertifikat.

Domain tunggal + mode ALPN TLS Mandiri:

acme.sh --issue -d example.com --alpn

Beberapa domain dalam sertifikat yang sama + Mode ALPN TLS Mandiri:

acme.sh --issue -d example.com -d www.example.com --alpn

Integrasi API DNS otomatis

Jika penyedia DNS Anda memiliki API, acme.sh dapat menggunakan API untuk secara otomatis menambahkan data TXT DNS untuk Anda. Sertifikat Anda akan diterbitkan dan diperbarui secara otomatis. Tidak diperlukan pekerjaan manual. Sebelum meminta sertifikat, konfigurasikan kunci API dan Email Anda. Saat ini acme.sh memiliki integrasi DNS otomatis dengan sekitar 60 penyedia DNS secara native dan dapat menggunakan alat Lexicon untuk penyedia yang tidak didukung secara native.

Domain tunggal + mode CloudFlare DNS API:

export CF_Key="sdfsdfsdfljlbjkljlkjsdfoiwje"
export CF_Email="[email protected]"
acme.sh --issue -d example.com --dns dns_cf

Wildcard cert + Mode CloudFlare DNS API:

export CF_Key="sdfsdfsdfljlbjkljlkjsdfoiwje"
export CF_Email="[email protected]"
acme.sh --issue -d example.com -d '*.example.com' --dns dns_cf

Jika penyedia DNS Anda tidak mendukung akses API apa pun, Anda dapat menambahkan data TXT secara manual.

acme.sh --issue --dns -d example.com -d www.example.com -d cp.example.com

Anda akan mendapatkan output seperti di bawah ini:

Add the following txt record:
Domain:_acme-challenge.example.com
Txt value:9ihDbjYfTExAYeDs4DBUeuTo18KBzwvTEjUnSwd32-c

Add the following txt record:
Domain:_acme-challenge.www.example.com
Txt value:9ihDbjxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Please add those txt records to the domains. Waiting for the dns to take effect.

Kemudian jalankan kembali dengan renew argumen:

acme.sh --renew -d example.com

Ingatlah bahwa ini adalah mode manual DNS dan Anda tidak dapat memperbarui sertifikat Anda secara otomatis. Anda harus menambahkan data TXT baru ke domain dengan tangan Anda sendiri saat tiba waktunya untuk memperpanjang sertifikat. Jadi gunakan mode DNS API, karena dapat diotomatisasi.

Instal Mari mengenkripsi sertifikat SSL

Setelah sertifikat dibuat, Anda mungkin ingin menginstal/menyalin sertifikat yang diterbitkan ke lokasi yang benar pada disk. Anda harus menggunakan perintah ini untuk menyalin sertifikat ke file target, jangan gunakan file sertifikat di ~/.acme.sh/ folder, mereka hanya untuk penggunaan internal, struktur folder dapat berubah di masa mendatang. Sebelum penginstalan, buat direktori yang masuk akal untuk menyimpan sertifikat Anda. Itu bisa berupa /etc/letsencrypt , /etc/nginx/ssl  atau /etc/apache2/ssl misalnya, bergantung pada perangkat lunak server web Anda dan preferensi Anda sendiri untuk menyimpan hal-hal terkait SSL.

Apache contoh:

acme.sh --install-cert \
--domain example.com \
--cert-file /path/to/cert/cert.pem \
--key-file /path/to/keyfile/key.pem \
--fullchain-file /path/to/fullchain/fullchain.pem \
--reloadcmd "sudo systemctl reload apache2.service"

Nginx contoh:

acme.sh --install-cert \
--domain example.com \
--cert-file /path/to/cert/cert.pem \
--key-file /path/to/keyfile/key.pem \
--fullchain-file /path/to/fullchain/fullchain.pem \
--reloadcmd "sudo systemctl reload nginx.service"

Parameter disimpan dalam file konfigurasi .acme.sh, jadi Anda harus melakukannya dengan benar untuk sistem Anda karena file ini dibaca saat tugas cron menjalankan pembaruan. "reloadcmd" tergantung pada sistem operasi dan sistem init Anda.

Perbarui sertifikat SSL Let's Encrypt

Anda tidak perlu memperbarui sertifikat secara manual. Semua sertifikat akan diperpanjang secara otomatis setiap 60 hari.

Namun, Anda juga dapat memaksa untuk memperbarui sertifikat:

acme.sh --renew -d example.com --force

atau, untuk sertifikat ECC:

acme.sh --renew -d example.com --force --ecc

Cara meningkatkan versi acme.sh

Anda dapat memperbarui acme.sh ke kode terbaru dengan:

acme.sh --upgrade

Anda juga dapat mengaktifkan peningkatan otomatis:

acme.sh --upgrade --auto-upgrade

Kemudian acme.sh akan terus diperbarui secara otomatis.

Itu dia. Jika Anda mengalami masalah, kunjungi halaman wiki acme.sh di https://github.com/Neilpang/acme.sh/wiki.

  • https://github.com/Neilpang/acme.sh
  • https://letsencrypt.org/

Linux
  1. Memulai dengan Zsh

  2. Memulai dengan Lets Encrypt SSL Certificates di Ubuntu

  3. Bagaimana mengelola Lets Encrypt sertifikat SSL/TLS dengan certbot

  1. Mengamankan ISPConfig 3.1 Dengan Lets Encrypt SSL Certificate Gratis

  2. Memulai dengan ls

  3. Memulai PostgreSQL di Linux

  1. Memulai dengan GnuCash

  2. Memulai dengan Etcher.io

  3. Memulai dengan ekspresi reguler