#windows #powershell #curl #command-line
Вопрос:
У меня есть командный сценарий для вызова API .net core, размещенного в IIS, с помощью команды curl. Всякий раз, когда я вызываю API с помощью curl, он всегда возвращается HTTP Error 403.16 - Forbidden (Your client certificate is either not trusted or is invalid.)
. Но когда я вызываю тот же API с помощью Postman, он возвращает ответ.
Ниже приведена команда curl:
curl --request GET "https://my.server.com/api/employees"
Я попробовал --insecure
игнорировать любые проблемы с сертификатами, но это не сработало. С сертификатом SSL и без него он отлично работает с почтальоном. Но из команды curl даже без SSL-сертификата это не работает.
Обновление: Вот полная команда после добавления сертификатов. Я выполняю эту команду в командной строке
curl --verbose --url https://my.server.com/api/employees --request POST --header @headers.txt --data @request.json --output response.json --cert client.pem:Password1 --key key.pem
Комментарии:
1. Похоже, веб-api требует сертификата клиента. Используйте либо
-Certificate
или-CertificateThumbprint
для предоставления сертификата клиента, либо разрешите команде выбрать правильный сертификат из вашего личного хранилища сертификатов. Сервер должен доверять выбранному вами сертификату клиента, но если Почтальон работает, это так.2. @Hazrelle Я предоставил отпечаток пальца сертификата в заголовке, но опять же он выдает ту же ошибку. Тогда я не в состоянии понять, как это работает с Почтальоном. Не могли бы вы, пожалуйста, предоставить какой-либо способ передачи сертификата клиента в запросе?
3. Обычно это происходит с одним из двух уже упомянутых параметров. Я бы проверил загрузку сертификата с его закрытым ключом непосредственно из файла и использовал
-Certificate
для тестирования. Также проверьте настройки вашего почтальона / Сертификаты / Сертификаты клиента.4. если вы работаете
curl
в PoSh 5.1, не удаляя идиотский псевдоним по умолчанию … вы действительно побежитеInvoke-WebRequest
. если вы хотите запустить util, вам нужно использоватьcurl.exe
.5. Кроме того, если он работает в Postman, но не в Powershell, может быть интересно просмотреть все заголовки запроса в вашем запросе Postman. Вы могли бы настроить свой запрос немного по-другому?