wso2 API Manager | Как связать клиент-сертификат с конечной точкой бэкенда / цели

У нас есть бэкэнд API, который должен быть представлен клиентским сертификатом при доступе к API. мы добавили клиентский сертификат в repository / resources / security / client-truststore.jks и вместе со всеми корневым центром сертификации и промежуточными сертификатами. Перезапущенный сервер.

Я полагаю, что Wso2 теперь может отправлять вызов в бэкэнд-API и возвращается с кодом состояния 403. Он возвращается с 403, потому что бэкэнд API не получил сертификат клиента с запросом...

{
"timestamp": "2017-03-14T21:33:36.523Z",
 "status": 403,
  "error": "Forbidden",
  "message": "Access Denied",
  "path": "/registrations"
}

когда мы выполняем бэкэнд напрямую с сервера с сертификатом, он работает нормально:

curl -k --cert /tmp/client.pem:changeit -X POST   https://10.7.64.36:8443/registrations -H "Content-Type: application/json" -d "{\"primaryAccountNumber\": \"12122121212\"}"

мы получаем верный ответ:

{"registration_id":null,"transaction_id":null,"authentication_code":null,"qr_code_image":null,"registered":null,"status":null,"score":null,"reason_codes":[]}

Итак, как curl отправляет --cert в запросе, как это сделать в API-интерфейсе wso2, посоветуйте, пожалуйста, как связать сертификат клиента с URL-адресом бэкэнда, чтобы он был отправлен wi2-api-менеджером, и сервер сможет обработать его. запрос.

благодарю вас.

1 ответ

Решение

Для взаимного ssl вы можете сослаться на следующий блог.

http://ishara-cooray.blogspot.com/2016/07/how-to-secure-your-backend-services-and.html

Вот важная часть из сообщения в блоге.

Настройте API Manager для включения динамических профилей ssl

Чтобы настроить APIM для динамических профилей SSL для транспортного отправителя HHTPS, необходимо создать новый файл XML /repository/deployment/server/multi_ssl_profiles.xml (этот путь можно настроить) и скопировать в него приведенную ниже конфигурацию. Это настроит клиентское хранилище доверенных сертификатов.jks as Trust Store для всех подключений к 10.100.5.130:9443

<parameter name="customSSLProfiles">
 <profile>
  <servers>10.100.5.130:9443</servers>
  <TrustStore>
          <Location>repository/resources/security/client-truststore.jks
   </Location>
   <Type>JKS</Type>
   <Password>wso2carbon</Password>
  </TrustStore>
</profile>
</parameter>

Чтобы включить динамическую загрузку этой конфигурации, добавьте следующие конфигурации в конфигурацию транспортного отправителя (PassThroughHttpSSLSender) из API Manager ({AM_HOME}/repository/conf/axis2.xml). Установите указанный выше путь к файлу в качестве параметра "filePath".

<parameter name="dynamicSSLProfilesConfig">
  <filePath>repository/deployment/server/multi_ssl_profiles.xml</filePath>
  <fileReadInterval>3600000</fileReadInterval>  
</parameter>
<parameter name="HostnameVerifier">AllowAll</parameter>

Теперь и серверная служба, и ESB настроены на использование хранилищ ключей по умолчанию, а API Manager настроен на загрузку динамических профилей SSL. Перезапустите API Manager. В консоли отобразится сообщение, подтверждающее, что динамические конфигурации загружены.

Конфигурация ClientConnFactoryBuilder customSSLProfiles загружается из пути:

Другие вопросы по тегам