Hogyan lehet elérni, hogy az openssl használjon egy tanúsítványt anélkül, hogy azt megadná a -CAfile segítségével

I “m ezt a parancsot használom:

openssl s_client -connect example.com:443 -CAfile /etc/ssl/certs/GTE_CyberTrust_Global_Root.pem 

Működik. Ha nem adom meg, hogy a CAfile 20 kódot kapjak. A cert /etc/ssl/certs és /usr/lib/ssl/certs -> /etc/ssl/certs Ez is benne van a ca-certificates.crt

Mi szabályozza, hogy az openssl megtalálja-e a tanúsítványomat vagy sem, és hogyan érhetem el, hogy elfogadja ez a tanúsítvány anélkül, hogy kifejezetten megadná?

Megjegyzések

  • A GTE_CyberTrust_Global_Root.pem köztes CA? Ha igen, akkor előfordulhat, hogy a webszerver nem tudja kiszolgálni a köztes CA tanúsítványt a webhely tanúsítvánnyal együtt. Ez a webszerver hiányossága kompatibilitási problémákat okozhat egyes számítógépekkel. Másrészt, ha a GTE_CyberTrust_Global_Root.pem legfelső szintű gyökértanúsítvány, akkor alapértelmezés szerint működnie kell.
  • @GeorgeBailey Köszönöm. Közepes. Nincs igazi ok arra, hogy ne osszam meg a helyet: bigfishgames-a.akamaihd.net:443 Ha ' kérem webes embereinket, hogy javítsák ki, mit kérnék? Válaszát nyugodtan válaszolhatja meg (pl. " Semmit nem tehet az ügyfélen, a szervernek X " -t kell tennie).
  • Ez ' furcsa. Arra számítottam volna, hogy egyszer működni fog az / etc / ssl / certs és a ca-certificate.crt fájlokban.
  • Nos, ' még nem nyilvánvaló, hogy a szerver a probléma. Úgy tűnik, hogy a szerver egy közbenső CA-t szolgál ki, és hogy az SSLLabs a CyberTrust legfelső szintű gyökérként kezeli. Lehet, hogy téved abban, hogy a CyberTrust közreműködő, de talán igazad van. ' nem vagyok biztos benne. Ellenőrizze a tanúsítványláncot / elérési utat kedvenc böngészőjében, és / vagy az SSLLabs-on . Talán a openssl nincs konfigurálva egyetlen legfelső szintű gyökértanúsítvánnyal sem? Próbálta már a következőt: google.com:443?
  • Ugyanez a viselkedés a google.com webhelyen is

Válasz

Van egy ismert OpenSSL hiba, ahol az s_client nem ellenőrzi az alapértelmezett tanúsítványtárolót, ha nem adja át a -CApath vagy -CAfile argumentum. Az Ubuntu 14.04-es OpenSSL az ezt a hibát szenvedi, mivel “bemutatom:

Verzió:

ubuntu@puppetmaster:/etc/ssl$ openssl version OpenSSL 1.0.1f 6 Jan 2014 

Nem használja az alapértelmezett tárolót, amikor ne adja át a `-ca:

ubuntu@puppetmaster:/etc/ssl$ openssl s_client -quiet -connect gmail.com:443 depth=2 C = US, O = GeoTrust Inc., CN = GeoTrust Global CA verify error:num=20:unable to get local issuer certificate verify return:0 

Most átadom a null értéket -CApath néven, és működik:

ubuntu@puppetmaster:/etc/ssl$ openssl s_client -quiet -connect gmail.com:443 -CApath /dev/null depth=3 C = US, O = Equifax, OU = Equifax Secure Certificate Authority verify return:1 depth=2 C = US, O = GeoTrust Inc., CN = GeoTrust Global CA verify return:1 depth=1 C = US, O = Google Inc, CN = Google Internet Authority G2 verify return:1 depth=0 C = US, ST = California, L = Mountain View, O = Google Inc, CN = mail.google.com verify return:1 

Sajnos nem hiszem, hogy létezik az érintett OpenSSL verziók listája. Csak úgy lehet tudni, ha teszteljük.

Megjegyzések

  • Köszönöm. Ezt a verziót használtam. Úgy tűnik, hogy az OpenSSL 1.1.0 nem oldotta meg a problémát. I ' m nem látja az itt felsorolt problémát: github.com/openssl/openssl/issues Hivatkozhat a problémára?
  • It ' s a régi RT kiadáskövetőben . Van egy javítás, amely ' s egy bejelentkezés mögött (vendég: vendég) Ez a ' 3697-es probléma megoldottnak van jelölve. rt.openssl.org/Ti cket / Display.html? id = 3697
  • Ok, megerősítettem, hogy ez az 1.1-ben javítva van, legalábbis annak richsalz villájában. A frissítéskor kezdetben nem vettem észre, hogy az alapkönyvtár át lett helyezve /usr/local/ssl -re, és amelynek tanúsítvány-könyvtárát nem rendelték /etc/ssl/certs -re.
  • Ellenőrizhetem, hogy a hiba létezik-e a CentOS 6.8 verzióban (OpenSSL 1.0.1e-fips 2013. február 11.).
  • A openssl version -d is megadja az alap konfigurációs könyvtárat …

Válasz

"How to get openssl to use a cert without specifying it via -CAfile". 

Ugyanez volt követelmény. Olyan CA-k könyvtárát akartam használni, amelyekben " helyben megbíztam ". Nem kívántam alapértelmezett Trust store szennyező eredményt.

c_rehash

Mielőtt meghívná a verify parancsot, a súgóoldal: man verify a c_rehash:

rehash beolvassa a könyvtárakat és kiszámítja az egyes hash értékeket " .pem ", " .crt ", " .cer ", vagy " .crl " fájl a megadott könyvtárlistát, és minden fájlhoz szimbolikus linkeket hoz létre

export CERTS=/Users/{path_to_your_certs} [path to openssl]/openssl/bin/c_rehash ${CERTS} 

Ellenőrizze a levél cert

openssl verify -CApath ${CERTS} local_leaf.pem local_leaf.pem: OK 

A CERTS.Ha nem csinálnám az újrakezdési lépést, akkor 20-as hibát kapnék unable to get local issuer certificate.

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük