Mart 2018'de Let's Encrypt joker karakter sertifikaları için destek ekledi. Joker karakter sertifikaları, bir alan adının tüm birinci düzey alt alan adlarını tek bir sertifika ile korumanıza olanak tanır. Joker karakter sertifikaları yalnızca ACME protokolünün güncellenmiş bir sürümü olan ACMEv2 aracılığıyla edinilebilir. Joker karakter veya joker karakter içermeyen sertifikalar için ACMEv2 kullanmak için, ACMEv2'yi desteklemek üzere güncellenmiş bir istemciye ihtiyacınız vardır. Böyle bir istemci, herhangi bir bağımlılık olmadan tamamen Shell (Unix kabuk) dilinde yazılmış bir ACME / ACMEv2 protokol istemcisi olan acme.sh'dir. Ayrıca, joker alanların DNS-01 sınama türü kullanılarak doğrulanması gerekir. Bu, bir joker karakter sertifikası almak üzere bir etki alanı üzerinde denetim olduğunu kanıtlamak için DNS TXT kayıtlarını değiştirmeniz gerektiği anlamına gelir.
Bu kılavuzda, Vultr API'sini tüketerek ve Nginx web sunucusuna sunucuları dağıtarak DNS kayıtlarının otomatik olarak işlenmesi için acme.shistemci, Lexicon aracını kullanarak Let's Encrypt'ten Ubuntu 19.04'te ücretsiz joker karakter sertifikalarının nasıl edinileceğini ve dağıtılacağını açıklıyoruz .
Gereksinimler
- Yeni dağıtılan Ubuntu 19.04 Vultr bulut sunucusu.
- Kayıtlı bir alan adınız var. Bu kılavuzda
example.comörnek bir alan adı kullanılmıştır.
- Tam Nitelikli Alan Adı (FQDN) için A / AAAA ve CNAME DNS kayıtlarını ayarladığınızdan emin olun. DNS kavramlarını tanımanız gerekiyorsa Vultr DNS'ye Giriş eğiticisine danışabilirsiniz .
- Vultr hesap kontrol panelinizde Vultr API Erişimi etkinleştirildi.
Sen başlamadan önce
Ubuntu sürümünü kontrol edin.
lsb_release -ds
# Ubuntu 19.04
sudoErişimi ve tercih ettiğiniz kullanıcı adıyla yeni bir kullanıcı hesabı oluşturun ve bu hesaba geçin. Biz kullanıyoruz johndoe.
adduser johndoe --gecos "John Doe"
usermod -aG sudo johndoe
su - johndoe
NOT : Kullanıcı adınızla değiştirin johndoe.
Saat dilimini ayarlayın.
sudo dpkg-reconfigure tzdata
Ubuntu sisteminizin güncel olduğundan emin olun.
sudo apt update && sudo apt upgrade -y
Gerekli paketleri kurun.
sudo apt install -y git wget curl socat
Nginx'i yükle
Nginx web sunucusunu kurun.
sudo apt install -y nginx
Versiyonu kontrol et.
sudo nginx -v
# nginx version: nginx/1.15.9 (Ubuntu)
Python ve Lexicon'u yükleyin
Acme.sh ve Vultr API kullanarak edelim Şifrelemek joker sertifikaları elde etme sürecinde ilk adım olarak, yüklemeniz gerekir Python ve Lexicon . Lexicon, birden çok DNS sağlayıcısındaki DNS kayıtlarını standartlaştırılmış bir şekilde işlemenin bir yolunu sunan bir Python paketidir.
Sisteminize önceden yüklenmemişse Python'u yükleyin.
sudo apt install -y python3
Sürümü doğrulayarak kurulumu onaylayın.
python3 --version
# Python 3.7.3
Lexicon aracını yükleyin. Bir lexicon, çeşitli DNS sağlayıcılarındaki DNS kayıtlarını standartlaştırılmış bir şekilde değiştirmenizi sağlayan bir Python aracıdır.
sudo apt install -y lexicon
Lexicon sürümünü kontrol edin.
lexicon --version
# lexicon 3.0.8
acme.shİstemciyi yükle
Acme.shTamamen Shell (Unix kabuk) dilinde yazılmış, Let's Encrypt aracılığıyla imzalanmış bir sertifika alma işlemini otomatikleştiren bir ACME protokol istemcisidir. ACME v1 ve ACME v2'yi destekler ve en önemlisi ACME v2 joker karakter sertifikalarını destekler. Bu bölümde, bir Acme.sh betiği yüklüyoruz.
NOT: Yükleme / erişim gerektirmese de, kullanıcıyı yüklemek için kullanmanız önerilir .rootacme.shrootsudo
rootOluşturduysanız normal kullanıcıdan kullanıcıya geçin .
sudo su - root
İndirme ve yükleme acme.sh.
git clone https://github.com/Neilpang/acme.sh.git
cd acme.sh
./acme.sh --install --accountemail "[email protected]"
source ~/.bashrc
cd
Versiyonu kontrol et.
acme.sh --version
# v2.8.2
Let's Encrypt'ten joker karakterler alın
Bir joker karakter sertifikası almak için yalnızca DNS doğrulama yöntemini kullanabiliriz. TXT DNS kayıtlarını işlemek için Lexicon ve Vultr DNS API'sini kullanıyoruz.
Alan adınız için RSA ve ECC joker karakter sertifikaları edinin.
# Configure your API key and username
export PROVIDER=vultr
export LEXICON_VULTR_USERNAME="[email protected]"
export LEXICON_VULTR_TOKEN="XXXXXXXXXXXXXXX"
# RSA 2048
acme.sh --issue --dns dns_lexicon -d example.com -d '*.example.com' --keylength 2048
# ECC 256
acme.sh --issue --dns dns_lexicon -d example.com -d '*.example.com' --keylength ec-256
NOT : Do değiştirmeyi unutmayın example.comalan adınızla ve kendi ile Vultr API tutucu değerlerini değiştirin.
Önceki komutları çalıştırdıktan sonra sertifikalarınız ve anahtarlarınız:
- RSA için:
~/.acme.sh/example.comdizin.
- ECC / ECDSA için:
~/.acme.sh/example.com_eccdizin.
NOT : cert dosyalarını ~/.acme.sh/klasörde kullanmamalısınız, bunlar yalnızca dahili kullanım içindir, dizin yapısı gelecekte değişebilir.
Sertifikalarınızı listelemek için şunları yapabilirsiniz:
acme.sh --list
Sertifikalarınızı üretimde saklamak için bir klasör oluşturun. Biz kullanmak /etc/letsencryptdizini.
sudo mkdir -p /etc/letsencrypt/example.com
sudo mkdir -p /etc/letsencrypt/example.com_ecc
Sunucunuzda üretim kullanımı için sertifika yükleyin / kopyalayın.
# RSA
acme.sh --install-cert -d example.com \
--cert-file /etc/letsencrypt/example.com/cert.pem \
--key-file /etc/letsencrypt/example.com/private.key \
--fullchain-file /etc/letsencrypt/example.com/fullchain.pem \
--reloadcmd "sudo systemctl reload nginx.service"
# ECC/ECDSA
acme.sh --install-cert -d example.com --ecc \
--cert-file /etc/letsencrypt/example.com_ecc/cert.pem \
--key-file /etc/letsencrypt/example.com_ecc/private.key \
--fullchain-file /etc/letsencrypt/example.com_ecc/fullchain.pem \
--reloadcmd "sudo systemctl reload nginx.service"
Let's Encrypt'ten başarıyla joker karakter sertifikaları elde ettiğimize göre, Nginx web sunucusunu yapılandırmamız gerekiyor. Tüm sertifikalar her 60 günde bir otomatik olarak yenilenir.
Tercih ettiğiniz yere sertifikalar alıp yükledikten sonra, rootkullanıcıdan normal bir sudokullanıcının oturumunu kapatabilir ve sudogerekirse sunucunuzu yönetmeye devam edebilirsiniz .
exit
sudo vim /etc/nginx/sites-available/example.com.confDosyayı aşağıdaki içerikle çalıştırın ve doldurun. example.comAlan adının tüm tekrarlarını kendi alan adınızla değiştirin.
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name example.com *.example.com;
root /var/www/example.com;
# RSA
ssl_certificate /etc/letsencrypt/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/example.com/private.key;
# ECDSA
ssl_certificate /etc/letsencrypt/example.com_ecc/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/example.com_ecc/private.key;
}
example.com.confDosyayı sites-enableddizine bağlayarak yeni yapılandırmayı etkinleştirin .
sudo ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled/
Nginx yapılandırmasını test edin.
sudo nginx -t
Nginx'i yeniden yükleyin.
sudo systemctl reload nginx.service
Bu kadar. Acme.sh, Lexicon ve Vultr API kullanarak joker karakterleri Nginx'e yerleştirdik. Dinamik olarak oluşturulan birden çok birinci düzey alt etki alanını güvenceye almak istediğinizde joker karakterler kullanılabilir.