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.