https://localhost

1. Создаём корневой сертификат

Генерируем ключ (RSA-2048 key)

openssl genrsa -des3 -out rootCA.key 2048

Генерируем корневой сертификат (Root SSL certificate)

openssl req -x509 -new -nodes -key rootCA.key -sha256 -days 1024 -out rootCA.pem

2. Добавляем корневой сертификат в список доверенных

Ubuntu

sudo cp rootCA.pem /usr/local/share/ca-certificates/rootCA.crt
sudo update-ca-certificates

Добавляем корневой сертификат в Firefox и Chrome

sudo apt install libnss3-tools
openssl pkcs12 -export -out rootCA.pfx -inkey rootCA.key -in rootCA.crt
pk12util -d sql:$HOME/.pki/nssdb -i rootCA.pfx
certutil -d sql:$HOME/.pki/nssdb -A -t "C,," -n myapp-certificate -i rootCA.pem

Перезагружаем браузер.

Если не помогло:

  • Firefox: PreferencesPrivacy & SecurityCertificatesView Certificates...AuthoritiesImport... → выбираем rootCA.pem
  • Chrome: SettingsPrivacy and securityManage certificatesAuthoritiesImport → выбираем rootCA.pem

Перезагружаем браузер.

Windows 7

ПускПанель управленияСвойства браузераСодержаниеСертификатыДоверенные корневые центры сертификации
Жмём кнопку «Импорт»

Windows 10

StartControl PanelNetwork and InternetInternet OptionsContentCertificatesTrusted Root Certification Authorities
Import...Next → Выбрать rootCA.pfxNext → Заполнить PasswordNextFinish
Security warning → Yes

3. Создаём сертификат домена

Создаём файл server.csr.cnf со следующим содержимым.
В котором CN — доменное имя. Остальные поля заполняются как на шаге создания корневого сертификата.

[req]
default_bits=2048
prompt=no
default_md=sha256
distinguished_name=req_distinguished_name

[req_distinguished_name]
C=RU
ST=Saint-Petersburg
L=Saint-Petersburg
O=RandomOrganization
OU=RandomOrganizationUnit
emailAddress[email protected]
CN=localhost

Создаём файл v3.ext
Где DNS.1 — как поле CN в файле server.csr.cnf

authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @alt_names

[alt_names]
DNS.1 = localhost

Генерируем доменный ключ

openssl req -new -sha256 -nodes -out server.csr -newkey rsa:2048 -keyout server.key -config server.csr.cnf

Генерируем доменный сертификат

openssl x509 -req -in server.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out server.crt -days 500 -sha256 -extfile v3.ext

Помещаем сгенерированные ключ и сертификат в директорию для Докер-контейнера

nginx/etc/ssl/certs/server.crt
nginx/etc/ssl/private/server.key

4. Добавляем настройки для работы HTTPS в NGINX-конфиг

. . .

 http {
   server {
-    listen 7272;
+    listen 7272 ssl;

+    ssl_certificate /etc/ssl/certs/server.crt;
+    ssl_certificate_key /etc/ssl/private/server.key;

     . . .

5. Обновляем команду запуска NGINX Докер-контейнера

 docker run --rm -it -p 7272:7272 \
   -v $(pwd)/nginx:/etc/nginx:ro \
+  -v $(pwd)/nginx/etc/ssl/certs:/etc/ssl/certs \
+  -v $(pwd)/nginx/etc/ssl/private:/etc/ssl/private \
   --name myapp-nginx nginx

Дополнительные материалы