Certbot: Bagaimana cara mengaktifkan ACMEv2 dan pengambilan sertifikat wildcard?

Dibuat pada 13 Mar 2018  ·  30Komentar  ·  Sumber: certbot/certbot

Jika Anda mengalami masalah saat menggunakan Certbot dan tidak yakin menemukan bug atau
minta fitur baru, coba minta bantuan dulu di
https://community.letsencrypt.org/. Ada komunitas yang jauh lebih besar di sana
orang yang akrab dengan proyek yang akan dapat lebih cepat menjawab pertanyaan Anda
pertanyaan.

Sistem operasi saya adalah (termasuk versi):

Ubuntu 16.04 Server.

Saya menginstal Certbot dengan (certbot-auto, manajer paket OS, pip, dll):

2 Versi: Paket Plesk, paket certbot dari repo certbot.
Versi paket Certbot: 0.21.1

Saya menjalankan perintah ini dan menghasilkan output ini:

Dalam: certbot -d *.works.wtf certonly
Keluar: Wildcard domains are not supported: *.works.wtf

Perilaku Certbot berbeda dari yang saya harapkan karena:

Situs LetsEncrypt mengatakan bahwa Certbot sekarang kompatibel dengan api ACMEv2.

Berikut adalah log Certbot yang menunjukkan masalah (jika tersedia):

Log disimpan di /var/log/letsencrypt secara default. Jangan ragu untuk menyunting domain, email, dan alamat IP sesuai keinginan Anda.

Berikut adalah blok server nginx yang relevan atau virtualhost Apache untuk domain yang saya konfigurasikan:

T/A, tentu saja

Komentar yang paling membantu

Ya, Anda dapat menggunakan certbot dari sumber

root<strong i="6">@cs12</strong>:~# git clone https://github.com/certbot/certbot
...
root<strong i="7">@cs12</strong>:~# DOMAIN=example.com
root<strong i="8">@cs12</strong>:~# cd certbot 
root<strong i="9">@cs12</strong>:~/certbot# ./certbot-auto certonly --manual -d *.$DOMAIN -d $DOMAIN --agree-tos --manual-public-ip-logging-ok --preferred-challenges dns-01 --server https://acme-v02.api.letsencrypt.org/directory
...
-------------------------------------------------------------------------------
Please deploy a DNS TXT record under the name
_acme-challenge.example.com with the following value:

qqiR_lsa2AjMfoVR16mH4UDbOxy_E02l0K1CNyz1RdI

Before continuing, verify the record is deployed.
-------------------------------------------------------------------------------
Press Enter to Continue

Tambahkan data TXT tekan Enter. Anda akan mendapatkan satu catatan lagi. Tambahkan juga.

Kemudian periksa di jendela terminal kedua jika catatan dikerahkan:

root<strong i="15">@cs12</strong>:~# host -t txt _acme-challenge.example.com
_acme-challenge.example.com descriptive text "qqiR_lsa2AjMfoVR16mH4UDbOxy_E02l0K1CNyz1RdI"
_acme-challenge.example.com descriptive text "oMmMa-fDLlebdUhvhMD5MinJ2EeFpdP0F9lUPTShh4w"

Jika baik-baik saja kembali dan tekan Enter

Waiting for verification...
Cleaning up challenges

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/example.com/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/example.com/privkey.pem
   Your cert will expire on 2018-06-11. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot-auto
   again. To non-interactively renew *all* of your certificates, run
   "certbot-auto renew"
 - If you like Certbot, please consider supporting our work by:

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

Pembaruan: Lihat panduan lengkap

Semua 30 komentar

Anda harus menggunakan tantangan DNS-01 . Yang berarti Anda harus memiliki cara untuk memodifikasi dan mempublikasikan dan memperbarui zona DNS dari dalam server Anda.

Bisakah Anda memberi tahu saya bendera untuk ini?

Ini bukan hanya bendera, tetapi semuanya tersedia di dokumen. Itu adalah beberapa plugin untuk beberapa penyedia DNS yang terdaftar di sana, jika bukan milik Anda, Anda dapat membuka permintaan fitur di sini untuk meminta dukungannya (sudah ada beberapa yang terbuka untuk hal-hal seperti Gandi misalnya, jadi pastikan untuk menggunakan pencarian sebelum membuka a baru).

Hum tidak, Anda membutuhkan certbot >= 0.22 sebenarnya, maaf karena melewatkannya di posting pertama Anda.

OK.... Bagaimana cara menginstal itu? Apakah saya harus mengkompilasi dari sumber?

Anda dapat menunggunya untuk dipublikasikan di PPA , menginstal melalui pip atau yang serupa atau memang membangun dari sumber.

