Let's Encrypt ogłosił, że mają:
Włączono obsługę wyzwania DNS ACME
Jak ./letsencrypt-auto
wygenerować nowy certyfikat przy użyciu sprawdzania poprawności domeny DNS?
EDYCJA
Mam na myśli: Jak uniknąć http/https
wiązania portów, używając nowo ogłoszonej funkcji (2015-01-20), która pozwala udowodnić własność domeny poprzez dodanie określonego rekordu TXT w strefie DNS domeny docelowej?
lets-encrypt
Pierre Prinetti
źródło
źródło
Odpowiedzi:
Obecnie możliwe jest sprawdzenie poprawności DNS również za pomocą klienta certbot LetsEncrypt w trybie ręcznym. Możliwa jest również automatyzacja (patrz poniżej).
Wtyczka ręczna
Możesz albo dokonać ręcznej weryfikacji - za pomocą ręcznej wtyczki.
Certbot dostarczy następnie instrukcje dotyczące ręcznej aktualizacji rekordu TXT dla domeny w celu kontynuacji sprawdzania poprawności.
Po zaktualizowaniu rekordu DNS naciśnij klawisz Enter, certbot będzie kontynuował, a jeśli LetsEncrypt CA zweryfikuje wyzwanie, certyfikat zostanie wydany jak zwykle.
Możesz także użyć polecenia z większą liczbą opcji, aby zminimalizować interaktywność i odpowiadać na pytania certyfikatów. Pamiętaj, że ręczna wtyczka nie obsługuje jeszcze trybu nieinteraktywnego.
Odnowienie nie działa z ręczną wtyczką, ponieważ działa w trybie nieinteraktywnym. Więcej informacji w oficjalnej dokumentacji Certbot .
Aktualizacja: ręczne zaczepy
W nowej wersji Certbot można używać haków , na przykład
--manual-auth-hook
,--manual-cleanup-hook
. Haki to zewnętrzne skrypty wykonywane przez Certbot w celu wykonania zadania.Informacje są przekazywane w zmiennych środowiskowych - np. Domena do weryfikacji, token wyzwania. Vars:
CERTBOT_DOMAIN
,CERTBOT_VALIDATION
,CERTBOT_TOKEN
.Możesz napisać własny moduł obsługi lub użyć już istniejącego, istnieje wiele dostępnych, np. Dla Cloudflare DNS.
Więcej informacji na temat oficjalnej dokumentacji haków Certbot
Automatyzacja, odnawianie, tworzenie skryptów
Jeśli chcesz zautomatyzować weryfikację wyzwań DNS, obecnie nie jest to możliwe dzięki vanila certbot.Aktualizacja: pewna automatyzacja jest możliwa dzięki hakom Certbot.W ten sposób stworzyliśmy prostą wtyczkę, która obsługuje skrypty z automatyzacją DNS. Jest dostępny jako certbot-external-auth .
Obsługuje metody sprawdzania poprawności DNS, HTTP, TLS-SNI. Można go użyć w trybie modułu obsługi lub w trybie wyjściowym JSON.
Tryb obsługi
W trybie obsługi wtyczka certbot + wywołuje zewnętrzne zaczepienia (program, skrypt powłoki, python, ...) w celu przeprowadzenia weryfikacji i instalacji. W praktyce piszesz prosty skrypt obsługi / powłoki, który pobiera argumenty wejściowe - domena, token i dokonuje zmiany w DNS. Po zakończeniu procedury obsługi certbot kontynuuje walidację jak zwykle.
Daje to dodatkową elastyczność, możliwa jest także odnowa.
Tryb obsługi jest również kompatybilny z hakami odwodnionego DNS (wcześniej letsencrypt.sh). Istnieje już wiele haków DNS dla popularnych dostawców (np. CloudFlare, GoDaddy, AWS). W repozytorium znajduje się plik README z obszernymi przykładami i procedurami obsługi przykładów.
Przykład z hakiem odwodnionego DNS:
Tryb JSON
Kolejnym trybem wtyczki jest tryb JSON. Tworzy jeden obiekt JSON w wierszu. Umożliwia to bardziej skomplikowaną integrację - np. Ansible lub jakiś menedżer wdrażania dzwoni do certbota. Komunikacja odbywa się za pośrednictwem STDOUT i STDIN. Cerbot produkuje obiekt JSON z danymi w celu przeprowadzenia weryfikacji, np.
Po aktualizacji DNS wywołujący wysyła znak nowej linii do STDIN certbota, aby go zasygnalizować, może kontynuować sprawdzanie poprawności.
Umożliwia to automatyzację i zarządzanie certyfikatami z centralnego serwera zarządzania. Do instalacji możesz wdrożyć certyfikaty przez SSH.
Aby uzyskać więcej informacji, zapoznaj się z plikiem Readme i przykładami na GitHub certbot-external-auth .
EDYCJA: Jest też nowy post na blogu opisujący problem z weryfikacją DNS i użyciem wtyczki.
EDYCJA: obecnie pracujemy nad 2-etapową weryfikacją Ansible, wkrótce będzie dostępna.
źródło
certbot certonly --preferred-challenges dns -d example.com
) dla pierwszego żądania. Po przetestowaniu i przełączeniu rekordu A użyj wspólnej metody webroot (certbot certonly webroot -d example.com -w /path/to/webroot
), używając dokładnie takich samych nazw domen jak poprzednio. Jeśli zostanie to wykonane poprawnie, certbot rozpozna istniejący certyfikat / konfigurację i zaktualizuje ustawienia odnawiania, więc certyfikat zostanie automatycznie odnowiony w przyszłości.Byłem w stanie użyć
dehydrated
klienta do uzyskania certyfikatu przy użyciu sprawdzania poprawności DNS.https://github.com/lukas2511/dehydrated
Musisz użyć poprawnego haka sprawdzania poprawności DNS dla swojej domeny, ale istnieje kilka opcji dostępnych jako przykłady:
https://github.com/lukas2511/dehydrated/wiki/Examples-for-DNS-01-hooks
źródło
route53.rb
skrypcie przechwytującym .Na dzień dzisiejszy oficjalny klient nie obsługuje (jeszcze) typu wyzwania DNS-01.
Zobacz https://community.letsencrypt.org/t/status-of-official-letsencrypt-clients-dns-01-challenge-support/9427
Możesz śledzić postępy w tym PR . Alternatywnie, niektórzy klienci już to obsługują.
źródło
I napisał skrypt hak dla klienta letsencrypt.sh który pozwala używać Umożliwia weryfikację Szyfrowanie DNS dla dostawców DNS, które nie przewidują API do użycia (aka, konieczne jest ręczne wprowadzanie i weryfikacja).
Możesz to sprawdzić tutaj: https://github.com/jbjonesjr/letsencrypt-manual-hook
źródło
Jak wspomniano w poprzednich odpowiedziach, możesz łatwo zweryfikować domenę przez DNS za pomocą:
apt-get install -y git ruby letsencrypt git clone https://github.com/lukas2511/dehydrated.git git clone https://github.com/jbjonesjr/letsencrypt-manual-hook.git dehydrated/hooks/manual
./dehydrated/dehydrated -c -t dns-01 -d www.example.com -k ./dehydrated/hooks /manual/manual_hook.rb
źródło
Po wypróbowaniu różnych kombinacji, to działało dla mnie przy użyciu odwodnionych i letsencrypt-manual-hook- repozytoria git. Jeśli poniższe kroki działają dla Ciebie, nie zapomnij oznaczyć gwiazdką tych repozytoriów
UWAGA: Jest to dodatek do odpowiedzi panticz.de i alexcline
Otrzymasz skrót (po uruchomieniu powyższego polecenia), utwórz rekord TXT w swoim DNS. Upewnij się, że działa, uruchamiając poniższe polecenie lub GSuite Toolbox
Teraz naciśnij klawisz Enter po znaku zachęty. Nie działało to dla mnie, chociaż rekord TXT został zaktualizowany. Musiałem nacisnąć Ctrl + C i ponownie uruchomić polecenie.
Teraz Twoje publiczne i prywatne certyfikaty są tutaj obecne.
Aby odnowić (minimalny czas oczekiwania wynosi 30 dni), ponownie wykonaj to samo polecenie.
źródło
Hugo Landau napisał w Go klienta ACME ( https://github.com/hlandau/acme ), który obsługuje wyzwania DNS (z protokołem nsupdate BIND). Działa dla mnie bezbłędnie przez co najmniej 18 miesięcy.
źródło