Я настраиваю обратный прокси-сервер 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 Clients проверка сертификатов проходила нормально с помощью приведенных выше команд.
Мы будем признательны за любые отзывы.
Спасибо
решение1
Прежде всего, спасибо вам всем,
Моя проблема: Сертификат CA, который успешно устанавливается в CentOS, тот же сертификат не устанавливается в Ubuntu 16 Server, выдавая следующее предупреждающее сообщение. ПРЕДУПРЕЖДЕНИЕ: CA_50EA.pem не содержит сертификат или CRL: добавлен пропуск 152, удален 0; готово.
Решение: После различных подходов, не удалось определить точную причину этой проблемы. Внезапно пришла в голову одна идея, и это решило мою проблему.
Создал новый корневой центр сертификации из файла CA.pfx, следуя инструкциям ниже. Он успешно установился на сервере Ubuntu 16 без каких-либо предупреждений и успешно проверил мои клиентские запросы. https://www.itsupportmiami.com/how-to-convert-a-pfx-to-a-seperate-key-crt-file/
Спасибо всем вам, кто следил за моим вопросом и пытался ответить.