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
- Network Security Services — Просмотр и управление сертификатами для браузеров
- Mozilla NSS library — Почему
update-ca-certificates
недостаточно - local-cert-generator
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: Preferences → Privacy & Security → Certificates → View Certificates... → Authorities → Import... → выбираем
rootCA.pem
- Chrome: Settings → Privacy and security → Manage certificates → Authorities → Import → выбираем
rootCA.pem
Перезагружаем браузер.
Windows 7
Пуск → Панель управления → Свойства браузера → Содержание → Сертификаты → Доверенные корневые центры сертификации
Жмём кнопку «Импорт»
Windows 10
Start → Control Panel → Network and Internet → Internet Options → Content → Certificates → Trusted Root Certification Authorities
Import... → Next → Выбрать rootCA.pfx
→ Next → Заполнить Password → Next → Finish
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