Как заставить 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 указывает на связанный сертификат (сертификат сервера + промежуточный сертификат).

а затем мне пришлось импортировать корневой сертификат в доверенные корневые центры сертификации для локального компьютера.

Перезагрузите хром и вуаля:

Другие вопросы по тегам