Путаница между подписанным сертификатом и ошибкой:- x509: сертификат подписан неизвестным органом
Итак, я работаю над домашним сервером синапса matrix.org и пытаюсь объединиться.
Я получил сертификат для своего домашнего сервера, внутри него было 3 файла: chain.crt(двоичный),server.crt(небинарный) и server.key(небинарный).
server.crt имеет начальный сертификат, а server.key имеет закрытый ключ. Я выполняю обратное проксирование своего домашнего сервера с помощью веб-сервера Nginx, и в конфигурации Nginx я указал сертификат SSl на server.crt и ключ SSl на server.key.
Проблема, с которой я сталкиваюсь на https://federationtester.matrix.org/, заключается в том, что он показывает x509: сертификат, подписанный неизвестным органом.
Нужно ли мне куда-то включать chain.crt(двоичный файл)?
2 ответа
Обычно рекомендуется включать промежуточные сертификаты в конфигурацию TLS. Но сертификат обычно должен правильно проверяться в любом случае, потому что clienta обычно также имеет различные промежуточные сертификаты в своем хранилище и может таким образом строить цепочку.
Ваш сертификат подписан общедоступным центром сертификации? Synapse требует наличия такого сертификата уже пару версий. Сертификат по умолчанию, вероятно, самоподписанный, за исключением того, что вы настроили встроенный клиент ACME для получения одного из Let's Encrypt.
Один из способов проверить это - открыть URL-адрес федерации в вашем браузере и посмотреть, не выдает ли он ошибку проверки.
nginx
требуется серверный (листовой) сертификат и цепочный (промежуточный) сертификат (ы), оба в формате PEM (то, что вы называете небинарным) в одном файле, но то, что вы называете двоичным, почти наверняка является тем, что многие программы называют DER (которая представляет собой конкретную двоичную кодировку ASN.1, которую использует X.509). Если у вас есть OpenSSL (или вы его получили), используйте
openssl x509 -in chain.binary -inform der -out chain.pem
затем добавить chain.pem
до конца server.crt
; или вы можете сделать это за один шаг
openssl x509 -in chain.binary -inform der >>server.crt
Если это не сработает, возможно, ваш chain.crt является чем-то более странным, например PKCS7/CMS в двоичном /DER. Отправьте шестнадцатеричный дамп или сделайте точный файл доступным где-нибудь, например pastebin.
Если у вас нет / нет OpenSSL, есть другие инструменты, которые можно использовать в зависимости от вашей среды. Укажите свою операционную систему (ы) и все основные инструменты, такие как Java.