Puncte:0

Openssl s_client afișează CONNECT_CR_SRVR_HELLO numai când este furnizată opțiunea -servername

drapel tr

Am un server centOS7 activat HTTPS cu GitLab/nginx, cu o înregistrare A înregistrată pe un DNS plătit și certificat verificat de Let's Encrypt. (Voi folosi aici gitlab.example.com). Numele de domeniu a fost testat pentru a fi accesibil cel puțin prin ssh și HTTP simplu.

Cu HTTPS, mă pot conecta la server folosind IP direct, cum ar fi https://x.x.x.x . Deși va apărea eroarea de certificat nesigură (din cauza nepotrivirii numelor de domeniu), dacă aleg să continui în ciuda avertismentului, pagina gitlab va apărea corect.

Totuși, dacă încerc să accesez folosind https://gitlab.example.com eroarea ERR_SSL_PROTOCOL_ERROR va apărea.

Am încercat să folosesc openssl s_client pentru a depana problema și am obținut următoarele rezultate

openssl s_client -connect gitlab.example.com:443 -servername gitlab.example.com

CONECTAT(00000003)
4658671212:error:1400410B:Rutine SSL:CONNECT_CR_SRVR_HELLO:număr de versiune greșit:/AppleInternal/BuildRoot/Library/Caches/com.apple.xbs/Sources/libressl/libressl-47.120.1/libresctsl-2/libresctsl-2/. 386:
---
nu este disponibil niciun certificat de egalitate
---
Nu s-au trimis nume de CA de certificat de client
---
SSL handshake a citit 5 octeți și a scris 0 octeți
---
Nou, (NONE), Cipher este (NIMIC)
Renegocierea sigură NU ESTE acceptată
Compresie: NIMIC
Extindere: NIMIC
Nu s-a negociat ALPN
Sesiune SSL:
    Protocol: TLSv1.2
    Cifrare: 0000
    Sesiune ID: 
    ID-ul sesiunii-ctx: 
    Cheia principala: 
    Ora de începere: 1641487269
    Timeout: 7200 (sec)
    Verificați codul de returnare: 0 (ok)
---


Interesant, dacă nu includ -numele serverului opțiunea, nu va exista nicio eroare și certificatele vor fi achiziționate corect. Folosirea IP directă cu portul 443 va obține și certificatele corect.

Am încercat să caut pe google eroarea timp de câteva ore, dar fără succes.

De asemenea, am încercat să folosesc curl pentru a accesa și am primit aceeași eroare (se pare că această informație este mai puțin utilă decât rezultatul openssl s_client, cu excepția poate informației că numele de domeniu este mapat corect la adresa IP)

curl --insecure -Lv https://gitlab.example.com
* Încerc cu x.x.x.x...
* TCP_NODELAY setat
* Conectat la gitlab.example.com (x.x.x.x) portul 443 (#0)
* ALPN, oferind h2
* ALPN, oferind http/1.1
* setați cu succes locațiile de verificare a certificatelor:
* CAfile: /etc/ssl/cert.pem
  CApath: niciunul
* TLSv1.2 (OUT), strângere de mână TLS, salut client (1):
* eroare:1400410B:Rutine SSL:CONNECT_CR_SRVR_HELLO:număr de versiune greșit
* Închiderea conexiunii 0
curl: (35) eroare:1400410B:Rutine SSL:CONNECT_CR_SRVR_HELLO:număr de versiune greșit

Nu apare nimic în jurnalul Gitlab și cred că cererea nici nu a depășit etapa de strângere de mână SSL.

Sunt blocat în acest moment. Orice ajutor sau indiciu despre cum să procedați chiar și cu această problemă ar fi apreciat.

Patrick Mevzek avatar
drapel cn
Te-ai uitat la fișierele de jurnal ale serverului tău web (nu la aplicația Gitlab, serverul răspunzând pe portul 443)? De asemenea, puteți adăuga `--verbose` la curl pentru a avea toate detaliile strângerii de mână. Ce versiune openssl folosești? Poate fi o problemă TLS 1.0 vs 1.1 vs 1.2 vs 1.3, vezi opțiunile sale `s_client` de `-tls1_2` etc.
cr001 avatar
drapel tr
Din câte am înțeles, jurnalul Gitlab conține totul, inclusiv serverul nginx. De asemenea, „v” din opțiunea -Lv pentru bucla mea este prescurtarea opțiunii --verbose

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.