ublog

localhost wildcard https

programming [48]linux [27]

Створюємо та налаштовуємо 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


або ж
sudo service networking 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;
}
...


це все :)