Bir OpenVPN profilinin üç farklı parçası üç farklı soruyu yanıtlar ve bunları birleştirmek, insanların çalışan bir denetimi kapatmasına yol açar. Eş sertifikası güvendiğim otorite tarafından mı imzalandı? Bu sertifika TLS sunucusu rolünü bildiriyor mu? Ulaşmak istediğim belirli sunucu bu mu? remote-cert-tls server yalnızca ortadaki soruyu yanıtlar ve bunu sertifikanın içindeki uzantıları okuyarak yapar.

Kafanızda birleştirmesi kolay üç denetim

Güven kökü ca yönergesinde bulunur. Rol denetimi remote-cert-tls yönergesine aittir. Kimlik denetimi, bir profil kullandığında verify-x509-name yönergesine ya da dağıtımın eklediği herhangi bir ad denetimine aittir.

Farklı arızalara karşı korurlar:

QuestionDirectiveFailure it catches
Who signed this?caCertificate from an unrelated authority
Is this a server?remote-cert-tlsClient certificate presented by a peer
Is this my server?verify-x509-nameAnother valid server from the same CA

Bir profil üçüne de sahip olup yine de zayıf olabilir; bunun nedeni CA'nın çok geniş paylaşılmasıdır ve bu bir yönerge değil, anahtar yönetimi sorunudur.

Rol denetimi neyi okur

Yönerge bir makrodur. Anahtar kullanımı gereksinimine ve TLS Web Sunucusu rolünü adlandıran genişletilmiş anahtar kullanımı gereksinimine açılır, bu yüzden eş sertifikası bu amacı gerçekten bildirmek zorundadır. İstemci kimlik doğrulaması için verilmiş bir sertifika, aynı otorite ikisini de imzalamış olsa bile bunu karşılamaz.

Bu önemlidir çünkü küçük dağıtımlarda paylaşılan bir CA yaygındır. Tek bir otorite her istemciyi ve sunucuyu imzalar ve rol denetimi olmadan bu sertifikaların herhangi biri el sıkışmanın sunucu tarafını tamamlayabilir. Denetim bu senaryoyu imkânsız kılmaz, ama kolay sürümünü ortadan kaldırır.

Yönerge tasarımı gereği asimetriktir: istemciler remote-cert-tls server taşır, sunucular ise remote-cert-tls client taşır. Bunları değiştirin ve her bağlantı bozuk bir sertifika gibi görünen bir rol hatasıyla başarısız olur.

Daha eski profiller bazen aynı amaç için ns-cert-type kullanır. Güncel kılavuz sayfaları bu seçeneği geçersiz sayar, bu yüzden ona hâlâ güvenen bir profili hata ayıklamak yerine taşımak gerekir.

Devre dışı bırakmak neden bir düzeltme gibi gelir

Rol denetimi başarısız olduğunda bağlantı bir doğrulama hatasıyla durur ve bariz hamle o satırı silmektir. Ardından bağlantı kurulur; bu ilerleme gibi gelir ve aslında yönergenin önlemek için var olduğu arıza biçimidir. Artık sertifikası hiçbir zaman o rol için düşünülmemiş bir eşi kabul ediyorsunuz.

Bunun yerine hatayı okuyun. Hata, başarısız olan denetimi adlandırır ve karşı taraftaki sertifika gerçekte hangi uzantıları taşıdığını görmek için incelenebilir. İki dakikalık okuma, hatanın verilişte mi yapılandırmada mı olduğunu netleştirir. Tahmin bir öğleden sonraya mal olur ve genellikle zayıflatılmış bir profille biter. Genişletilmiş anahtar kullanımını kaybeden yenilenmiş bir sunucu sertifikası, yenilemedeki gerçek bir arızadır, istemciyi gevşetmek için bir neden değildir.

Ad denetimi ayrı bir yönergedir

Rol denetimini karşılamak, eşin otoriteniz tarafından imzalanmış bir sunucu olduğunu söyler. Hangisi olduğu hakkında hiçbir şey söylemez; bu, aynı CA birkaç ağ geçidi için sertifika verdiğinde ve biri ele geçirildiğinde veya amacı dışında kullanıldığında önemlidir.

verify-x509-name sertifika öznesini yapılandırdığınız bir değerle karşılaştırır; tam özne, bir önek veya tek bir alan için eşleme kipleri vardır. Ağ geçidini gerçekten tanımlayan alanı kullanın ve ad değiştiğinde onu bilerek güncellemeyi bekleyin.

İki yönergeden hiçbiri iyi anahtar yönetiminin yerini almaz. İstemci anahtar dosyası profille birlikte kopyalanıyorsa, eş kimliği yalnızca dağıtım listesi kadar güçlüdür.

Profili düzenlemeden önce sertifikayı inceleyin

Önce eş sertifikasını, sonra istemci günlüğünü okuyun. Sertifika hangi rolleri bildirdiğini söyler; günlük ise hangi denetimin onu reddettiğini söyler.

Bu komutlar, ayrıntılı bir bağlantıdan kullanım uzantılarını ve doğrulama satırlarını yazdırır:

openssl x509 -in server.crt -noout -text | grep -A1 -E "Key Usage|Extended Key Usage"
sudo openvpn --config client.ovpn --verb 4 2>&1 | grep -i verify

Uzantılar sunucu rolünü gösteriyor ve günlük hâlâ rol hatası bildiriyorsa, profil muhtemelen bozuk bir sertifika yerine yanlış sertifika dosyasını gösteriyor. Uzantılar yalnızca istemci kimlik doğrulamasını gösteriyorsa, istemciye bakmayı bırakın ve verilişi düzeltin. Her iki durumda da, bağlantıya sağlıklı demeden önce denetimi geri getirin, çünkü doğrulama kaldırıldıktan sonraki başarılı bir el sıkışma, yerini aldığı hatadan daha az şey kanıtlar.

İlgili makaleler