Memperbarui domain menggunakan certbot dan menggunakan tantangan DNS

9

Saya membuat beberapa sertifikat SSL untuk beberapa domain menggunakan metode mandiri. Saya hanya tertarik pada sertifikat, tanpa integrasi server.

Mereka sekarang untuk pembaruan. Jadi, saya berlari:

certbot -d example.com --manual --preferred-challenges dns certonly

Dan ikuti instruksi untuk setiap domain (menambahkan entri DNS yang diperlukan untuk masing-masing domain). Dengan cara ini, saya tidak perlu menghentikan server dan mendapatkan sertifikat baru saya.

Pemahaman saya (samar-samar) tentang itu semua adalah bahwa tidak ada cara saat ini untuk memperbarui sertifikat secara otomatis menggunakan tantangan DNS. Atau mungkin Anda tidak dapat memperbarui sertifikat secara otomatis untuk metode "manual"?

Bagaimanapun, saya, menulis skrip ini:

#!/bin/bash

for i in renewal/*;do
  n=${i:8:-5};
  echo $n;
  # echo "\n" | certbot --text --agree-tos -d $n --manual --preferred-challenges dns --expand --renew-by-default  --manual-public-ip-logging-ok certonly;
done

Pada titik ini, dalam renewaldirektori, SEMUA domain memiliki:

authenticator = manual

Dan:

pref_challs = dns-01

Pertanyaan:

  • Sekarang ... ketika saya menjalankan "certbot renew", apakah itu akan memperbarui semuanya secara otomatis tanpa menggunakan skrip saya?

  • Bagaimana cara saya benar-benar membuat sertifikat baru menggunakan tantangan DNS untuk memulai?

Merc
sumber

Jawaban:

4

Jawaban yang diperbarui (lihat jawaban asli di bawah)

Dalam jawaban asli saya, saya fokus pada fakta bahwa skrip yang Anda berikan tidak diperlukan saat menggunakan renewperintah. Namun, saya tidak memastikan renewperintah itu benar-benar berlaku dalam skenario ini.

Seperti cdhowie dan bobpaul dalam status komentar: certbot renewadalah mode non-interaktif yang - bersamaan dengan tantangan dns - mengharuskan Anda untuk menyediakan skrip melalui --manual-auth-hookparameter. Script tersebut harus mampu membuat TXTcatatan. Anda juga dapat memberikan skrip lain untuk dibersihkan setelah melalui --manual-cleanup-hookparameter.

Jika Anda memberikan parameter ini, seluruh proses akan berjalan secara otomatis tanpa interaksi apa pun.

Jika Anda tidak memberikan parameter ini, certbot akan gagal:

/opt/certbot # certbot renew --force-renewal
Saving debug log to /var/log/letsencrypt/letsencrypt.log

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Processing /etc/letsencrypt/renewal/foobar.w9f.de.conf
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Could not choose appropriate plugin: The manual plugin is not working; there may be problems with your existing configuration.
The error was: PluginError('An authentication script must be provided with --manual-auth-hook when using the manual plugin non-interactively.',)

Jika Anda ingin memperbarui sertifikat melalui mode manual, Anda harus menjalankan kembali perintah yang Anda gunakan untuk mendapatkan sertifikat. Dalam hal ini, skrip Anda adalah opsi yang bagus karena certonlyperintah tersebut tidak melihat sertifikat / konfigurasi yang ada dan sebaliknya mengharuskan Anda untuk memberikan nama domain baik melalui -dparameter atau dalam mode interaktif.


ketika saya menjalankan "certbot renew", akankah ia memperbarui semuanya secara otomatis tanpa menggunakan skrip saya?

TL; DR: Ya, seharusnya begitu.

Mari kita lihat dokumentasi certbot :

Pada versi 0.10.0, Certbot mendukung tindakan pembaruan untuk memeriksa semua sertifikat yang diinstal untuk kedaluwarsa yang akan datang dan berupaya memperbaruinya. Bentuk yang paling sederhana adalah sederhana

certbot renew

Sejauh ini bagus.

Perintah ini mencoba untuk memperbarui sertifikat yang diperoleh sebelumnya yang kedaluwarsa dalam waktu kurang dari 30 hari.

Ini seharusnya menjawab pertanyaan Anda. Hati-hati: Saya tidak tahu seberapa baik certbotdapat menangani situasi di mana Anda memindahkan sertifikat ke direktori yang berbeda.

Kemudian dalam paragraf yang sama:

Plugin dan opsi yang sama yang digunakan pada saat sertifikat awalnya dikeluarkan akan digunakan untuk upaya pembaruan, kecuali jika Anda menentukan plugin atau opsi lain. Tidak seperti certonly, renewbertindak berdasarkan beberapa sertifikat dan selalu mempertimbangkan apakah masing-masing hampir kedaluwarsa.

Jadi iya; certbotharus memperbarui semua sertifikat Anda tanpa bantuan skrip Anda.


Bagaimana cara saya membuat sertifikat baru menggunakan tantangan DNS untuk memulainya?

Apa yang salah dengan perintah yang Anda posting di awal posting Anda? certbot -d example.com --manual --preferred-challenges dns certonlyakan memperoleh sertifikat untuk example.com menggunakan tantangan dns.

Langkah-langkah untuk membuat sertifikat adalah:

  • Jalankan certbotperintah yang Anda posting
  • Tunggu perintah untuk menampilkan catatan DNS TXT
  • Buat catatan TXT itu
  • Lanjutkan certbotperintah
  • Dapatkan sertifikat untuk domain yang ditentukan
  • Hapus data TXT (karena Anda hanya membutuhkannya untuk pembuatan dan yang baru untuk pembaruan)

Jika Anda ingin mengotomatiskan proses lengkap itu, Anda mungkin ingin melihat alat seperti lego yang mendukung beberapa penyedia DNS .

malte
sumber
Fantastis, akan memberi tahu Anda jika berfungsi dalam beberapa bulan!
Merc
Ya, jadi umumnya tidak digunakan --manual. Seluruh tujuan --manualadalah untuk memaksa mode interaktif. Tetapi Anda dapat menggunakan plugin DNS seperti aws atau digitalocean certonlytanpa --manualopsi dan mereka akan diperpanjang secara otomatis sebelum 90 hari.
bobpaul
Terima kasih atas masukannya, saya telah memperbarui jawabannya.
malte