BonBonSlick
@BonBonSlick
Junior Web Developer Trainee

Self signed больше не работают локально?

Пробовал
sudo openssl req -x509 -newkey rsa:4096 -x509 -sha256  -keyout domain.com.key -out domain.com.pem -days 3650 -nodes
Generating a RSA private key
....................................................++++
............................................................................................................................++++
writing new private key to 'localdomain.com.key'
-----
You are about to be asked to enter information that will be incorporated
...
-----
Country Name (2 letter code) [AU]:ua
State or Province Name (full name) [Some-State]:kh***
Locality Name (eg, city) []:***
Organization Name (eg, company) [Internet Widgits Pty Ltd]:localdomain co
Organizational Unit Name (eg, section) []:localdomain
Common Name (e.g. server FQDN or YOUR name) []:localdomain.com
Email Address []:***

Не важно какой формат на выходе, один .pem или .perm + .key, .key + .crt теперь выдает что в chrome что в mozila FF
NOT SECURED
Естественно сертификаты .pem и .crt добавлени вручную в Authorities, nginx и браузер рестарт.
И тем не менее, выдает все время
Your connection is not private

This page is not secure (broken HTTPS).

Certificate - Subject Alternative Name missing
The certificate for this site does not contain a Subject Alternative Name extension containing a domain name or IP address.

Certificate - missing
This site is missing a valid, trusted certificate (net::ERR_CERT_COMMON_NAME_INVALID).

Connection - secure connection settings
The connection to this site is encrypted and authenticated using TLS 1.2, ECDHE_RSA with X25519, and AES_256_GCM.
Resources - all served securely
All resources on this page are served securely.


На заметку https://chrome/flags/#allow-insecure-localhost включен в хроме, но неработает, 0 эфекта.

Конфиги openssl
/etc/ssl/localcerts/domains.ext
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @alt_names
[alt_names]
DNS.1 = localhost
DNS.2 = domain.loc
DNS.3 =domain.com
DNS.4 = api.domain.com


Домен указан в hosts 127.0.0.1 domain.com
nginx его резолвит с сертами под названиями ssl_cert domain.com.pem и ключ domain.com.key где CM (common name) указаны в domain.loc, в конфигах ssl етот домен так жу казан. В Authorities бразуера видно кем выдан и куда, то есть выдан для сайта с доменом domain.com но при вызове с етого адреса сертификат говорит что ERR_CERT_COMMON_NAME_INVALID, бред какой-то. Nginx читает конфиги и сертификаты верно, это видно в деталях сертификата.
По ощущениям, словно браузер не может считать имортированые Authorities и сверить с тем что использовано nginx.

server {
#       listen 8181;
#       listen [::]:8181;

        listen 443 ssl;
        listen [::]:443 ssl;

        ssl on;
        ssl_certificate /etc/ssl/localcerts/domain.com.pem;
        ssl_certificate_key /etc/ssl/localcerts/domain.com.key;

        root /var/www/domain/dist;
        index index.html index.htm;

        server_name domain.com;
  • Вопрос задан
  • 45 просмотров
Пригласить эксперта
Ответы на вопрос 2
yarkov
@yarkov
Проект "Жизнь после смерти" - lifeafterdeath.ru
Генерю сертификаты для работы локально с помощью mkcert и всё работает.
Ответ написан
@acwartz
angular, hello world java, chrome ext/, delphi
Мой скрипт для апача.
Создать подпапку в корне сборки апача. Положить скрипт .bat
выше должна быть папка bin с openssl.exe libeay32.dll ssleay32.dll внутри, там же openssl.cnf
В зависимости от версии OpenSLL имена dll могут быть другими, соотв. перебить их в батнике чтобы скрипт смог использовать работоспособную openssl.exe
В скрипте прописать целевое доменное имя в DOMAIN_NAME, так же IP-адрес вашей машины в сети в LAN_IP.
Прописать свои данные в аргумент для -subj.
Скрипт сам скопирует бинари, сам создаст все ключи, сам зарегистрирует сертификат в личном хранилище и вычистит кэш днс.
Указать в http.conf к ключу и сертификату server.ssl./.key которые скрипт положит в ./conf/

Профит. У огнесила своё хранилище сертификатов вроде как, с ним не тестил. С хромом 100% работает как локально так и для всех кто подключается по локальной сети к вам.

@echo off
title SSL Self-signed gen.
SET DOMAIN_NAME=dev14.local.in
SET HOSTSFILE=%windir%\System32\drivers\etc\hosts
SET LAN_IP=127.0.0.1
SET APACHE_SSL_FILE=..\conf\server.ssl.crt
SET APACHE_SSL_KEY_FILE=..\conf\server.ssl.key
SET SSL_STORE=ROOT

echo Getting OpenSSL from appache bin...
copy ..\bin\libeay32.dll .\libeay32.dll
copy ..\bin\openssl.exe .\openssl.exe
copy ..\bin\ssleay32.dll .\ssleay32.dll
copy ..\conf\openssl.cnf .\openssl.cnf

rem ald domain names 
echo [SAN] >> .\openssl.cnf
echo subjectAltName=DNS:localhost,DNS:%DOMAIN_NAME%,DNS:%LAN_IP% >> .\openssl.cnf

echo Generating certificate for domain is "%DOMAIN_NAME%"

for /F "tokens=3" %%s in ('certutil -dump %APACHE_SSL_FILE% ^| findstr ^"^^Serial^"') do (
   certutil -user -delstore "%SSL_STORE%" %%s
)

del .\server.key /f /q
del .\server.crt /f /q
del .\.rnd /f /q
openssl req -config openssl.cnf -x509 -newkey rsa:2048 -keyout server.key -out server.crt -days 3650 -nodes -subj "/C=NULL/ST=NULL/L=NULL/O=NULL/OU=NULL/CN=%DOMAIN_NAME%" -reqexts SAN -extensions SAN 
echo Copying keys "\server.ssl.crt" and "\server.ssl.kay" to .\conf\

copy .\server.crt %APACHE_SSL_FILE% /y
copy .\server.key %APACHE_SSL_KEY_FILE% /y

certutil -addstore -f "%SSL_STORE%" %APACHE_SSL_FILE%


echo 127.0.0.1 %DOMAIN_NAME% >> %HOSTSFILE%
echo %LAN_IP% %DOMAIN_NAME% >> %HOSTSFILE%

ipconfig /flushdns 

:EOF
pause
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы