Существует требование, согласно которому клиентское приложение будет принимать только аутентификацию на основе сертификата, я считаю, что этого можно достичь, включив взаимную аутентификацию 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
могу ли я узнать дальнейшие шаги, которые нужно предпринять?
Использованная литература:
Могу ли я узнать полные шаги для достижения этой взаимной аутентификации в WSO2 EI?
Привет @ycr, спасибо за ваше время, я просто включил то, что пробовал сам. Пожалуйста, проверьте вопрос еще раз
Вам не нужно создавать новые хранилища ключей, чтобы включить MTLS. MTLS просто требует, чтобы вы импортировали сертификаты, которые необходимо проверить.
Включение MTLS для подключения к Client EI
Чтобы включить MTLS для соединения Client -> EI
, выполните следующие действия.
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.
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.
В ссылках, которыми вы поделились, отсутствуют какие-либо шаги? Вы получаете какие-либо ошибки? что ты уже испробовал?