Apakah saya menjadi Anda, saya lebih suka menunggu paket resmi diperbarui. Ini akan memberi Anda waktu untuk melihat pengaturan tantangan DNS dengan benar, yang sudah dapat Anda coba tanpa wildcard hanya untuk memeriksa semuanya berfungsi, dan kemudian ketika pembaruan akan tersedia (yang seharusnya tidak memakan waktu lama), Anda akan siap untuk dapatkan sertifikat wildcard Anda.

Ya, Anda dapat menggunakan certbot dari sumber

root<strong i="6">@cs12</strong>:~# git clone https://github.com/certbot/certbot
...
root<strong i="7">@cs12</strong>:~# DOMAIN=example.com
root<strong i="8">@cs12</strong>:~# cd certbot 
root<strong i="9">@cs12</strong>:~/certbot# ./certbot-auto certonly --manual -d *.$DOMAIN -d $DOMAIN --agree-tos --manual-public-ip-logging-ok --preferred-challenges dns-01 --server https://acme-v02.api.letsencrypt.org/directory
...
-------------------------------------------------------------------------------
Please deploy a DNS TXT record under the name
_acme-challenge.example.com with the following value:

qqiR_lsa2AjMfoVR16mH4UDbOxy_E02l0K1CNyz1RdI

Before continuing, verify the record is deployed.
-------------------------------------------------------------------------------
Press Enter to Continue

Tambahkan data TXT tekan Enter. Anda akan mendapatkan satu catatan lagi. Tambahkan juga.

Kemudian periksa di jendela terminal kedua jika catatan dikerahkan:

root<strong i="15">@cs12</strong>:~# host -t txt _acme-challenge.example.com
_acme-challenge.example.com descriptive text "qqiR_lsa2AjMfoVR16mH4UDbOxy_E02l0K1CNyz1RdI"
_acme-challenge.example.com descriptive text "oMmMa-fDLlebdUhvhMD5MinJ2EeFpdP0F9lUPTShh4w"

Jika baik-baik saja kembali dan tekan Enter

Waiting for verification...
Cleaning up challenges

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/example.com/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/example.com/privkey.pem
   Your cert will expire on 2018-06-11. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot-auto
   again. To non-interactively renew *all* of your certificates, run
   "certbot-auto renew"
 - If you like Certbot, please consider supporting our work by:

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

Pembaruan: Lihat panduan lengkap

Terima kasih telah menjawab dengan saksama @ArchangeGabriel! Kami sedang berupaya memperbarui paket kami untuk Ubuntu, semoga mereka akan segera keluar.

@ohemorange Sama- sama! Sejujurnya, saya khawatir kita akan melihat masuknya orang yang mencoba mendapatkan sertifikat wildcard sementara tidak memiliki wawasan tentang apa tantangan DNS-01 itu, tetapi tampaknya itu tidak terjadi (setidaknya).

Bagus @talyguryn , Sebagai tindak lanjut dari @talyguryn

Saat membuat satu sertifikat di apex dengan wildcard Anda akan mendapatkan __two__ tantangan..

Menggunakan -d "example.com, *.example.com" _beri saya sertifikat di apex dan wildcard di apex_

Anda akan ditantang _dua kali_, sekali untuk example.com dan sekali lagi untuk *.example.com

Jadi jangan berpikir bahwa pada tantangan kedua gagal.. dan Anda perlu mengubah nilainya. tambahkan saja tantangan ekstra ke dns. Tunggu propagasi dan lanjutkan,

Mungkin outputnya harus diubah agar lebih mudah untuk melihat domain mana yang ditantang?

@AubreyHewes , saya mengalami masalah yang sama. Saya tidak yakin bagaimana cara mengeluarkan satu sertifikat untuk example.com dan *.example.com . Sayangnya, certbot mengharuskan saya memodifikasi catatan TXT dua kali. Hal ini menyebabkan validasi gagal untuk salah satu domain. Apakah ada cara untuk mengatasi ini?

@nathan-alden Anda perlu mengatur kedua TXT record pada waktu yang sama. Jangan hapus yang pertama saat menambahkan yang kedua.

@nathan-alden
Anda mendapatkan dua tantangan.. Ini _tampaknya_ seperti certbot ingin Anda mengubah TXT yang sama lagi. Tetapi nilai kedua adalah untuk domain kedua, Jadi tambahkan data TXT baru untuk domain kedua.

yaitu
Jika menggunakan -d "example.com,*.example.com" tantangan pertama adalah untuk example.com jadi tambahkan TXT untuk ini. Lanjutkan setelah propagasi.
Tantangan kedua adalah untuk *.example.com jadi tambahkan TXT untuk ini. Lanjutkan setelah propagasi.

Saya memiliki pengalaman yang baik menggunakan versi buruh pelabuhan. Sebagai catatan tambahan, pastikan untuk mengatur TTL untuk entri TXT ke sekitar 1 menit sehingga Anda tidak perlu menunggu satu jam untuk entri ke-2 untuk disebarkan.

docker run -it --name certbot \
  -v <certs>:/etc/letsencrypt \
  -v <logs>:/var/lib/letsencrypt \
  certbot/certbot certonly --manual \ 
  -d *.<domain.com> -d <domain.com> \
  --agree-tos \
  --manual-public-ip-logging-ok \ 
  --preferred-challenges dns-01 \
  --server https://acme-v02.api.letsencrypt.org/directory

Bertanya-tanya. Mengapa kita membutuhkan dns-01 . Tidak bisakah Anda menelurkan server di port 80 (segala bentuk tantangan http ) dan menyelidiki saya memiliki domain wildcard dengan menghasilkan N subdomain acak dan menghubungkan?

@AubreyHewes , saya telah menemukan bahwa Anda hanya perlu satu tantangan/catatan di DNS - hanya perlu menebak yang benar.

Saya memiliki satu sertifikat untuk empat domain dan wildcard mereka. Setiap domain hanya memiliki satu TXT _acme-challenge. Ini sangat tidak konsisten karena tiga domain bekerja dengan tantangan pertama dalam output certbot dan nilainya tampaknya sama setiap kali saya menjalankannya.

Domain keempat tidak berfungsi dengan catatan pertama dalam output tetapi berfungsi dengan yang kedua dan yang ini sepertinya berubah setiap kali saya menjalankan certbot.

Saya menggunakan perintah ini:

/usr/bin/certbot --renew-by-default certonly --manual --server https://acme-v02.api.letsencrypt.org/directory --preferred-challenges dns-01 -w /usr/share/nginx/letsencrypt-root/ -d *.domain1.sk -d domain1.sk -d *.domain2.sk -d domain2.sk -d *.domain3.sk -d domain3.sk -d *.domain4.sk -d domain4.sk

Saya melakukan ini dengan coba-coba - saya hanya tidak tahu bahwa Anda dapat memiliki dua catatan DNS yang sama dengan nilai yang berbeda :-) Lain kali saya akan mencobanya.

@robertvalik Tidak mungkin menggunakan nilai record TXT sama untuk dua validasi yang berbeda, termasuk example.com dan *.example.com .

Let's Encrypt memungkinkan otorisasi untuk digunakan kembali untuk sementara waktu, saat ini 30 hari. Jika akun Anda memvalidasi sesuatu baru-baru ini, itu dapat mengeluarkan lebih banyak sertifikat tanpa memvalidasi lagi. Namun, karena keterbatasan Certbot (#5342), Certbot meminta Anda untuk menyetel kembali record TXT sama, meskipun tidak akan diperiksa lagi.

Jadi yang pasti terjadi adalah bahwa sudah ada otorisasi yang valid untuk salah satu nama, jadi fakta bahwa catatan DNS yang diperlukan tidak ada lagi tidak masalah.

@francoism90 Seseorang mungkin menginginkan domain wildcard karena beberapa alasan, seseorang dapat melayani beberapa subdomain statis, lainnya, melayani subdomain yang berpotensi tak terbatas (misalnya perangkat lunak sebagai layanan). Dalam kasus terakhir (kasus saya,) seseorang sudah memiliki wildcard dalam file DNS, dan sebenarnya setiap subdomain acak harus diselesaikan dengan benar. Saya bertanya-tanya apakah bentuk tantangan http dapat disediakan untuk skenario ini. Terima kasih untuk semua kerja keras Anda!

Saya berhasil membuat sertifikat dengan menerbitkan

./certbot-auto certonly --manual -d *.example.com -d example.com --agree-tos --manual-public-ip-logging-ok --preferred-challenges dns-01 --server https://acme-v02.api.letsencrypt.org/directory

Sekarang saya hanya ingin tahu bagaimana saya bisa memperbarui sertifikat

<> certbot renew
<> certbot-renew
<> certbot-auto renew

Saya bingung, saya mencoba ./certbot-auto renew karena saya menggunakan perintah yang sama saat meminta, tetapi saya hanya ingin memastikan apakah itu cara yang benar.

Bisakah kita mengotomatisasi sertifikasi wildcard?

@ufo911 Tentu saja. Misalnya, menggunakan plugin RFC 2136 Certbot :

certbot certonly \
  --dns-rfc2136 \
  --dns-rfc2136-credentials ~/.secrets/certbot/rfc2136.ini \
  --server https://acme-v02.api.letsencrypt.org/directory \
  -d example.com \
  -d "*.example.com"

Atau kait autentikasi manual acme-dns :

certbot certonly \
  --debug-challenges \
  --manual \
  --manual-auth-hook /etc/letsencrypt/acme-dns-auth.py \
  --server https://acme-v02.api.letsencrypt.org/directory \
  -d example.com \
  -d "*.example.com"

https://certbot.eff.org/docs/using.html
https://community.letsencrypt.org/t/getting-wildcard-certificates-with-certbot/56285

Jika Anda memerlukan bantuan, Anda dapat memposting topik di forum Let's Encrypt .

@mnordhoff
apakah catatan TXT DNS harus aktif setiap pembaruan?

@ufo911 Tentu saja, pembaruan hanyalah permintaan sertifikat menggunakan kembali parameter sebelumnya.

@ArchangeGabriel Stange memberi tahu saya bahwa ini memberi tahu saya untuk mengatur catatan TXT baru:

#!/bin/bash
certbot certonly \
  --manual \
  --agree-tos \
  --manual-public-ip-logging-ok \
  --preferred-challenges dns-01 \
  --server https://acme-v02.api.letsencrypt.org/directory \
  -d domain.tld \
  -d "*.domain.tld"

Apakah ini normal? Mengapa token baru dibuat?

Maaf jika saya tidak jelas, ya ada catatan TXT baru di setiap permintaan. Karena ini adalah validasi tantangan-tanggapan, dan menggunakan kembali tantangan akan menjadi ide yang sangat buruk.

Jadi sebenarnya Anda dapat menghapus data TXT segera setelah Anda mendapatkan sertifikat, tetapi ada data TXT baru untuk dipublikasikan (dan dihapus setelah berhasil) setiap kali Anda memperbarui.

@ArchangeGabriel Hmm, jangan pikir itu pilihan bagi saya. Membuat catatan TXT baru mungkin memerlukan waktu 24 jam untuk diselesaikan dan jika terjadi kesalahan, Anda akan mengalami banyak waktu henti.

Saya akan menggunakan cara umum sebagai gantinya. :)

Tentu, tantangan DNS bukanlah yang termudah. Tapi untuk wildcard, tidak ada kemungkinan lain, setidaknya saat ini. Saya tidak tahu apakah misalnya ini dapat diganti dengan mengirimkan tantangan ke nama subdomain acak di ruang wildcard (misalnya jika Anda meminta *.domain.com , itu akan mencoba membaca respons tantangan di somerandomstring.domain.com untuk memverifikasi bahwa Anda memang memiliki kendali atas seluruh ruang *.domain.com ). Dengan cara ini memiliki pengalihan wildcard Anda di DNS sudah cukup.

@ArchangeGabriel Ini akan menjadi opsi yang bagus, tetapi apakah verifikasi DNS masih diperlukan dalam kasus ini? Apakah itu menawarkan sesuatu yang diperlukan untuk pengaturan wildcard yang aman?

Tidak, ide saya adalah menawarkan alternatif untuk tantangan DNS.

Untuk pengaturan wildcard, Anda perlu membuktikan kontrol atas semua subdomain. Satu-satunya cara yang jelas untuk melakukannya adalah dengan membuktikan kepemilikan teknis dari zona DNS yang sesuai.

Sekarang saya bertanya-tanya apakah mungkin ada cara lain yang lebih seperti jenis tantangan lainnya. Meminta subdomain acak akan membuktikan bahwa Anda memiliki kendali atas pengalihan wildcard. Saya tidak tahu apakah itu cukup untuk IETF, saya kira mereka telah memikirkannya dan pasti ada beberapa masalah.

Misalnya saya bertanya-tanya apakah kasus ini mungkin:
– somespecificsub.domain.com menunjuk ke IP yang diberikan;
– *.domain.com dan domain.com menunjuk ke IP lain.

Dalam hal ini, Anda dapat menjawab permintaan untuk domain utama dan subdomain apa pun kecuali somespecificsub.domain.com. Dan saya pikir tidak tepat untuk memberikan Anda sertifikat *.domain.com. Jadi jika itu mungkin, maka kita perlu beberapa pengaturan tambahan. Seperti catatan TXT permanen yang memberi tahu bahwa itu diizinkan untuk melakukan verifikasi subdomain acak untuk respons tantangan wildcard. Dengan begitu konfigurasi DNS akan menjadi fire-and-forget, dan Anda dapat lebih mudah memvalidasi wildcard.

Bagaimanapun, saya tidak tahu dengan siapa ini harus didiskusikan dan pada titik mana mereka telah mempertimbangkan pengaturan ini, juga kriteria apa yang diperlukan untuk mengirimkan wildcard dengan aman. Saya kira saya harus membaca RFC untuk itu, tetapi saya tidak punya waktu untuk ini.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat