Показать полную графическую версию : Создать свой сертификат для localhost
Здравствуйте!
У нас на ПК работает своя служба.
Для работы с настройками этой службы используется браузер и подключается к адресу localhost.
Мы используем Google Chrome.
Подключение идет на адрес https://localhost/.
И при первом подключении всегда выдается ошибка:
"Ваше подключение не защищено..."
Приходится каждый раз нажимать кнопку "Дополнительно" и далее нажимать "Перейти на сайт".
Хочется сделать так, чтобы это сообщение не появлялось.
В интернете прочитал, что для этого нужно сделать свой сертификат для localhost.
Подскажите, пожалуйста, как это делается?
ES, попробуйте в хроме выставить флаг: chrome://flags/#allow-insecure-localhost
никакой "свой сертификат" не поможет, потому что смысл сертификатов в стороннем аудиторе
(разве что у вас в рамках организации свой центр сертификации, явно прописанный на всех компьютерах)
Jula0071
01-08-2018, 15:00
"Ваше подключение не защищено..."
Приходится каждый раз нажимать кнопку "Дополнительно" и далее нажимать "Перейти на сайт". »
Какой-то сертификат там уже есть.
разве что у вас в рамках организации свой центр сертификации, явно прописанный на всех компьютерах »
У него всё в рамках локалхоста, так что добавить CA в доверенные на этом компе и всё станет окей. Разумеется, добавив в сертификат SAN localhost, если ещё не.
В принципе, зачем вообще сертификат на локалхосте неясно - трафик-то дальше машины никуда не уходит. Разве что при разработке, чтобы приблизить условия к боевым.
У него всё в рамках локалхоста, так что добавить CA в доверенные на этом компе и всё станет окей. Разумеется, добавив в сертификат SAN localhost »
А как это делается?
Что такое "CA"?
Что такое "SAN localhost"?
В принципе, зачем вообще сертификат на локалхосте неясно - трафик-то дальше машины никуда не уходит »
Это специальная служба, которая работает на сервере.
К этой службе посылаются запросы от других компьютеров через интернет, служба отправляет им ответы.
Для администрирования и настройки этой службы администраторы подключаются к серверу по RDP и входят в режим настройки службы.
Режим настройки - это вход на localhost в браузере.
попробуйте в хроме выставить флаг: chrome://flags/#allow-insecure-localhost »
Вот описание этого флага:
Allow invalid certificates for resources loaded from localhost.
Allows requests to localhost over HTTPS even when an invalid certificate is presented.
То есть, как я понял, этот флаг разрешает запросы на localhost, если имеется неверный сертификат.
Но у нас другая ситуация: у нас вообще никакого сертификата нету.
Jula0071
03-08-2018, 16:18
А как это делается? »
Запросив новый сертификат у центра сертификации, в случае самоподписного - создать свой новый сертификат и установить его на сервер.
"CA" »
Certificate Authoruty = центр сертификации, в данном контексте доверенный корневой сертификат.
SAN »
Subject Alternative Name = альтернативное имя субъекта сертификации.
Но у нас другая ситуация: у нас вообще никакого сертификата нету. »
Есть. Без сертификата HTTPS не работает вообще. Значит какой-то да есть, хоть snakeoil или ещё какая пустышка.
Это специальная служба, которая работает на сервере. »
У этой специальной службы есть название? Это какой-то вебсервер, по крайней мере на фронте.
Есть. Без сертификата HTTPS не работает вообще. Значит какой-то да есть, хоть snakeoil или ещё какая пустышка. »
Где его можно посмотреть?
У этой специальной службы есть название? Это какой-то вебсервер, по крайней мере на фронте. »
Название ничего не скажет.
Это узкопрофильный программный продукт.
Jula0071
06-08-2018, 12:09
Где его можно посмотреть? »
openssl s_client -connect localhost:443
Или просто в хроме мышкой на красный значок слева от адресной строки "Ненадёжный" и ниже "Сертификат (недействительный)", далее "подробнее".
в случае самоподписного - создать свой новый сертификат и установить его на сервер »
Да, действительно, у нас используется самоподписанный сертификат.
Как я понял, этот сертификат распространяется в дистрибутиве этой службы, и устанавливается в систему при инсталляции службы.
И получается: нам надо создать свой "корневой" сертификат, который будет удостоверять этот самоподписанный сертификат.
Правильно я понимаю?
Тогда вопрос такой: а почему фирма-разработчик этой службы сразу не может сделать и самоподписанный сертификат и удостоверяющий сертификат?
Или просто в хроме мышкой на красный значок слева от адресной строки "Ненадёжный" и ниже "Сертификат (недействительный)", далее "подробнее". »
Здесь также есть сообщение:
"Вы отключили предупреждение системы безопасности для этого сайта." и далее ссылка "Снова включить предупреждения".
Но я ничего не отключал.
Что значит это сообщение?
И что делает Chrome когда я нажимаю "Снова включить предупреждения"? Где он включает эти предупреждения? Где находится эта настройка?
openssl s_client -connect localhost:443 »
А этак команда не сработала.
Пишет: "openssl не является внутренней или внешней командой"
Jula0071
06-08-2018, 12:29
Тогда вопрос такой: а почему фирма-разработчик этой службы сразу не может сделать и самоподписанный сертификат и удостоверяющий сертификат? »
Этого не достаточно, чтобы избавиться от предупреждения, как я уже говорил, самоподписной сертификат CA нужно поместить в доверенные. В винде это Trusted Root Certification Authorities. (https://blogs.technet.microsoft.com/sbs/2008/05/08/installing-a-self-signed-certificate-as-a-trusted-root-ca-in-windows-vista/)
Также необходимо (и это я тоже уже говорил), чтобы FQDN или IP ресурса, к которому вы обращаетесь (в вашем случае localhost) присутствовало в CN или SAN. Кстати, проверьте, может поставщик не настолько ленив, как вы думаете и таки прописал localhost. Это будет видно на закладке "подробнее" почти в самом низу "Альтернативное имя субъекта (2.5.29.17)".
Здесь также есть сообщение:
"Вы отключили предупреждение системы безопасности для этого сайта." и далее ссылка "Снова включить предупреждения".
Но я ничего не отключал.
Что значит это сообщение? »
Наверное, это из-запопробуйте в хроме выставить флаг: chrome://flags/#allow-insecure-localhost »
А этак команда не сработала.
Пишет: "openssl не является внутренней или внешней командой" »
По русски же пишет врорде. :) Нет, значит нет. Я-то как админ привык, что некий набор привычных инструментов есть всегда под рукой, забываю, что они есть не у всех. Это бесплатная программа, не помню правда, портировали ли её в винду.
Это узкопрофильный программный продукт. »
Тогда самым правильным будет обратиться с вашей просьбой к его разработчику/поставщику/поддержке.
Тогда самым правильным будет обратиться с вашей просьбой к его разработчику/поставщику/поддержке. »
Это я сделал в первую очередь.
Только их техподдержка работает не очень активно, и ответ был такой: можно добавить свой действительный сертификат.
А как это делается - они считают, что это уже мои проблемы.
А я в этом плохо разбираюсь.
Наверное, это из-за
Цитата Busla:
попробуйте в хроме выставить флаг: chrome://flags/#allow-insecure-localhost » »
Нет, я этот флаг не менял.
самоподписной сертификат CA нужно поместить в доверенные. В винде это Trusted Root Certification Authorities. »
Я попробовал сделать это с моим сертификатом.
Но у него нету кнопки "Install certificate".
Кстати, проверьте, может поставщик не настолько ленив, как вы думаете и таки прописал localhost. Это будет видно на закладке "подробнее" почти в самом низу "Альтернативное имя субъекта (2.5.29.17)". »
Нету такого поля в моем сертификате.
----
Что-то я запутался...
Давай еще раз, пожалуйста.
Итак, чтобы у меня все заработало мне нужно два сертификата.
Один сертификат - корневой, и второй сертификат - "рабочий" (кстати как он правильно называется?).
"Рабочий" сертификат вроде бы есть - он был в дистрибутиве - это два файла с именем user.crt и user.key.
Объясните пожалуйста.
Для чего используется этот "рабочий" сертификат? И зачем еще нужен корневой?
Почему разработчик сделал только один сертификат, а не сделал сразу два сертификата?
А может быть это у нас корневой сертификат?
Как понять какой у нас сертификат: "рабочий" или корневой?
Я-то как админ привык, что некий набор привычных инструментов есть всегда под рукой »
Скачал, выполнил.
Вот что мне вернула эта команда: в прикрепленных файлах
Jula0071
06-08-2018, 15:38
user.crt »
Покажите вывод openssl x509 -in user.crt -text -noout
Ну или просто выложите файл, я сам посмотрю. Конфиденциальной инфы там нету, а вот ключ (user.key) не показывайте никому! Хотя уже то, что он поставлялся с дистрибутивом, говорит о том, что он скомпрометирован... впрочем, это сейчас не важно.
Объясните пожалуйста. »
Цифровые сертификаты слишком большая тема, чтобы её на пальцах объяснить. Попробуйте изучить её самостоятельно – инфа общедоступна.
Покажите вывод openssl x509 -in user.crt -text -noout »
Во вложенном файле
Цифровые сертификаты слишком большая тема, чтобы её на пальцах объяснить. Попробуйте изучить её самостоятельно – инфа общедоступна. »
Ответьте, пожалуйста, хотя бы на последний вопрос: мой сертификат - это корневой или нет?
И как это определить?
Jula0071
06-08-2018, 16:45
мой сертификат - это корневой или нет? »
Нет. Он подписан самоподписным корневым сертификатом C=RU, ST=Samara, L=city, O=ATOL, OU=CRI, CN=ROOT
SAN также нет, всё что есть – CN=501
Кстати, в user.crt точно один сертификат?
Кстати, в user.crt точно один сертификат? »
Как это узнать?
SAN также нет »
Как его добавить?
всё что есть – CN=501 »
А что такое "501"?
Jula0071
06-08-2018, 19:14
Как это узнать? »
Сертификат в pem-формате начинается строкой
-----BEGIN CERTIFICATE-----
и заканчивается
-----END CERTIFICATE-----
Между этими строками ровно один сертификат.
Как его добавить? »
Уже говорил.
А что такое "501"? »
Common Name субъекта сертификации. Ну вот такое вам сделали.
UPD Вот простая хавтушка (https://habr.com/post/192446/), как создать свою CA и подписать ею сертификат. Единственно, там не показано, как добавлять SAN в свой сертификат. Но там ничего сложного, вам следует лишь создать текстовый файл такого содержания:
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @alt_names
[alt_names]
DNS.1 = localhost
IP.1 = 127.0.0.1
И модифицировать команду подписи сертификата, чтобы он подхватил данные из этого файла (я назвал его x509v3.txt):
openssl x509 -req -in user.csr -CA rootCA.crt -CAkey rootCA.key -CAcreateserial -out user.crt -days 10000 -extfile x509v3.txt
Проверяем
openssl x509 -in user.crt -text -noout
Certificate:
Data:
Version: 3 (0x2)
Serial Number: 15242530643563015011 (0xd38858dca7946b63)
Signature Algorithm: sha1WithRSAEncryption
Issuer: C=RU, ST=Samara, L=Samara, O=ATOL, OU=CRI, CN=ROOT
Validity
Not Before: Aug 7 07:39:14 2018 GMT
Not After : Dec 23 07:39:14 2045 GMT
Subject: C=RU, ST=Samara, L=Samara, O=ATOL, OU=CRI, CN=501
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (2048 bit)
Modulus:
00:a8:cb:e9:b0:07:6e:36:37:c3:be:54:6e:96:6e:
25:12:27:02:25:a2:9e:5d:ff:0d:35:0e:3c:8e:3f:
cb:e5:fe:3c:5c:6c:c8:07:d9:7f:b5:53:76:d0:18:
90:4f:3d:1b:86:32:37:40:7d:e2:ab:dd:ab:2f:15:
0b:de:21:e9:81:b2:15:23:58:f9:2c:ac:3d:34:92:
e7:cc:2f:10:49:59:42:9d:c1:c5:c3:af:d0:15:9a:
f3:79:52:d3:18:25:88:62:de:57:94:4b:c6:04:fc:
9b:32:7e:3d:d8:d8:86:88:6a:d6:56:80:5e:43:46:
ef:8f:0a:da:28:00:28:11:54:fe:d7:76:2a:34:10:
53:55:01:53:68:d9:4f:8e:f3:85:3d:df:cb:86:fa:
bb:9e:44:92:a0:7b:b9:6e:8d:8d:c6:17:a8:c0:cd:
d8:c9:77:d0:4d:e7:c0:f6:2a:06:b2:64:12:57:9f:
8c:1f:c1:e1:a6:de:a6:c0:e3:b7:6f:cc:ea:82:a7:
ad:9c:c3:f5:3f:90:03:e2:bd:b1:ed:79:3e:78:4d:
54:db:b5:e8:6a:d4:8e:00:dc:aa:e3:66:47:ec:d6:
1e:77:f9:b1:6b:b0:2b:6e:45:1a:4a:ff:02:d7:90:
89:05:3a:64:b4:70:52:7b:da:64:4c:22:4a:0b:fe:
f7:55
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Authority Key Identifier:
DirName:/C=RU/ST=Samara/L=Samara/O=ATOL/OU=CRI/CN=ROOT
serial:9E:9B:A3:25:09:11:E9:11
X509v3 Basic Constraints:
CA:FALSE
X509v3 Key Usage:
Digital Signature, Non Repudiation, Key Encipherment, Data Encipherment
X509v3 Subject Alternative Name:
DNS:localhost, IP Address:127.0.0.1
Signature Algorithm: sha1WithRSAEncryption
40:63:50:2a:8e:e0:5b:be:f7:6a:fd:d3:a2:f1:80:d9:b9:e0:
79:fa:0b:3f:24:66:f6:c0:cf:a6:29:46:ac:95:b7:01:0b:65:
7b:66:6d:8c:ad:56:de:97:5a:a4:76:ff:4a:22:ae:9b:b7:3c:
64:8b:58:c2:84:21:10:1e:9c:77:3f:66:c8:e1:c2:42:7c:22:
02:84:9a:ee:91:f5:63:d3:bc:41:c5:99:a8:2b:cf:17:0d:e9:
32:6d:75:b2:11:54:cb:7a:28:c7:af:fa:08:4d:2a:cd:39:86:
98:5f:4c:75:06:2e:3f:b8:80:80:cf:de:90:02:80:c6:0c:cb:
ce:78:78:24:e7:6e:dc:cd:54:e2:0d:24:be:43:17:34:33:1d:
e3:b4:f3:42:e1:c4:c8:df:66:5c:5c:0d:89:20:69:ed:11:15:
5f:a7:ae:c3:e4:3e:ed:7a:e9:56:a3:04:7e:d4:a8:82:c3:f6:
32:92:dc:56:fb:70:00:9c:2b:d8:fa:72:b1:52:22:4e:db:89:
fc:c3:33:03:d4:68:a4:42:5c:21:a9:b1:8e:76:e2:07:3f:95:
c0:08:46:9b:f8:14:df:28:9b:99:f3:5b:bd:fd:9b:37:eb:8e:
c5:0b:6f:65:4d:78:3e:3c:52:3f:d0:79:bb:a7:dc:fd:14:7d:
05:5d:b5:3e
X509v3 Subject Alternative Name:
DNS:localhost, IP Address:127.0.0.1
- всё в порядке. Теперь осталось закинуть rootCA.crt Trusted Root CA и установить новые сертификат с ключом в ваше мега-приложение.
Между этими строками ровно один сертификат. »
Да, значит в моем файле только один сертификат.
Как его добавить? »
Уже говорил. »
Вы говорили, что надо добавить, а как это делать - перечитал тему - не нашел.
Он подписан самоподписным корневым сертификатом C=RU, ST=Samara, L=city, O=ATOL, OU=CRI, CN=ROOT »
А если разработчик пришлет нам этот корневой сертификат, мы его добавим в систему.
Это возможно? Это решит проблему?
И все-таки по каким признакам отличается не-корневой сертификат (который у нас) от корневого?
На что надо смотреть, чтобы их отличить?
Jula0071
07-08-2018, 10:56
Вы говорили, что надо добавить, а как это делать - перечитал тему - не нашел. »
Я апдейтнул пост.
А если разработчик пришлет нам этот корневой сертификат, мы его добавим в систему.
Это возможно? »
Возможно. Это решит проблему? »
Нет, не решит. Поскольку CN у вас 501, то и добавление в hosts записи, указывающей на 127.0.0.1 не решит, так как стандарт запрещает использовать в именах только цифры. Хотя ему не все следуют, не знаю как в винде, но на маке у меня не сработало.
И все-таки по каким признакам отличается не-корневой сертификат (который у нас) от корневого? »
Корневой сертификат подписан сам собой. Примерно так это выглядит:
openssl x509 -in rootCA.crt -text -noout
Certificate:
Data:
Version: 1 (0x0)
Serial Number: 11428907858844051729 (0x9e9ba3250911e911)
Signature Algorithm: sha256WithRSAEncryption
Issuer: C=RU, ST=Samara, L=Samara, O=ATOL, OU=CRI, CN=ROOT
Validity
Not Before: Aug 7 07:34:49 2018 GMT
Not After : Dec 23 07:34:49 2045 GMT
Subject: C=RU, ST=Samara, L=Samara, O=ATOL, OU=CRI, CN=ROOT
Соответственно некорневой (промежуточный или "листовой") сертификат подписан сертификатом, стоящим выше в цепочке.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC