Soru DNS saldırı doğrulama şifrelemek için nasıl kullanılır?


Şifreleyin açıkladı onlar sahip:

ACME DNS sorunu için destek açıldı

Nasıl yaparım ./letsencrypt-auto DNS meydan etki alanı doğrulamasını kullanarak yeni bir sertifika oluşturulsun mu?

DÜZENLE
Demek istediğim: Nasıl kaçınırım http/https Bağlantı noktası bağlama, yeni etkilenen özelliği (2015-01-20) kullanarak, hedef etki alanının DNS bölgesinde belirli bir TXT kaydı ekleyerek etki alanı sahipliğini kanıtlamanıza olanak tanır?


124
2018-01-21 22:13


Menşei


Kenar notu: Certbot (bu, letsencrypt istemcisinin yeni adıdır) artık varsayılan olarak webroot tabanlı kimlik doğrulamasına izin veriyor. - Pierre Prinetti


Cevaplar:


Şu anda bir de DNS doğrulama gerçekleştirmek mümkündür certbot Manuel modda LetsEncrypt istemcisi. Otomasyon da mümkündür (aşağıya bakınız).

Manuel eklenti

Manuel bir doğrulama gerçekleştirebilirsiniz - manuel eklenti ile.

certbot -d bristol3.pki.enigmabridge.com --manual --preferred-challenges dns certonly

Daha sonra Certbot, doğrulama işlemine devam etmek için alan adına yönelik bir TXT kaydını manuel olarak güncellemek için bir talimat sunacaktır.

Please deploy a DNS TXT record under the name
_acme-challenge.bristol3.pki.enigmabridge.com with the following value:

667drNmQL3vX6bu8YZlgy0wKNBlCny8yrjF1lSaUndc

Once this is deployed,
Press ENTER to continue

DNS kaydını güncelledikten sonra Enter tuşuna basın, certbot devam edecek ve LetsEncrypt CA zorluğu doğrularsa, sertifika normal olarak verilir.

Ayrıca, etkileşimi en aza indirmek ve certbot sorularını yanıtlamak için daha fazla seçenek içeren bir komut da kullanabilirsiniz. Manuel eklentinin henüz etkileşimli olmayan modu desteklemediğini unutmayın.

certbot --text --agree-tos --email you@example.com -d bristol3.pki.enigmabridge.com --manual --preferred-challenges dns --expand --renew-by-default  --manual-public-ip-logging-ok certonly

Yenileme, etkileşimli olmayan modda çalıştığı için manuel eklenti ile çalışmaz. Resmi Certbot'ta daha fazla bilgi belgeleme.

Güncelleme: manuel kanca

Yeni Certbot sürümünde kullanabilirsiniz kancalar, Örneğin. --manual-auth-hook, --manual-cleanup-hook. Kancalar, görevi gerçekleştirmek için Certbot tarafından yürütülen harici komutlardır.

Bilgi, ortam değişkenlerine aktarılır - örneğin, doğrulamak için alan adı, sorgu jetonu. Vars: CERTBOT_DOMAIN, CERTBOT_VALIDATION, CERTBOT_TOKEN.

certbot certonly --manual --preferred-challenges=dns --manual-auth-hook /path/to/dns/authenticator.sh --manual-cleanup-hook /path/to/dns/cleanup.sh -d secure.example.com

Kendi işleyicinizi yazabilir veya mevcut olanı kullanabilirsiniz, örneğin Cloudflare DNS için çok sayıda kullanılabilir.

Resmi Certbot hakkında daha fazla bilgi kanca belgeleri

Otomasyon, Yenileme, Komut Dosyası

DNS zorluklarını doğrulama işlemini otomatikleştirmek isterseniz, şu anda vanila certbot ile mümkün değildir. Güncelleme: Certbot kancalarıyla bazı otomasyon mümkündür.

Böylece, DNS otomasyonu ile komut dosyalarını destekleyen basit bir eklenti yarattık. Olarak kullanılabilir certbot-dış-yetkilendirme.

pip install certbot-external-auth

DNS, HTTP, TLS-SNI doğrulama yöntemlerini destekler. Ya işleyici modunda veya JSON çıkış modunda kullanabilirsiniz.

İşleyici modu

İşleyici modunda, certbot + eklentisi doğrulama ve yüklemeyi gerçekleştirmek için harici kancaları (program, kabuk komut dosyası, python ...) çağırır. Pratikte, giriş argümanlarını alan basit bir eylemci / kabuk betiği yazarsınız - etki alanı, belirteci ve DNS'de değişiklik yapar. İşleyici bittiğinde, certbot her zamanki gibi onaylamaya devam eder.

Bu size ekstra esneklik sağlar, yenileme de mümkündür.

Handler modu da uyumlu susuz DNS kancaları (eski letsencrypt.sh). Ortak sağlayıcılar için zaten birçok DNS kanca vardır (örneğin, CloudFlare, GoDaddy, AWS). Depoda geniş örneklere ve örnek işleyicilere sahip bir README var.

İle örnek susuz DNS kancası:

certbot \
    --text --agree-tos --email you@example.com \
    --expand --renew-by-default \
    --configurator certbot-external-auth:out \
    --certbot-external-auth:out-public-ip-logging-ok \
    -d "bristol3.pki.enigmabridge.com" \
    --preferred-challenges dns \
    --certbot-external-auth:out-handler ./dehydrated-example.sh \
    --certbot-external-auth:out-dehydrated-dns \
    run 

JSON modu

Başka bir eklenti modu JSON modudur. Satır başına bir JSON nesnesi üretir. Bu daha karmaşık bir entegrasyon sağlar - örneğin Ansible veya bazı dağıtım yöneticileri certbot'u çağırıyor. İletişim STDOUT ve STDIN ile gerçekleştirilir. Cerbot, validasyonu gerçekleştirmek için veri içeren JSON nesnesini üretir, örn.

certbot \
    --text --agree-tos --email you@example.com \
    --expand --renew-by-default \
    --configurator certbot-external-auth:out \
    --certbot-external-auth:out-public-ip-logging-ok \
    -d "bristol3.pki.enigmabridge.com" \
    --preferred-challenges dns \
    certonly 2>/dev/null

{"cmd": "perform_challenge", "type": "dns-01", "domain": "bs3.pki.enigmabridge.com", "token": "3gJ87yANDpmuuKVL2ktfQ0_qURQ3mN0IfqgbTU_AGS4", "validation": "ejEDZXYEeYHUxqBAiX4csh8GKkeVX7utK6BBOBshZ1Y", "txt_domain": "_acme-challenge.bs3.pki.enigmabridge.com", "key_auth": "3gJ87yANDpmuuKVL2ktfQ0_qURQ3mN0IfqgbTU_AGS4.tRQM98JsABZRm5-NiotcgD212RAUPPbyeDP30Ob_7-0"}

DNS güncellendiğinde, arayan, doğrulama işlemine devam edebileceğine işaret etmek için certbot'un STDIN'ine yeni satır karakteri gönderir.

Bu merkezi yönetim sunucusundan otomasyon ve sertifika yönetimi sağlar. Kurulum için SSH üzerinden sertifika dağıtabilirsiniz.

Daha fazla bilgi için lütfen benioku dosyasına bakınız. certbot-dış-yetkilendirme GitHub.

DÜZENLEME: Ayrıca yeni bir Blog yazısı DNS doğrulama problemini ve eklenti kullanımını açıklar.

DÜZENLEME: Şu anda Ansible 2 adımlı doğrulama üzerinde çalışıyoruz, yakında kapalı olacak.


156
2017-10-29 13:00



Bir web sitesini başka bir sunucuya geçirirken, A kaydını değiştirmeden önce yeni bir sertifika isteyebilirsiniz. Manuel yöntemi kullanabilirsinizcertbot certonly --preferred-challenges dns -d example.com) ilk istek için. A-kaydını test ettikten ve değiştirdikten sonra, ortak webroot yöntemini kullanın (certbot certonly webroot -d example.com -w /path/to/webroot) Daha önce olduğu gibi aynı alan adlarını kullanarak. Doğru yapıldığında, certbot mevcut sertifikayı / yapılandırmayı tanıyacak ve yenileme ayarlarını güncelleyecektir, bu nedenle sertifika gelecekte otomatik olarak yenilenecektir. - marcovtwout
Çalışıyor, EC2 seviyesinde AWS Firewall'a dikkat edin - jruzafa
Eminim ne anlama geldiğini bilmek isterim. Umman-public-ip-logging-ok… bu belge hakkında şifrelenir ve bunun dışındaki tüm örnekler bunu açıklar. - Rondo
Yenileme süreci her seferinde yeni bir TXT kaydı gerektiriyor mu? - Old Geezer
@OldGeezer Görünüşe göre, öyle. İşlemi başlattım ve son defadan farklı içerikli bir TXT kaydı oluşturmamı istedi. - Dario Fumagalli


Kullanabiliyordum dehydrated istemci, DNS doğrulamasını kullanarak sertifika alacak.

https://github.com/lukas2511/dehydrated

./dehydrated --cron --domain my.domain.example.com --hook ./hook.route53.rb --challenge dns-01

Alan adınız için doğru DNS doğrulama kancalarını kullanmanız gerekir, ancak örnek olarak birkaç seçenek vardır:

https://github.com/lukas2511/dehydrated/wiki/Examples-for-DNS-01-hooks


37
2018-02-18 21:45



Bu benim için gerçekten iyi çalıştı. Ekleyeceğim tek uyarı, tanımlanmış birkaç mücevher bağımlılığını yüklemem gerektiğidir. route53.rb kanca komut dosyası. - jmreicha


Bugün itibariyle resmi müşteri, DNS-01 sorgu türünü desteklemiyor (henüz).

Görmek https://community.letsencrypt.org/t/status-of-official-letsencrypt-clients-dns-01-challenge-support/9427

Buna bakmadım bu yüzden bilmiyorum. Üst düzey anlayışım sadece "DNS sorunu için Python istemcimizde destek değildi".

İlerlemeyi takip edebilirsiniz bu PR. Alternatif olarak, bazı müşteriler Bu zaten destekliyor.


10
2018-01-28 11:34





Yazdım hook script için letsencrypt.sh istemcisi Bu kullanmanıza olanak sağlayan bir api sağlamayan DNS sağlayıcıları için DNS Şifrelemesini kullanmanıza izin verir (aka, manuel giriş ve doğrulama gereklidir).

Buradan kontrol edebilirsiniz: https://github.com/jbjonesjr/letsencrypt-manual-hook


5
2018-05-22 16:55





Önceki yanıtlarda belirtildiği gibi, bir alanı aşağıdaki şekilde DNS ile kolayca doğrulayabilirsiniz:

  1. Gerekli uygulamaları yükleyin (Ubuntu altında): 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
  2. www.example.com için manuel DNS mücadelesi onayı ile sertifika oluştur (alan adınızla değiştirin): ./dehydrated/dehydrated -c -t dns-01 -d www.example.com -k ./dehydrated/hooks /manual/manual_hook.rb

3
2017-12-16 10:36





Farklı kombinasyonları denedikten sonra, bu benim için çalıştı susuz ve letsencrypt-kılavuzu kanca git depoları. Aşağıdaki adımlar sizin için çalışıyorsa, unutmayın star bu depolar

Not: Bu panticz.de ve alexcline cevaplarına ek olarak

~$ git clone https://github.com/lukas2511/dehydrated.git
~$ git clone https://github.com/jbjonesjr/letsencrypt-manual-hook.git dehydrated/hooks/manual
~$ cd dehydrated
~$ ./dehydrated --register --accept-terms
~$ ./dehydrated --cron --challenge dns-01 --domain your.domain.com --hook ./hooks/manual/manual_hook.rb
#
# !! WARNING !! No main config file found, using default config!
#
Processing your.domain.com
 + Signing domains...
 + Creating new directory /Users/vikas/dehydrated/certs/your.domain.com ...
 + Creating chain cache directory /Users/vikas/dehydrated/chains
 + Generating private key...
 + Generating signing request...
 + Requesting authorization for your.domain.com...
 + 1 pending challenge(s)
 + Deploying challenge tokens...
Checking for pre-existing TXT record for the domain: '_acme-challenge.your.domain.com'.
Create TXT record for the domain: '_acme-challenge.your.domain.com'. TXT record:
'gkIxxxxxxxIcAESmjF8pjZGQrrZxxxxxxxxxxx'
Press enter when DNS has been updated...

Bir karma alırsınız (yukarıdaki komutu çalıştırdıktan sonra) Txt DNS'inize kayıt yapın. Aşağıdaki komutu çalıştırarak çalıştığından emin olun. GSuite Araç Kutusu

~$ dig TXT _acme-challenge.your.domain.com. +short @8.8.8.8
"gkIxxxxxxxIcAESmjF8pjZGQrrZxxxxxxxxxxx"
~$

Şimdi basın girmek istemi TXT kaydı güncellenmiş olmasına rağmen bu benim için işe yaramadı. Ctrl + C'ye basmalı ve komutu tekrar çalıştırdım.

~$ ./dehydrated --cron --challenge dns-01 --domain your.domain.com --hook ./hooks/manual/manual_hook.rb
#
# !! WARNING !! No main config file found, using default config!
#
Processing your.domain.com
 + Signing domains...
 + Generating private key...
 + Generating signing request...
 + Requesting authorization for your.domain.com...
 + 1 pending challenge(s)
 + Deploying challenge tokens...
Checking for pre-existing TXT record for the domain: '_acme-challenge.your.domain.com'.
Found gkIxxxxxxxIcAESmjF8pjZGQrrZxxxxxxxxxxx. match.
 + Responding to challenge for your.domain.com authorization...
Challenge complete. Leave TXT record in place to allow easier future refreshes.
 + Challenge is valid!
 + Requesting certificate...
 + Checking certificate...
 + Done!
 + Creating fullchain.pem...
 + Walking chain...
 + Done!
~$

Şimdi, kamu ve özel sertifikalarınız burada mevcut.

$ ls certs/your.domain.com/privkey.pem certs/your.domain.com/fullchain-1517576424.pem

Yenilemek (en az bekleme süresi 30 gündür), sadece aynı komut.

~$ ./dehydrated --cron --challenge dns-01 --domain your.domain.com --hook ./hooks/manual/manual_hook.rb

2
2018-02-02 13:44





Hugo Landau, Go’da bir ACME istemcisi yazdı (https://github.com/hlandau/acme) DNS zorluklarını destekler (BIND'nin nsupdate protokolü ile). En az 18 aydır benim için kusursuz çalışıyor.


0
2017-07-03 18:07