Mesaj OpenVPN satır içi bir sertifikayı yükleyemiyor diyor, oysa aklınızdaki dosya adı bunun tersini söylüyor. Ayrıştırıcının ne aldığı, dosya sisteminin ne içerdiğinden daha önemlidir, çünkü cert yönergesi birbirinden tamamen farklı iki değer türü kabul eder. Biri açtığı bir yoldur; diğeri yapılandırmanın içinden gelen PEM metnidir. Çalışan istemcinin hangi biçimi aldığını bilene kadar her düzeltme bir tahmindir.

İki saklama biçimi, tek yönerge

cert, key ve ca yönergeleri her biri bir yol veya satır içi blok kabul eder. Değer bir yol olduğunda OpenVPN o dosyayı açar ve nesneyi diskten okur. Yapılandırma cert etiketleriyle sınırlanmış bir blok içerdiğinde ise aynı yönerge bunun yerine o etiketler arasındaki içeriği tüketir ve ayrı bir dosya işin içine girmez.

Her iki biçim de sonunda aynı türde nesne üretir, bu yüzden çalışan bir kurulum başka hiçbir değişiklik yapmadan ikisi arasında geçiş yapabilir. Gömülü istemci sertifikası ve özel anahtar taşıyan profil kendi kendine yeterlidir ve başka bir makineye kopyalamak, sertifika dizinini de kopyalamadan çalışır.

Tersi doğru değildir. Kendi verisini gömen bir profilin yanına client.crt koymak hiçbir şeyi değiştirmez, çünkü yapılandırmada hiçbir şey o dosyaya başvurmaz. Açıkça var olan bir dosyanın yok sayılıyor gibi görünmesinin en yaygın nedeni budur.

Gömülü bir blok nasıl nesneye dönüşür

Gömülü içerik yapılandırmadan çıkarılır ve metin olarak PEM ayrıştırıcısına verilir. O ayrıştırıcı olağan sınırları bekler: bir BEGIN satırı, bir base64 yükü ve eşleşen bir END satırı. Blok başarısız bir kopyalamayla kesildiyse, bir indirme sayfası tarafından HTML içine sarıldıysa veya tireleri normalleştiren bir düzenleyicide açıldıysa, ayrıştırıcı var gibi görünen içerikte başarısız olur.

<cert>
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
</cert>

Hata ifadesinin yanıltıcı olmasının nedeni de budur. Satır içi sözcüğü yükleyicinin nereye baktığını anlatır, orada ne bulduğunu değil. Bir yapılandırmada adı geçen dosya ile içine gömülmüş nesne, temel baytlar kullanılamaz olduğunda aynı şikâyeti üretebilir.

Yüklenen profilin gerçekte hangi biçimi kullandığını denetleyin, düzenleyicinizin rastlantıyla açtığı dosyayı değil:

grep -nE '^(ca|cert|key) |^<(ca|cert|key)>' client.ovpn

Yol başvurusu nasıl çözülür

Yol değeri, yapılandırmayı içeren dizine değil istemcinin çalışma dizinine göre açılır. systemd altında bu çalışma dizini birimin belirlediği şeydir ve kabuğunuzdan yapılan etkileşimli çalıştırma bambaşka bir şeyi devralır. Bu yüzden aynı yapılandırma dosyası elle sınadığınızda çalışabilir ve hizmet olarak başarısız olabilir.

Göreli yollar da aynı belirsizliği devralır. Çıplak bir dosya adı gördüğünüzde, terminalinizle eşleştiğini varsaymak yerine üretimde sürecin geçerli dizininin ne olduğunu sorun.

Ayrı saklanan bir sertifika için çevrimdışı bir ayrıştırma, üzerinde herhangi bir şeyi hata ayıklamadan önce nesneyi doğrular:

openssl x509 -in client.crt -noout -subject -issuer -dates
openssl pkey -in client.key -noout -check

Bu komutlar dosyaların okunabilir ve yapısal olarak geçerli olduğunu kanıtlar. Karşı tarafın vericiye güvendiğini, sertifikanın hâlâ geçerlilik penceresinde olduğunu veya anahtarın ona ait olduğunu kanıtlamaz.

Ayrıştırıcı hatasının söyleyebileceği ve söyleyemeyeceği şeyler

Ayrıştırma hatası sorunu tek bir girdiye ve tek bir aşamaya sınırlar. İstemcinin iki saklama biçiminden hangisini kullandığını söylemez ve nesnenin kabul edilip edilmeyeceğini de söylemez. Bunlar ayrı kanıtları olan ayrı sorulardır.

Ayrıştırma başarılı olduğunda sonraki hata daha geç bir aşamaya aittir. Güven reddi, amaç uyuşmazlığı veya anahtar uyuşmazlığı yükleyici tarafından değil, karşı taraf veya TLS katmanı tarafından bildirilir. Aynı dosyayı tekrar tekrar değiştirmek o hatayı yerinden oynatmaz.

İnceleme sırasında hassas yarıyı kamuya açık raporların dışında tutun. Yönerge adlarını, hata metnini ve bloğun yapısını paylaşın; anahtar malzemesini ve tanımlayıcı her yükü çıkarın. openvpn(8) kılavuzu dosya yönergelerinin iki biçimini ve arkalarındaki çalışma dizini davranışını belgeler.

İlgili makaleler