Когда необходимо предоставить файл CA? - PullRequest
0 голосов
/ 13 апреля 2020

Я пишу сервер на Go, который использует MongoDB, и я проводил некоторые исследования о том, как включить SSL для подключения к базе данных. Я нашел несколько примеров, которые объясняют, как добавить файл CA. Примерно так:

mongo.NewClientWithOptions(connectionString, mongo.ClientOpt.SSLCaFile(caFilePath))

Я использую размещенную базу данных в Atlas, и они утверждают, что все соединения по умолчанию используют SSL. Этот ответ на другой вопрос показывает, как подключиться к Atlas с помощью Go, но пример кода не использует файл CA. Я также не смог найти вариант для загрузки файла CA из Atlas, который мог бы использовать.

Это немного смущает меня и приводит к следующим вопросам. Когда необходимо использовать файл CA, как показано выше, для использования SSL? Если для предоставления файла CA всегда требуется SSL, откуда мне взять файл CA для подключения к управляемому кластеру в Atlas?

Ответы [ 2 ]

2 голосов
/ 13 апреля 2020

Вам всегда нужен сертификат CA для проверки сервера при инициализации соединения TLS. Иногда это уже установлено на вашей платформе и используется автоматически. Вы должны предоставить файл CA во время соединения, когда такой сертификат root недоступен. Файл CA используется для проверки сертификата, представленного сервером. Доверенная третья сторона предоставляет этот ЦС, а также (возможно, через цепочку доверенных сторон) предоставляет сертификат серверу, поэтому вы можете проверить, кто его утверждает, проверяя его сертификат с помощью ЦС.

Все платформы поставляются с начальным набором root сертификатов, которые могут проверять известные сторонние сгенерированные сертификаты. Сервер mongodb, к которому вы подключаетесь, вероятно, использует такой сертификат, и, следовательно, ваши сертификаты ОС могут использоваться для его проверки. Если у вас была ваша собственная PKI с вашим собственным CA, который не был проверен третьей стороной, вам понадобится отдельный файл CA, подписанный вашим собственным CA. Затем вам нужно будет передать этот файл CA для проверки сервера, потому что ваш root сертификат не будет содержать ваш пользовательский CA.

2 голосов
/ 13 апреля 2020

Файл CA указывает, каким самоподписанным сертификатам root вы доверяете, а также может включать в себя промежуточные центры сертификации.

Когда приложение подключается к серверу, сервер отправляет свой сертификат как часть рукопожатие. Сертификат сервера был подписан цифровой подписью.

Чтобы убедиться, что сертификат сервера не был подделан, используется сертификат эмитента, который содержит ключ c, который можно использовать для проверки цифровой подписи.

Если эмитент был промежуточным ЦС, то его сертификат был также подписан другим ЦС, поэтому с сертификатом ЦС будет проводиться проверка для подтверждения подписи на промежуточном сертификате.

Это продолжается до тех пор, пока цепочка достигает сертификата, который был подписан самостоятельно. Это root сертификат. Поскольку он подписывает себя, вы должны явно указать, что доверяете ему, чтобы доверять всей цепочке, включая сервер, к которому подключен.

Суть в том, что вам нужно предоставить файл CA, когда:

  • Вы заботитесь о том, чтобы проверить подлинность сервера, к которому вы подключаетесь (т. Е. Не допустить атаки человека в середине), и
  • Сертификат root не будет уже неявно доверен включение в локальный трастовый магазин
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...