localhost wildcard https

Створюємо та налаштовуємо https сертифікат для локалхосту
(буває, що може виникнути така необхідність):

спочатку пропишемо наші локальні домени

sudo vim /etc/hosts

допишемо наступні строчки

127.0.0.1 test1.ls
127.0.0.1 en.test1.ls
127.0.0.1 test2.ls
127.0.0.1 subdomain.test2.ls

щоб застосувати зміни, без перезавантаження комп'ютера -

sudo /etc/init.d/networking restart
# or
sudo service networking restart

або

sudo /etc/init.d/network-manager restart
# or
sudo service network-manager restart

далі

mkdir certs
cd certs
vim ssl.conf

напишемо та збережемо наступні строчки

[ req ]
default_bits      = 4096
distinguished_name = req_distinguished_name
req_extensions    = req_extensions_section

[ req_distinguished_name ]
countryName                    = Country Name (2 letter code)
countryName_min                = 2
countryName_max                = 2
countryName_default            = UA
stateOrProvinceName            = State or Province Name (full name)
stateOrProvinceName_default    = Lviv
localityName                    = Locality Name (eg, city)
localityName_default            = Lviv
organizationName                = Organization Name (eg, company)
organizationName_default        = Test
organizationalUnitName          = Organizational Unit Name (eg, section)
organizationalUnitName_default  = IT
commonName                      = Common Name (e.g. server FQDN or YOUR name)
commonName_max                  = 64
commonName_default              = localhost
emailAddress                    = Email Address (eg, admin@example.com)
emailAddress_max                = 64
emailAddress_default            = info@test.com

[ req_extensions_section ]
subjectAltName = @subject_alternative_name_section

[ subject_alternative_name_section ]
DNS.1  = test1.ls
DNS.2  = *.test1.ls
DNS.3  = test2.ls
DNS.4  = *.test2.ls

згенеруємо приватний ключ

openssl genrsa -out private.key 4096

згенеруємо CSR (Certificate Signing Request)
("Common name" -- назва вашого проекту)

openssl req -new -sha256   -out private.csr   -key private.key   -config ssl.conf 

перевіримо CSR

openssl req -text -noout -in private.csr

побачимо щось таке

...
X509v3 Subject Alternative Name: DNS:test1.ls
...
Signature Algorithm: sha256WithRSAEncryption
...

згенеруємо сертифікат

openssl x509 -req   -sha256   -days 3650   -in private.csr   -signkey private.key   -out private.crt   -extensions req_extensions_section   -extfile ssl.conf

Встановимо сертифікат довіреним в системі

sudo mkdir /usr/share/ca-certificates/extra
sudo cp private.crt /usr/share/ca-certificates/extra/private.crt

sudo dpkg-reconfigure ca-certificates
# or
sudo update-ca-certificates

залишилось прописати в налаштуваннях nginx
в місцях підключення сертифікатів
(чи в інших програмах, де вам знадобився сертифікат)

server{
  listen 443 ssl http2;
  ssl_certificate /home/user/certs/private.crt;
  ssl_certificate_key /home/user/certs/private.key;
  ssl_dhparam /home/user/certs/dhparams.pem;
  
  ...
  server_name www.test1.ls;
  return 301 https://test1.ls$request_uri;
}
...

Посилання

https://habr.com/ru/post/352722/