Что такое (SSL/TLS) сертификат? В очень короткий цифровой сертификат (publickey) предоставляет возможность проверить, что публикация принадлежит сущности, такой как сервер, и используется, чтобы убедиться, что вы подключаетесь к законному серверу, а не к самозванцу, например мошенничество или шпионское агентство. (И иногда спорные различия между теми, оффтоп здесь.)
Хотя есть (и в прошлом) несколько видов цифровых сертификатов, SSL/TLS использует тип, определенный X.509 стандарт и связанных с такими стандартами, как "PKIX" (Internet Public Key Infrastructure - X.509). Как часто, Википедия - это хорошее место для начала: https://en.wikipedia.org/wiki/X.509 довольно тщательно (но не кратковременно) для самого сертификата; https://en.wikipedia.org/wiki/Certificate_authority Хорошо, как вы получаете сертификат (или нет). (Технические nitpicks: спецификации TLS позволяют использовать другие виды сертификатов, но никто на самом деле не делает этого, они также допускают возможность «анонимных» соединений без сертификата сервера, но поскольку на практике они обычно небезопасны, большинство программ и в частности, веб-браузеры не позволяют их.)
Использование «реального» сертификата. Большинство клиентов SSL/TLS настроены на первоначальное доверие к набору из примерно 100 известных так называемых ЦС, таких как Symantec и Comodo и GoDaddy, и некоторые правительственные, которые не так хорошо известны, кроме стран, в которых они работают , Точный набор немного меняется на разных платформах и изменяется со временем, когда устанавливаются новые центры сертификации, а старые отключены или сгруппированы или изредка сбой (например, DigiNotar). Если вы получите сертификат своего сервера, выпущенный одним из этих установленных центров сертификации, большинство клиентов, вероятно, примет его автоматически.Важное ограничение: вы можете получить только «настоящий» сертификат для доменного имени, которое принадлежит вам (или несколько имен, которые все принадлежат вам); то, как определяется «принадлежит», зависит от ЦС, но обычно это означает управление DNS, электронной почтой и/или общедоступным веб-сервером. Если сервер, который вы хотите настроить, использует только имя внутреннего домена (или не domain) или частный (rfc1918) адрес, так как может быть иметь дело с вашей «закрытой сетью», вы не можете получить «реальную "cert для него.
Использование самозаверяющего сертификата. Поскольку вы не установили для всех поставщиков браузеров и клиентов и ОС, которым можно доверять безопасность большинства стран мира, ваш самозаверяющий сертификат - , а не - в магазинах по умолчанию практически любого программного обеспечения, поэтому вы необходимо, чтобы добавить его в доверительный магазин. Как вы это делаете: в зависимости от клиента (-ов) вы используете. Обратите внимание, что вы должны добавить только сертификат, как «доверенный корень» или «доверенный орган», а не закрытый ключ; к счастью, почти ничего не принимает файлы privatekey OpenSSL-формата «PEM». Просто не копируйте приватную клавишу в любом месте, кроме вашего сервера (и желательно, чтобы это было безопасно в автономном режиме, если вы этого хотите).
IE (и я считаю, что Edge) и Chrome/Windows используют хранилище Windows. К этому можно получить доступ (и, в частности, вы можете добавить свой сертификат) в IE из «Инструменты/Параметры в Контенте в качестве сертификатов», в «Хром/Продвинутый», как «Управление сертификатами», или непосредственно из «Панели управления» - «Интернет» под Контентом в качестве сертификатов.
В Firefox (на всей ОС) используется собственный магазин, доступ к которому осуществляется в разделе «Инструменты/Параметры/Дополнительно».
Chrome (НМУ)/Unix я не знаю
Java: установленная JRE поставляется с cacerts
файла по умолчанию в JRE/lib/security
. Приложение Java может переопределить это, но не так много, поэтому обычно достаточно добавить свой сертификат в cacerts
, за исключением того, что установка новой версии JRE сбрасывает cacerts
- и вы часто можете установить новые версии JRE из-за уязвимостей безопасности. Вы можете избежать этого, используя вместо этого jssecacerts
; настроить его с помощью ЦС, которые вы хотите - вероятно, некоторые, но не обязательно все из них в cacerts
, плюс ваши собственные; затем сохраните копию jssecacerts
в другом месте и просто скопируйте ее в любую новую JRE.
OpenSSL (on Unix). Из формата ошибки ваш «бот» явно использует OpenSSL (или вилку вроде LibreSSL). OpenSSL сам определяет местоположение доверия по умолчанию, но не предоставляет никаких сертификатов. Тем не менее, многие упаковщики OpenSSL добавляют набор сертификатов CA, которые часто называются «ca-certificate» или «pki-certs». Вы не указываете ОС, но ваше использование apt-get
предлагает Debian или Ubuntu; если это так, я не знаю, что вы, вероятно, установили, но что-то, связанное с dpkg -l
, apt-cache
, или aptitude
может работать. Если это так, возможно, документированный процесс добавления ваших собственных сертификатов в распределенный набор; проверьте свои страницы.
Однако OpenSSL упрощает использование приложения (или промежуточного программного обеспечения) другого магазина доверия, чем значение по умолчанию.Например, curl
- это обычный инструмент командной строки, который обычно использует OpenSSL (хотя он может использовать другие реализации) и имеет опции командной строки --cacert --capath
для использования настраиваемого магазина доверия. В зависимости от того, что ваш «бот», он может иметь или не иметь похожих или разных вариантов или ни одного.
OpenSSL на Windows имеет в принципе аналогичные варианты, но на практике это гораздо более запутанно. В Windows нет единой системы упаковки или файловой иерархии, поскольку обычно используется данный вариант Unix или дистрибутив Linux, вместо этого существуют сотни или тысячи более или менее совершенно разных методов, изобретенных множеством и множеством людей. Если вам это нужно, задайте более конкретный и полный вопрос.