openssl erorile openssl pe GeoTrust Global CA de validare, dar ssllabs.com marchează site-ul ca fiind A+ (Administrarea sistemului, Certificat Ssl, Openssl)

vinni_f a intrebat.

Din imaginea mea docker:

FROM ruby:2.7

RUN apt-get update && apt-get install -y libicu-dev default-libmysqlclient-dev curl jq poppler-utils ghostscript vim-tiny zip ffmpeg

ARG GITHUB_ACCESS_TOKEN=wrong
ARG TOC_RELEASE=latest
ARG COMMIT_SHA=unknown

# Force UTF-8 encoding (default is POSIX/ASCII)
ENV LANG C.UTF-8

RUN apt-get update -q && 
    apt-get install -q -y --no-install-recommends 
      ca-certificates curl unzip default-jre-headless && 
    apt-get clean && 
    rm -rf /var/lib/apt/lists/*

Dacă încerc să mă conectez la reportingitc-reporter-sh-mdn.apple.com:443 primesc următoarea eroare:

# openssl s_client -showcerts -connect reportingitc-reporter-sh-mdn.apple.com:443
CONNECTED(00000003)
depth=2 C = US, O = GeoTrust Inc., CN = GeoTrust Global CA
verify error_num=19:self signed certificate in certificate chain
verify return:1
depth=2 C = US, O = GeoTrust Inc., CN = GeoTrust Global CA
verify return:1
depth=1 CN = Apple IST CA 2 - G1, OU = Certification Authority, O = Apple Inc., C = US
verify return:1
depth=0 CN = reportingitc-reporter.apple.com, OU = management:idms.group.135879, O = Apple Inc., ST = California, C = US
verify return:1

Dacă validez site-ul cu ssllabs https://www.ssllabs.com/ssltest/analyze.html?d=reportingitc-reporter-sh-mdn.apple.com acesta spune că certificatul este valid.

Dacă adaug manual certificatul în imaginea docker ssl certs nu se mai plânge:

RUN curl --max-time 300 --retry 5 --retry-delay 1 --retry-max-time 900 --silent -o /usr/local/share/ca-certificates/geotrust.crt https://www.geotrust.com/resources/root_certificates/certificates/GeoTrust_Global_CA.pem
RUN update-ca-certificates

Nu înțeleg de ce brusc trebuie să fac acest lucru și de ce ssllabs nu se plânge de asta?

2 răspunsuri
garethTheRed

Chiar dacă ați adăugat pachetul de certificate CA (ca-certificates) la imaginea dvs. docker, se pare că certificatul rădăcină GeoTrust Global CA nu este inclus în acest pachet.

Când executați inițial openssl s_client clientul descarcă lanțul de certificate de pe site-ul Apple și constată că ultimul certificat este auto-semnat (din anumite motive, administratorii Apple au decis să îl includă ca parte a lanțului), dar, deoarece nu se află în magazinul său de încredere, se plânge cu error:num=19:self signed certificate in certificate chain.

Atunci când executați comanda după adăugarea certificatului CA rădăcină, lanțul descărcat de pe site-ul Apple se termină cu un certificat în care acum are încredere, deci nu mai există plângeri.

În ceea ce privește motivul pentru care lipsește certificatul – va trebui să adresați această întrebare celui care v-a furnizat imaginea docker. Este pe distribuția completă actuală Debian 10.4 și este, de asemenea, pe distribuția actuală Alpine, ambele fiind populare cu docker. De asemenea, după cum spuneți, este înțeleasă de SSL Labs. Dacă ar fi să ghicesc, aș spune că imaginea docker de bază subiacentă este destul de veche.

Comentarii

  • da, aveți dreptate! imaginea docker oficială ruby 2.7 este vinovată. Nu prea înțeleg exact ce anume nu este actualizat, dar când folosesc imaginea ruby 2.7 furnizată de bitnami nu am această problemă! Mulțumesc mult pentru informații. –  > Por vinni_f.
Zsolt Rizsányi

Se pare că Debian a eliminat recent încrederea pentru GeoTrust Global CA. A se vedea http://metadata.ftp-master.debian.org/changelogs/main/c/ca-certificates/unstable_changelog

Cred că imaginile Docker actualizate la ultimele actualizări de securitate nu vor avea încredere în acel site.

Părerea mea este că încrederea pentru această CA a fost eliminată din eroare. Am contactat administratorul pachetului ca-certificates pentru a întreba despre acest lucru.

În legătură cu aceasta: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=962596