Puncte:0

Acest site îi lipsește un certificat valid și de încredere || Server web Apache2, rădăcină Windows CA

drapel bh

Învăț despre certificate, HTTPS împreună și după 4 zile nu am idee cum să mă configurez pentru a deveni de încredere. În laboratorul meu env. Am un server Windows cu rol CA.

Anterior, am instalat un VM-Dell OpenManage pentru serverul meu. Are o interfață grafică pentru solicitări și un certificat de import pentru acces HTTPS. Am generat cu succes o cerere de semnare a certificatului și am obținut un certificat de la serverul meu Windows CA (https://x.x.x.x/certsrv/) S-a făcut sub 2 min.

M-am gândit că pot încerca asta, pe un server web apache2 (Ubunut20.04). Ei bine, acum sunt blocat și încă nu știu cum să-l fac să funcționeze.

1. În prezent (după ~50 openssl req) am cerut certificat cu aceste comenzi:

openssl req -new -newkey rsa:2048 -nodes -addext âsubjectAltName = DNS:*.mydomain.localâ -keyout serverkey.key -out serverreq.csr

2. Mi-am deschis serverul Windows CA din browser https://x.x.x.x/certsrv/ și Request Certificate-->Advanced Certificate Request-->inserați conținutul serverreq.csr-->WebserverTemplate. Descărcați certificatul.

3. Înapoi la Linux, fișierul meu de configurare (/etc/apache2/sites-avaliable/mysite.conf): arată așa.

<VirtualHost _default_:443>
        Protocols h2 http/1.1
                ServerName  mysite.local
                ServerAlias www.mysite.local
                DocumentRoot /var/www/html/mysite
                SSLEngine on
                SSLCertificateFile      /etc/ssl/certandkey/myservercert.crt
                SSLCertificateKeyFile   /etc/ssl/certandkey/myserverkey.key
</VirtualHost>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
<VirtualHost *:80>
    ServerName mysite.local
    Redirect / https://mysite.local/
</VirtualHost>

Trebuie să configurez # Lanț de certificate de server: și # Autoritate de certificare (CA):?

Apache rulează

4. După aceasta, dacă deschid pagina web, scrie

Certificat - lipsește
Acest site îi lipsește un certificat valid și de încredere (net::ERR_CERT_COMMON_NAME_INVALID).

Dar dacă deschid OpenManage, scrie

Certificat - valabil și de încredere
Conexiunea la acest site folosește un certificat de server valid, de încredere, emis de mydomain-DC-CA

Ambele certificate sunt de pe același server Windows CA.

5. Am încercat să configurez /etc/ssl/openssl.cnf, dar nu prea înțeleg cum.Dacă editez ceva, atunci nimic nu funcționează.

Ce este în neregulă cu configurația mea, cum o pot configura? Există vreun tutorial bun? 90% din timp google afișează doar certificat autosemnat și magia browser. Dar aș dori să-l configurez cu Windows CA.

Multumesc pentru ajutor

Scuze pentru engleza mea.

Gerrit avatar
drapel cn
Puteți afișa rezultatele: `openssl x509 -subject -in /etc/ssl/certandkey/myservercert.crt -noout` și `openssl x509 -checkhost mysite.local -in /etc/ssl/certandkey/myservercert.crt -noout `?
Finaria avatar
drapel bh
Am o eroare: „Numele de gazdă serverul meu NU se potrivește cu certificatul”. Cum pot afla care este numele de gazdă al certificatului? `openssl x509 -in /etc/ssl/glpicertkey/glpisercert.crt -text` cu acest lucru, nu văd numele de gazdă în certificat. `root@myserver:/home/user# openssl x509 -checkhost myserver -in /etc/ssl/certandkey/servercert.crt -noout Numele de gazdă serverul meu NU se potrivește cu certificatul root@myserver:/home/user# openssl x509 -subject -in /etc/ssl/certandkey/servercert.crt -noout subiect=C = HU, ST = Ungaria, L = Oraș, O = compania mea, OU = IT, CN = domeniul meu.local`
Gerrit avatar
drapel cn
mydomain.local este în CN și nu se potrivește cu mysite.local, așa că nu va oferi o potrivire. De asemenea, trebuie să includeți intrările DNS în Subject Alternative Names pentru a vedea dacă se potrivește. Am atașat aceste informații la răspunsul meu.
Puncte:0
drapel cn

Generarea

Puteți folosi un fișier cu extensie mică (utf-8) pentru a preseta intrările dorite și pentru a genera un CSR mai ușor. Intrările DNS trebuie să fie punycode dacă nu ASCII. (https://www.rfc-editor.org/rfc/rfc3492)

[req]
default_bits = 2048
prompt = nu
default_md = sha256
nume_distins = dn
req_extensions = ext

[ext]
subjectKeyIdentifier=hash
keyUsage=digitalSignature, keyEncipherment
subiectAltName = @alt_names

[alt_names]
DNS.1 = mysite.local
DNS.2 = www.mysite.local

[dn]
O=ACME
OU=TESTARE
[email protected]
CN = mysite.local

Puteți salva acest lucru ca sslcert.cnf de exemplu.

Observații despre wildcards

Puteți utiliza un metacar cum ar fi *.example.com. Ele lucrează doar la un singur nivel. foo.bar.example.com nu va fi acoperit de *.example.com. De asemenea, *example.com nu funcționează, asteriscul trebuie să fie în propria sa componentă de domeniu.

Apoi, dacă nu aveți încă o cheie privată:

openssl req -nodes -newkey rsa:2048 -keyout sslcert.key -out sslcert.csr -config sslcert.cnf -utf8

Sau dacă aveți deja cheie privată sslcert.key

openssl req -key sslcert.key -out sslcert.csr -config sslcert.cnf -utf8

sslcert.csr va fi ieșirea (și, de asemenea sslcert.key in primul exemplu)

De asemenea, puteți adăuga o secțiune subiectAltName cu -adict

openssl req -nodes -newkey rsa:2048 -keyout sslcert.key -out sslcert.csr -addext 'subjectAltName = DNS:example.com' -utf8

Verificarea numelui

Puteți folosi o comandă openssl pentru a verifica dacă un certificat se potrivește potențial cu domeniul pe care îl utilizați în navigare

openssl x509 -in sslcert.crt -noout -checkhost example.com

Din punct de vedere istoric, intrarea CN din numele distinctiv al subiect a fost folosit în verificarea numelui de gazdă SSL. Și încă este umplut în mod convențional cu unul dintre domenii, dar Chrome, de exemplu, nu va accepta un certificat care nu folosește și secțiunea Subject Alternative Names (SAN). Și aceasta este și secțiunea folosită pentru certificatele multiname (chiar dacă utilizați doar un domeniu cu și fără www, acesta este deja un certificat multiname). Conform normelor CA/Browser, orice nume pe care îl setați în CN trebuie, de asemenea, inclus în secțiunea altnames.

Le puteți vedea în rezultatul

openssl x509 -text -noout -in cert.crt | grep -F „Nume alternativ al subiectului:” -A 1

Din păcate, nu există un comutator de ieșire gata făcut doar pentru secțiunea SAN.

Arată ca:

            X509v3 Nume alternativ al subiectului:
                DNS:cert.local, DNS:cert.example.com

Verificarea serverului web

Pentru a vedea dacă serverul dvs. web returnează certificatele și lanțurile (dacă aveți intermediari) pe care le-ați setat, puteți utiliza și o linie de comandă openssl (eventual de pe mașina serverului web în sine).

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

Dacă utilizați un CA care nu este inclus pe mașina care execută comanda openssl, veți primi o eroare de verificare, dar cel puțin puteți vedea certificatele returnate.

În conectare puteți folosi și o adresă ip, așa că dacă serverul web se află pe aceeași mașină și ascultă și în loopback, ați putea spune

openssl s_client -connect localhost:443 -servername example.com -showcerts

-numele serverului este pentru selectarea vhost-ului potrivit dacă serverul web are mai multe vhost-uri pe portul 443.

Finaria avatar
drapel bh
Rulez comanda: `openssl req -key sslcert.key -out sslcert.csr -config sslcert.cnf` Dar în certificat nu există SAN, iar după ce deschid site-ul (F12) scrie: `Certificat - Nume alternativ al subiectului lipsește Certificatul pentru acest site nu conține o extensie SAN care să conțină un nume de domeniu sau o adresă IP` Dacă adaug această comandă, `-addext âsubjectAltName = DNS:*.mydomain.localâ` va apărea după acea SAN, fără ea. Și am folosit fișierul sscert.conf și conține configurația SAN. Atunci de ce nu este folosit? Și certificatul lipsește încă o problemă.
Gerrit avatar
drapel cn
Ați putea încerca fișierul de configurare modificat din răspunsul meu? Se pare că s-a întâmplat să depind de unele setări de bază din distribuția openssl a sistemelor mele. Mai primiți un certificat care lipsește când aveți intrările corecte CN și DNS?
Finaria avatar
drapel bh
Tot fără noroc. Puteți explica cum funcționează numele de gazdă? Cred că acolo eșuez. Numele de gazdă al serverului meu este glpi.mylab.local. DNS/AD-ul meu este mylab.local. `[ alt_names ] DNS.1 = glpi.mylab.local DNS.2 = www.glpi.mylab.local` `[ dn ] ... CN = glpi.mylab.local` Dacă cheskhost pentru orice combinație, este întotdeauna nepotrivită. ce fac greșit?
Finaria avatar
drapel bh
Și acesta: `openssl req -nodes -newkey rsa:2048 -keyout sslcert.key -out sslcert.csr -config sslcert.cnf -utf8` funcționează, dar nu există SAN în fișierul cert. Numai dacă adaug asta la comanda mea: `-addext âsubjectAltName = DNS:*glpi.mylab.localâ `
Gerrit avatar
drapel cn
*glpi nu este corect sau ai încercat niște markupuri aici? *.glpi.mylab.local poate funcționa pentru o variantă www, dar nu și pentru varianta fără www.
Finaria avatar
drapel bh
Hy! Nu, încă nu funcționează. Fișierul meu de configurare ssl arată astfel: `[ solicitat] default_bits = 2048 prompt = nu default_md = sha256 nume_distins = dn req_extensions = ext [ext] subjectKeyIdentifier=hash keyUsage=digitalSignature, keyEncipherment subiectAltName = @alt_names [alt_names] DNS.1 = glpi.mylab.local DNS.2 = www.glpi.mylab.local [dn] emailAddress=nu CN = mylab.local` Cerere comanda: `openssl req -new -newkey rsa:2048 -nodes -keyout tsslkey.key -out tsslreq.csr -config sslcert.cnf -utf8`
Finaria avatar
drapel bh
Verificare DNS: `openssl req -noout -text -in tsslreq.csr |grep DNS DNS:glpi.mylab.local, DNS:www.glpi.mylab.local` Adn încă „În acest site îi lipsește un certificat valid și de încredere (net::ERR_CERT_COMMON_NAME_INVALID).” numele de gazdă este glpi.mylab.local Ce s-a întâmplat?
Gerrit avatar
drapel cn
Mă întreb dacă există un al doilea _default_ vhost_ pe portul 443 în Apache care suprascrie vhost-ul tău.
Gerrit avatar
drapel cn
Verificați CSR-ul. Ati verificat si certificatul eliberat?
Finaria avatar
drapel bh
Ai dreptate, nu am verificat certificatul. Este greșit: `X509v3 Nume alternativ al subiectului: alt nume:` De ce este generat astfel, când fișierul de solicitare este bun? Niciun alt vhost implicit `a2dissite default-ssl.conf Site default-ssl deja dezactivat`
Gerrit avatar
drapel cn
Eroarea alt nume ar putea implica faptul că informațiile despre numele DNS au fost stocate de CA într-un format care nu este acceptat de openssl. Numele DNS ar trebui să fie IA5STRING. Dar, gândindu-mă, eroarea pare să indice că nici măcar formatul de nume DNS nu este ales sau că este inclus un alt GeneralName care nu este acceptat. Poate uitați-vă la fila „Subject Name” din șablonul dvs. de emitere SSL. Am făcut semnarea cu Windows CA a fișierelor CSR openssl și asta a mers întotdeauna destul de bine, dar este posibil să existe setări operaționale în șablonul folosit care adaugă alte informații, incompatibile cu openssl.
Gerrit avatar
drapel cn
De asemenea, ca măsură de precauție, asigurați-vă că fișierul de configurare openssl este stocat în utf-8 sau ascii și are doar linii noi Unix.
Finaria avatar
drapel bh
Succes :). Am renunțat la ideea de a face un fișier propriu ssl.cnf. Am folosit-o pe cea implicită, dar cu -addtext SAN. Anterior, am renunțat la „*” din subiectAltName. `openssl req -new -addext "subjectAltName = DNS:glpi.mylab.local" -newkey rsa:2048 -nodes -keyout testkey.key -out testreq.csr` După ce am importat fișierul de certificare, a apărut o nouă eroare: `"Conținut activ cu erori de certificat"` Tocmai am șters memoria cache a browserului și certificatul a fost acceptat, totul verde. Mulțumesc pentru ajutor și răbdare.

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.