Я настраиваю обратный прокси nginx на сервере Ubuntu 16.04 LTS для веб-сервера.
В Ubuntu будут работать три разных сервиса. Сервисы будут общаться друг с другом с помощью вызовов API. Аналогичным образом клиенты (браузеры / мобильные устройства) будут связываться с Сервисами с помощью вызовов API.
Для проверки клиентских SSL-запросов мне необходимо установить сертификаты на серверный компьютер. После аутентификации только запрос будет обработан или перенаправлен для дальнейшей обработки.
У каждой службы есть сертификаты следующих файлов формата. Ser1_cert.crt, Ser1_key-decryp.key, Ser1_keyfile.key, Ser1_exported.pfx
lly Ser2_..., Ser3_... files are available
Для CA у меня есть CA_50EA.crt, доступны файлы CA_50EA.pfx
У меня нет ясности относительно того, какой формат файла сертификата я предполагаю использовать для установки сертификата.
Чтобы установить сертификаты в системе, я выполнил следующие шаги. 1. Я скопировал файлы с расширением .crt (включая файл CA) в /usr/share/ca-certificates
затем я запускаю следующую команду. 2. sudo dpkg-reconfigure ca-certificates
Он показал интерфейс для выбора сертификатов, я выбрал все. В конце концов, он показал нет. сертификатов добавлено.
Я правильно указал путь к сертификату в файле nginx.conf. Я скопировал .crt
и .key
файлы в /etc/ssl/certs/
и /etc/ssl/private/
соответственно.
ssl_certificate "/etc/pki/certs/XServer_certificate.crt"; ssl_certificate_key "/etc/ssl/private/XServer_decryp.key";
Теперь я попытался войти на сервер из клиента браузера, но проверка сертификата входа завершилась ошибкой со следующим сообщением журнала сервера.
info: LoginController[0]
Certification Error :unable to get local issuer certificate
Чтобы еще раз подтвердить, я скопировал все файлы сертификатов в /usr/share/ca-certificates
каталог (всего 14 файлов), затем я снова выполнил sudo dpkg-reconfigure ca-certificates
. На этот раз также возникает такая же ошибка.
В следующий раз я побежал sudo update-ca-certificates --fresh
Команда показала нет. сертификатов, установленных с предупреждением для файла ca.pem, как показано ниже.
WARNING: CA_50EA.pem does not contain a certificate or CRL: skipping 152 added, 0 removed; done.
.pem файл создается в /etc/ssl/certs
папку, но я ввел только файл .crt в /usr/share/ca-certificates
Я попытался проверить с помощью приведенной ниже команды, но также увидел ту же проблему, что и ниже.
openssl s_client -connect [server name]:443 -showcerts -CAfile /etc/ssl/certs/ca-certificates.crt
................. ................. Verify return code: 21 (unable to verify the first certificate)
Это очень ясно говорит о том, что проверка не удалась.
Любой шаг, который мне не хватает, как правильно это сделать. Увидев ошибку, я подумал, что CA установлен неправильно.
Я читаю много блогов, большинство из них объясняют одно и то же, но у меня это не работает.
некоторое время до того, как я работал над CentOS7, я использовал следующие команды для установки сертификатов в системе. update-ca-trust force-enable, update-ca-trust extract В клиентах CentOS проверка сертификата выполняется нормально с указанными выше командами.
Любая обратная связь приветствуется.
Спасибо
Во-первых, спасибо всем вам,
Моя проблема: сертификат CA, который успешно устанавливается в CentOS, тот же сертификат не устанавливается на сервере Ubuntu 16, что дает предупреждение ниже. ВНИМАНИЕ: CA_50EA.pem не содержит сертификата или CRL: 152 добавлено, 0 удалено; сделано.
Решение: после применения различных подходов не удалось определить точную первопричину этой проблемы. Вдруг возникла одна идея, это решило мою проблему.
Создал новый корневой ЦС из файла CA.pfx, используя следующие шаги URL-адреса, и он успешно установлен на сервере Ubuntu 16 без каких-либо предупреждений и успешно подтвердил мои клиентские запросы. https://www.itsupportmiami.com/how-to-convert-a-pfx-to-a-seperate-key-crt-file/
Спасибо всем, кто смотрел мой вопрос и пытался ответить.