Certbot başarılı bir yenileme bildirir, diskteki dosyalar yeni tarihler taşır ama istemciler hâlâ eski kimlikle karşılaşır. SoftEther SSL sunucu sertifikasını kendi sunucu düzeyindeki yapılandırmasında tutar, bu yüzden diskteki yeni bir dosya yaprak ve anahtarı içe aktarılana kadar hiçbir şeyi değiştirmez. Aşağıdaki sıra bir elle içe aktarmayı, her yenilemeden sonra çalışan bir sarmalayıcıyı ve dinleyicinin gerçekte ne sunduğunu okuyan bir denetimi kapsar. Her adım, bir sonraki yenilemeden sonra karşılaştırabileceğiniz kanıtlar bırakır.

Yenilenen dosya sunucunun kimliğini değiştirmez

Verme ve dağıtım, ayrı hata biçimlerine sahip ayrı olaylardır. ACME istemcisi dosyaları bir soy dizinine yazar ve başarıyı kaydeder; SoftEther ise yapılandırmasına en son yüklenen sertifikayı kullanmaya devam eder. Bu yüzden sıfır çıkış durumu dosyaları tanımlar, hizmeti değil, ve kimse bakmadığı sürece ikisi ayrışabilir. İçe aktarmayı dağıtım adımı, yenilemeyi ise onun girdisi olarak ele alın.

Bu ayrım kafa karıştırıcı yarım hatayı da açıklar: eski sertifika sona erene kadar çalışır, bu yüzden başlangıçta hiçbir şey bozuk görünmez. Süresi dolduğunda tüm istemciler aynı anda başarısız olur, bu da kaçırılmış bir dağıtım adımından çok kesinti gibi görünür. Her yenilemeden sonra sunulan kimliği denetlemek bu sürprizi rutin bir gözleme dönüştürür.

Dinleyiciye uygun meydan okumayı seçin

Sertifika, istemcilerin doğruladığı ana bilgisayarı adlandırmalıdır, bu yüzden dahili bir etiket veya adres yerine genel DNS adını kullanın. HTTP-01 meydan okumanın bir an için 80 numaralı bağlantı noktasında yanıtlanmasını gerektirir; bu geçici bir dinleyicidir ve asla SoftEther'in kendi bağlantı noktasını taşımak için bir neden değildir. DNS-01 denetimi bir kayıt aracılığıyla kanıtlar ve gelen HTTP'ye hiç ihtiyaç duymaz.

Gözetimsiz yenileme, tek bir bölgeyle sınırlı kimlik bilgileriyle otomatik DNS entegrasyonu anlamına gelir, iki ayda bir elle yazılan TXT kaydı değil. Joker karakter meydan okumanın türünü değiştirir, o otomasyonun gerekliliğini değil. Bunu ilk sertifika var olmadan önce kararlaştırın, çünkü meydan okuma türünü sonradan değiştirmek istemci yapılandırmasına ve güvenlik duvarına aynı anda dokunmak demektir.

Burada olduğunuz sürece eserleri düzenli tutun. Yaprak ve ara sertifikalar ayrı dosyalar ve tek bir birleşik zincir dosyası olarak gelir, özel anahtar yine ayrıdır, ve içe aktarma eşleşen anahtarıyla zinciri gerektirir, tek başına bir genel sertifika değil.

Zinciri sunucu düzeyinde içe aktarın

Sertifikaya dokunmadan önce sunucu yapılandırmasının yedeğini alın ve yönetim arayüzüne hâlâ ulaşabildiğinizi doğrulayın. Virtual Hub yöneticisi olarak değil, sunucu yöneticisi olarak bağlanın, çünkü sertifika sunucu nesnesine aittir. Ardından zinciri ve anahtarı mutlak yolla, komutu çalıştıran hesabın okuyabildiği dosyalardan yükleyin. Yolların mutlak olduğunu unutmayın, çünkü komut bunları vpncmd'yi çalıştıran sürecin çalışma dizininden çözer:

ServerCertSet /LOADCERT:/etc/letsencrypt/live/vpn.example.com/fullchain.pem /LOADKEY:/etc/letsencrypt/live/vpn.example.com/privkey.pem

Başarıyı varsaymak yerine komutun çıktısını okuyun, sonra verdiğiniz dosyaya güvenmek yerine zinciri yeniden okuyun. Tüm PEM paketini içe aktaran derlemelerle yalnızca ilk sertifikayı alan derlemeler arasındaki sınır tek bir yerde belgelenmemiştir, bu yüzden önünüzdeki derleme için kararı denetim verir. Dinleyicinin sunduğu sertifikaları sayın; ara sertifikası olmayan bir yaprak yalnızca ilk bloğu tüketen bir içe aktarıcının imzasıdır.

İçe aktarılan anahtarı yalnızca sunucuyu çalıştıran hesap için okunabilir tutun ve yönetim parolasını kabuk geçmişinin dışında tutun. Bu ilk içe aktarmada parolayı komut bağımsız değişkeni olarak vermek yerine istemde yazın. Bu iki alışkanlık hiçbir maliyet getirmez ve bir sertifika dağıtımının koruması gereken bir şeyi sızdırmasının en yaygın yolunu ortadan kaldırır. Bunu ilk içe aktarmadan önce yapın, sonra değil.

Dağıtımı bağlayın, yenilemeyi değil

Elle içe aktarma çalışmaya başlayınca tam o adımları küçük bir sarmalayıcıya koyun ve başarılı bir yenilemeden sonra ACME istemcisinden çağırın. Certbot kanca için RENEWED_LINEAGE ve RENEWED_DOMAINS değişkenlerini ayarlar, böylece sarmalayıcı birden çok sertifika yöneten bir makinede tek bir sertifika üzerinde işlem yapabilir. Ana bilgisayardaki her yenilemeye tepki vermek yerine soy hattına göre filtreleyin. Sarmalayıcı sunucunun ayrıcalıklarıyla çalışan dağıtım kodudur, bu yüzden onu o konumdaki herhangi bir betik gibi gözden geçirin.

certbot renew --deploy-hook /usr/local/sbin/softether-deploy.sh

Gözetimsiz çalışan bir kanca kendi korumalı kimlik bilgisi deposuna ve bir insana ulaşan hata sinyaline ihtiyaç duyar. Verme başarılı olur ve içe aktarma başarısız olursa, başka bir sertifika istemek yerine içe aktarmayı yeniden deneyin, çünkü ikinci bir istek dağıtım kusurunu yeni bir dosyanın arkasına saklar. Certbot'un yenileme belgeleri, hiçbir şeyi güncellemeyen bir çalışmanın normal bir sonuç olduğunu açıkça söyler, bu yüzden ikisini ayıran kancadır.

Sunulan zinciri dosyayla karşılaştırın

Diski değil dinleyiciyi okuyun. İstemcilerin kullandığı sunucu adıyla istemciye bakan bağlantı noktasına bağlanın, sonra parmak izini ve teslim edilen zinciri kancanın kurduğu soy hattıyla karşılaştırın. İki komut bunu kapsar ve ilki ara sertifikaların gelip gelmediğini de gösterir:

openssl s_client -connect vpn.example.com:443 -servername vpn.example.com -showcerts </dev/null 2>/dev/null | grep -c 'BEGIN CERTIFICATE'
openssl s_client -connect vpn.example.com:443 -servername vpn.example.com </dev/null 2>/dev/null | openssl x509 -noout -subject -dates -fingerprint -sha256

Sonra yeni bir istemci bağlantısı kurun, çünkü içe aktarmadan önce kurulan oturumlar önceki kimliğe karşı doğrulanmıştır ve yenisine dair hiçbir şey kanıtlamazlar. İstemciler eski yaprağı sabitliyorsa, genel zincir geçerli olsa bile koordineli bir güncellemeye ihtiyaçları vardır ve bu iş yenilemeyle aynı runbook'a aittir. Hizmetin önündeki ters vekil iyi bir sertifika sunabilirken VPN dinleyicisi hâlâ eskisini tutuyor olabilir, bu yüzden denetim istemcilerin gerçekte ulaştığı bağlantı noktasını adlandırmalıdır. Parmak izini yenileme tarihinin yanına kaydedin, böylece sonraki karşılaştırma bir denetim olsun, hafıza eylemi değil.

İlgili makaleler