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.