Kuinka saada openssl käyttämään varmennetta määrittelemättä sitä -CAfile-tiedostolla

I ”m käyttämällä tätä komentoa:

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

Se toimii. Jos en määritä CA-tiedostoa, saan koodin 20. Sertifikaatti on /etc/ssl/certs ja /usr/lib/ssl/certs -> /etc/ssl/certs Se sisältyy myös ca-certificates.crt

Mitä hallitaan, voiko openssl löytää sertini vai ei, ja miten saan sen hyväksymään onko tämä varoitus määrittelemättä sitä erikseen?

Kommentit

  • Onko GTE_CyberTrust_Global_Root.pem välivarmentaja? Jos näin on, voi olla, että verkkopalvelimesi ei pysty palvelemaan kyseistä CA-varmentetta sivustosi varmenteen kanssa. Tämä verkkopalvelimesi puute saattaa aiheuttaa yhteensopivuusongelmia joidenkin tietokoneiden kanssa. Toisaalta, jos GTE_CyberTrust_Global_Root.pem on ylätason juurivarmenne, sen pitäisi toimia oletusarvoisesti.
  • @GeorgeBailey Kiitos. Se on välituote. Ei todellista syytä olla jakamatta sijaintia: bigfishgames-a.akamaihd.net:443 Jos ' pyydän verkkoyhteisöitämme korjaamaan tämän, mitä minä kysyisin? Vastaa vastaukseen vapaasti (ts. " Mitään ei voi tehdä asiakkaalla, palvelimen on tehtävä X ").
  • Tuo ' on outoa. Olisin odottanut sen toimivan, kun se sisältyy / etc / ssl / certs ja ca-sertifikaatit. Crt
  • No, ' ei ole vielä selvää, onko palvelin on ongelma. Näyttää siltä, että palvelin palvelee keskitason varmentajaa ja että SSLLabs kohtelee CyberTrustia ylätason juurena. Saatat olla väärässä siitä, että CyberTrust on välittäjä, mutta ehkä olet oikeassa. En ' ole varma. Tarkista varmenteketju / polku suosikkiselaimestasi ja / tai SSLLab-tiedostoista . Ehkä openssl ei ole määritetty mihinkään ylätason juurivarmenteisiin? Oletko kokeillut google.com:443?
  • Sama käyttäytyminen verkkotunnuksessa google.fi

Vastaa

On tunnettu OpenSSL-virhe, jossa s_client ei tarkista oletusvarmentesäilöä, kun et läpäise -CApath tai -CAfile -argumentti. Ubuntu 14.04: n OpenSSL kärsii tästä virheestä, kun ”osoitan:

Versio:

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

Oletuskauppaa ei käytetä, kun älä välitä `-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 

Nyt välitän nullin -CApath -muodossa ja se toimii:

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 

Valitettavasti en usko, että luettelo ongelmista OpenSSL-versioista on olemassa. Ainoa tapa tietää on testata se.

Kommentit

  • Kiitos. Käytin kyseistä versiota. OpenSSL 1.1.0 ei näytä korjaavan ongelmaa. I ' m et näe tässä lueteltua ongelmaa: github.com/openssl/openssl/issues Voitteko viitata ongelmaan?
  • Se ' s vanhassa RT-ongelmien seurannassa . Siellä on korjaustiedosto, se ' s kirjautumisen takana (guest: guest) Se ' n numero # 3697, merkitty ratkaistuksi. rt.openssl.org/Ti cket / Display.html? id = 3697
  • Ok, vahvistin, että tämä on korjattu 1.1: ssä, ainakin sen richsalz-haarassa. Päivityksen yhteydessä en alun perin huomannut, että perushakemisto oli siirretty /usr/local/ssl -kansioon, jossa sertifikaatihakemistoa ei ole yhdistetty /etc/ssl/certs -kansioon.
  • Voin varmistaa, että virhe esiintyi CentOS 6.8: ssa (OpenSSL 1.0.1e-fips 11. helmikuuta 2013).
  • Myös openssl version -d antaa sinulle perusasetushakemiston …

vastaus

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

Minulla oli sama vaatimus. Halusin käyttää hakemistoa varmentajista, joihin " luotin " paikallisesti. En halunnut oletus Trust store saastuttavia tuloksia.

c_rehash

Ennen kuin soitat verify -komennolle, ohjesivu: man verify opasti minua käyttämään c_rehash:

rehash skannaa hakemistot ja laskee jokaisen " .pem ", " .crt ", " .cer " tai " .crl " tiedosto määritetty hakemistoluettelo ja luo symboliset linkit kullekin tiedostolle

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

Vahvista lehtisertifikaatti

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

Ladaat juurivarmentajan ja IntCA: n hakemiston CERTS.Jos en tehnyt uudelleenkäynnistysvaihetta, saat virheilmoituksen 20 unable to get local issuer certificate.

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *