Bu sertifika zincirini neden doğrulayamıyorum?


16

Bir zincirde üç sertifikam var:

  • root.pem
  • intermediate.pem
  • john.pem

Onları incelerken incelediğimde openssl x509 -in [filename] -text -noout, root.pem kendinden imzalı gibi görünüyor (İhraççı == Konu) ve her sertifikanın Konusu beklendiği gibi bir sonrakinin İhraççısı.

Ve aslında zinciri ara sertifikaya kadar doğrulayabilirim:

$ openssl verify -CAfile root.pem root.pem
root.pem: OK
$ openssl verify -CAfile root.pem intermediate.pem
intermediate.pem: OK

Ancak, john.pem başarısız olur:

$ openssl verify -CAfile root.pem -CAfile intermediate.pem john.pem
john.pem: C = CL, [...redacted data...]
error 2 at 1 depth lookup:unable to get issuer certificate

Bildiğim kadarıyla, bu openssl arabulucu.pem için yayıncıyı bulamadığı anlamına gelir. Root.pem gerçekten arapem için yayıncı olduğu için bu mantıklı değil.

Neyi kaçırıyorum?


Düzenleme: Başlangıçta root.pem ve arap.pem'in bir dosyada birleştirilmesi gerektiğini ve daha sonra bu dosyayı parametre olarak kullanması gerektiğini söyleyen bir cevap yayınlamıştım -CAfile. Bu YANLIŞ, çünkü Johannes Pille'nin işaret ettiği gibi, bu üstü örtülü olarak mediate.pem'e güveniyor . Silinen yanıtıma verdiği bağlantıyı okuyun: https://mail.python.org/pipermail/cryptography-dev/2016-August/000676.html


Lütfen cevabınızı silin, tehlikeli yanlış bilgi!
Johannes Pille

1
@JohannesPille Bitti, bilgi için teşekkür ederim
Jong Bor

Gerçekten yapmak için şeref ve hızlı tepki.
Johannes Pille

Yanıtlar:


14

Doğrulamak için iki sertifikayı bir araya getirmeniz gerekmez.

Aşağıdaki üç sertifikanız varsa:

  • root.pem - kendinden imzalı bir sertifika saklar.
  • intermediate.pem - root.pem imzalı bir sertifika saklar
  • john.pem - intermediate.pem tarafından imzalanan bir sertifikayı saklar

Ve yalnızca root.pem'e güvenirseniz, john.pemaşağıdaki komutla doğrularsınız :

openssl verify -CAfile root.pem -untrusted intermediate.pem john.pem

Çok fazla ara bağınız vardı, sadece -untrusted intermediate2.pem -untrusted intermediate3.pem ...


Bu. Tek doğru cevap bu.
Johannes Pille

Pakette hem Ara hem de Kök CA Sertifikaları opensslolsaydı, bunları alıp sertifikaları doğrulayacağını düşündüm . Bunun olmasının bir nedeni var mı? Kullanıcı sertifikasını imzalayan kişi, sertifikayı Orta ile değil, kökle veya başka bir şeyle mi imzaladı?
FilBot3

Bu cevabın son cümlesi yanlış. Çok sayıda ara bağınız varsa, bunları bir ara dosyada birleştirmeniz ve untrustedbayrağı bir kez kullanmanız gerekir . Güvenilmeyen bayrağı birden çok kez kullanmak işe yaramıyor.
AjaxLeung

1
@AjaxLeung - her iki çoklu -untrustedseçenek (herhangi bir sırada) veya tek bir -untrustedseçenek (herhangi bir sırayla birleştirilir) bir ara demete işaret eder. Bu Ubuntu üzerinde OpenSSL sürüm 1.1.1c ile.
garethTheRed

Evet yanılmışım. Bence yorum yazarken doğru dosyaları kullanmıyordum.
AjaxLeung

3

@antiduh'un söyledikleri sadece benim için sadece tek ara sertifika davası için çalışıyor. Birden fazla -untrusted intermediate.pemkomut ekleyerek işe yaramaz gibi görünüyor. Belirli openssl sürümü ile ilgili olduğundan emin değilim.

Openssl belgesine göre: [ https://linux.die.net/man/1/verify]

güvenilmeyen dosya

Güvenilmeyen sertifikalar dosyası. Dosya birden çok sertifika içermelidir

Benim durumumda şöyle bir zincirim var: root.pem -> intermediate1.pem -> intermediate2.pem -> john.pem

cat intermediate1.pem & intermediate2.pem tarafından tek bir ara-chain.pem dosyasına ve daha sonra openssl verify -CAfile root.pem -untrusted intermediate-chain.pem john.pembenim için çalışır çalıştırın .

Ayrıca görünüyor ca uzantısı ayarlamak basicConstraints = CA:trueaksi takdirde ben hala karşılaşırsanız openssl doğrulamak rapor hata.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.