Чтобы включить взаимную аутентификацию SSL (двусторонний SSL) в WSO2 EI 6.X.X (Docker)

Существует требование, согласно которому клиентское приложение будет принимать только аутентификацию на основе сертификата, я считаю, что этого можно достичь, включив взаимную аутентификацию SSL в WSO2 EI.

Этот вышеприведенный сценарий применим как для входящего (Client APP --> WSO2 EI), так и для исходящего потока (WSO2 EI --> Client APP).

Шаги, выполняемые в локальной системе для целей тестирования:

  • Создание хранилища ключей и самоподписанного сертификата:

C:\Program Files\Java\jdk1.8.0_291\bin>keytool -genkey -keyalg RSA -alias eitest -keystore "C:\path_eiserver\repository\resources\security\eitest.jks"

  • Экспорт сертификата

C:\Program Files\Java\jdk1.8.0_291\bin>keytool -export -alias eitest -file "C:\path_eiserver\repository\resources\security\eitest_public_cert.cer" -keystore "C:\path_eiserver\\repository\resources\security\eitest.jks"

Сообщение о выполнении каждого шага, упомянутого выше, я получил ниже WARNING.

Warning:
The JKS keystore uses a proprietary format. It is recommended to migrate to PKCS12 which is an industry standard format using "keytool -importkeystore -srckeystore C:\ei_pathserver\repository\resources\security\eitest.jks -destkeystore C:\ei_pathserver\repository\resources\security\eitest.jks -deststoretype pkcs12".

Несмотря на то, что получилось выше WARNING необходимые файлы сгенерированы

Могу ли я игнорировать приведенное выше ПРЕДУПРЕЖДЕНИЕ? если YES какой следующий шаг, чтобы сделать WSO2 EI REST API защищенным с помощью взаимной аутентификации? если NO могу ли я узнать дальнейшие шаги, которые нужно предпринять?

Использованная литература:

Реф ссылка 1

Реф ссылка 2

ссылка на ютуб

Могу ли я узнать полные шаги для достижения этой взаимной аутентификации в WSO2 EI?

В ссылках, которыми вы поделились, отсутствуют какие-либо шаги? Вы получаете какие-либо ошибки? что ты уже испробовал?

ycr 09.12.2022 20:31

Привет @ycr, спасибо за ваше время, я просто включил то, что пробовал сам. Пожалуйста, проверьте вопрос еще раз

Justin 10.12.2022 02:45
Как включить TLS в gRPC-клиенте и сервере : 2
Как включить TLS в gRPC-клиенте и сервере : 2
Здравствуйте! 🙏🏻 Надеюсь, у вас все хорошо и добро пожаловать в мой блог.
Обновление драйверов Microsoft ODBC (с 17 до 18) для PHP
Обновление драйверов Microsoft ODBC (с 17 до 18) для PHP
Все знают, что PHP v7.4 потерял поддержку, и наши недавние старые приложения должны обновиться до PHP v8.x. ...
0
2
75
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вам не нужно создавать новые хранилища ключей, чтобы включить MTLS. MTLS просто требует, чтобы вы импортировали сертификаты, которые необходимо проверить.

Включение MTLS для подключения к Client EI

Чтобы включить MTLS для соединения Client -> EI, выполните следующие действия.

  1. Импортируйте общедоступный сертификат клиентов в файл client-trustore.jks WSO2.
  2. Затем в axis2.xml под разделом <transportReceiver name = "https" class = "org.apache.synapse.transport.passthru.PassThroughHttpSSLListener"> добавьте следующий параметр.
<parameter name = "SSLVerifyClient">require</parameter>

Примечание. Если вы добавите require, все соединения, поступающие в WSO2, потребуют проверки MTLS, если вы хотите сделать проверку MTLS необязательной, вы можете добавить optional вместо require. Если установлено значение optional, только если Клиент отправит свой сертификат, будет выполнена проверка MTLS.

Включение MTLS для подключения EI и Backend

Чтобы включить MTLS для соединения EI -> BE, выполните следующие действия.

Вы можете либо создать отдельное хранилище ключей для соединения. Или вы можете просто указать на существующее хранилище ключей и Trustore.

  1. Сначала импортируйте общедоступный сертификат BE в используемый вами Trustore.
  2. Экспортируйте общедоступный сертификат, используемый в EI, и импортируйте его в BE Trustore.
  3. Теперь вы можете включить динамические профили SSL. Откройте axis2.xml и добавьте следующее в раздел <transportSender name = "https" class = "org.apache.synapse.transport.passthru.PassThroughHttpSSLSender">.
<parameter name = "dynamicSSLProfilesConfig">
 <filePath>repository/conf/sslprofiles/sslprofiles.xml</filePath>
 <fileReadInterval>3600000</fileReadInterval>  
</parameter>

затем создайте файл в repository/conf/sslprofiles/sslprofiles.xml и добавьте следующий контент.

<parameter name = "customSSLProfiles">
 <profile>
  <servers>your_server_address(e.g: something.test.com)</servers>
  <KeyStore>
    <Location>repository/resources/security/yourks.jks</Location>
    <Type>JKS</Type>
    <Password>123456</Password>
    <KeyPassword>123456</KeyPassword>
   </KeyStore>
  <TrustStore>
    <Location>repository/resources /security/yourtruststore.jks</Location>
    <Type>JKS</Type>
   <Password>123456</Password>
  </TrustStore>
</profile>
</parameter>

При указанной выше конфигурации для подключений к something.test.com будет применяться MTLS.

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

Похожие вопросы