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;
}
...