Как заставить Chrome/ браузер принять мой сертификат SSL (подписанный промежуточным сертификатом для моего собственного ЦС)
У меня опыт разработки, но я пытаюсь улучшить свои навыки секьюритизации, чтобы стать более универсальным.
Я создал свой собственный местный центр сертификации, следуя этому руководству (хотя и довольно свободно).
Я успешно создал корневую пару (ключ и сертификат), промежуточную пару и пару серверов для test.mydomain.com.
Затем я настроил nginx в качестве прокси-сервера для веб-API Node.js (обслуживаемого Express FWIW). И nginx, и служба nodejs контейнеризированы, и я просто использую docker-compose для запуска этого локально. Я также добавил запись hosts, чтобы иметь доступ к своей службе с помощью test.mydomain.com. В конце концов, я хочу реализовать шаблон сервис-прокси / сопроводительный элемент в Kubernetes (где nginx и (микро) сервис работают в одном модуле), но пока я просто пытаюсь заставить его работать в докере.
Все это работало через HTTP, поэтому следующим шагом будет заставить его работать для HTTPS (где TLS завершается на прокси-сервере службы nginx, а затем запрос передается в службу Node.js через HTTP). Он работает, но я не могу заставить свой браузер (Chrome, работающий в Windows) принять мой сертификат.
Я пробовал несколько комбинаций импорта сертификатов в хранилища сертификатов Windows, включая:
- импорт корневого сертификата в хранилище сертификатов доверенных корневых центров сертификации
- импорт промежуточного сертификата в хранилище сертификатов промежуточных ЦС
- связывание корневых и промежуточных сертификатов и импорт в хранилище сертификатов корневых центров сертификации
но я не могу заставить Chrome принять мой сертификат.
FYI nginx настроен следующим образом
ssl_certificate /etc/ssl/test.mydomain.com.cert.pem;
ssl_certificate_key /etc/ssl/private/test.mydomain.com.key.pem;
Должен ли я связывать серверные, промежуточные и корневые сертификаты для ssl_certificate
настройка в nginx?.. и какой сертификат (или связанный сертификат) я должен импортировать в какое хранилище сертификатов?
Я также заметил, что есть ssl_trusted_certificate
настройка nginx, которую я не уверен, стоит ли мне использовать...
Ура, Райан.
1 ответ
Итак, наконец-то у меня все заработало. Было несколько вещей...
Сначала мне удалось заставить все работать в Firefox, но Chrome все еще не работал. Это была подсказка, которая мне была нужна - оказывается, Chrome требует, чтобы сертификаты включали одно или несколько альтернативных имен субъектов, а не только общее имя (которое, очевидно, приемлемо для Firefox).
Мне пришлось настроить альтернативные имена субъектов, когда я создал и подписал запрос на сертификат.
Остальное было довольно легко.
В nginx ssl_certificate
указывает на связанный сертификат (сертификат сервера + промежуточный сертификат).
а затем мне пришлось импортировать корневой сертификат в доверенные корневые центры сертификации для локального компьютера.
Перезагрузите хром и вуаля: