Проблема SSL разработки Worklight (невозможно найти цепочку сертификатов)

Я просматривал все ссылки, связанные с проблемой, с которой я столкнулся, и не мог понять / понять, что я делаю неправильно:

Описание:

Я пытаюсь настроить свой локальный сервер разработки WL для безопасного подключения к нашему бэкэнду.

наша команда PaaS предоставила мне наше хранилище ключей WL Enterprise, которое содержит все сертификаты, необходимые для подключения к бэкэнду. Хранилище ключей - .p12.

в worklight.properties:

#SSL certificate keystore location.
ssl.keystore.path=conf/ecommerce_bk_mobile.p12
#SSL certificate keystore type (jks or PKCS12)
ssl.keystore.type=PKCS12
#SSL certificate keystore password.
ssl.keystore.password=*****

также устанавливается псевдоним и пароль SSL:

banking.services.ssl.certificate.alias=bkdev1_wl
banking.services.ssl.certificate.password=******

Adapter.xml:

<connectionPolicy xsi:type="http:HTTPConnectionPolicyType">
            <protocol>https</protocol>
            <domain>mbcdev1mobile.com</domain>
            <port>PORT-NUM</port>   
            <sslCertificateAlias>${banking.services.ssl.certificate.alias}</sslCertificateAlias>
           <sslCertificatePassword>${banking.services.ssl.certificate.password}</sslCertificatePassword>
        </connectionPolicy>

Я подтвердил, что ключ p12 имеет нужный мне сертификат:

введите здесь описание изображения

Однако я получаю следующую ошибку:

Unable to find certificate chain with alias: 'bkdev1_wl'

(Конфигурация, упомянутая выше, соответствует нашему фактическому корпоративному серверу, но корпоративный сервер может подключаться, и я не через свой локальный)

1. Как включить ведение журнала SSL на сервере разработки WL?

(Я добавил <logging traceSpecification="*=fine: com.worklight.*=debug=enabled : com.ibm.ws.ssl.*=all=enabled"/>), но это не сработало.

2. Что мне не хватает?

3.Есть ли четкие инструкции по настройке?

Версия WL: 6.2.0.01.20150214-1613

Спасибо

ИЗМЕНИТЬ

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

После того, как я включил ведение журнала SSL, я обнаружил, что WL идет после своего хранилища по умолчанию, которое (key.js) находится по этому пути:

/Users/sam/Documents/workspace/WorklightServerConfig/servers/worklight/resources/security/key.jks

Это означает, что WL даже не читает свое собственное свойство, в котором я установил местоположение хранилища ключей:

ssl.keystore.path=conf/ecommerce_bk_mobile.p12

Я тоже сделал следующее: внутри моего runtime-web.xml, расположенного ниже:

/Users/sam/Documents/workspace/WorklightServerConfig/IPAS

Я заставил сервер забрать мой ключ:

<env-entry>
    <description>[OPTIONAL] SSL certificate keystore location. Default: conf/default.keystore.</description>
    <env-entry-name>ssl.keystore.path</env-entry-name>
    <env-entry-type>java.lang.String</env-entry-type>
    <env-entry-value>conf/ecommerce_bk_mobile.p12</env-entry-value>
</env-entry>

<env-entry>
    <description>[OPTIONAL] SSL certificate keystore type. Valid keystore types: jks, PKCS12. Default: jks.</description>
    <env-entry-name>ssl.keystore.type</env-entry-name>
    <env-entry-type>java.lang.String</env-entry-type>
    <env-entry-value>PKCS12</env-entry-value>
</env-entry>

<env-entry>
    <description>[OPTIONAL] SSL certificate keystore password.Default: worklight.</description>
    <env-entry-name>ssl.keystore.password</env-entry-name>
    <env-entry-type>java.lang.String</env-entry-type>
    <env-entry-value>********</env-entry-value>
</env-entry>

Я не уверен, нужно ли мне вносить какие-либо изменения в мой файл jvm.options, чтобы заставить WL идти после пути к хранилищу ключей, который я определяю в его свойстве:

Содержимое JVM:

-Dfile.encoding=UTF-8
-Duser.language=en
-Duser.country=US
-Djava.awt.headless=true
-Dwas.debug.mode=true
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=10777
-Dcom.ibm.websphere.ras.inject.at.transform=true
-Dcom.ibm.ws.jmx.connector.client.rest.readTimeout=180000
-Dibm.worklight.admin.db.type=DERBY
-Xmx1024m

-DwlDevEnv.enableCreateTables=true
-Djmx.remote.x.client.connection.check.period=0

-DwlSyncStart=false

person Sami    schedule 23.02.2016    source источник
comment
Чтобы включить трассировку SSL на сервере разработки, используйте ‹logging traceSpecification = * = info: com.worklight. * = All: SSL = all /›. Вы также можете добавить в файл jvm.options сервера разработки в отдельной строке строку -Djavax.net.debug = all.   -  person patbarron    schedule 23.02.2016
comment
У меня есть эти журналы: dropbox.com/sh/6p26xmzxbwACi1nKS/6p26xmzxbwUSi1nKS/6p26xmzxbwUSi1nKSA05   -  person Sami    schedule 23.02.2016
comment
Может быть, путь к сертификату неверен?   -  person Idan Adar    schedule 25.02.2016
comment
Вы имеете в виду сертификат внутри моего ключа p12? или сам ключ?   -  person Sami    schedule 25.02.2016
comment
Я смотрел на это еще немного, я не вижу ничего плохого в том, что вы делаете (кроме того, что я не могу придумать никакой причины, по которой вам пришлось бы что-либо изменять в каталоге IPAS), и я могу не воспроизводить конкретную ошибку, которую вы видите (и не иметь немедленного доступа к какой-либо серверной службе, которая требует взаимной аутентификации SSL, и я не уверен, что установка аутентификации сертификата на адаптер, который в ней не нуждается, на самом деле что-нибудь). Если вы являетесь клиентом IBM с поддержкой, было бы разумной идеей открыть PMR, чтобы группа поддержки могла подробно изучить проблему.   -  person patbarron    schedule 02.03.2016
comment
@patbarron, спасибо, что нашли время для этого. Да, я клиент IBM с поддержкой. Я попробую открыть PMR, чтобы получить помощь от службы поддержки.   -  person Sami    schedule 03.03.2016
comment
@HussamEddin, было ли открыто PMR по этой проблеме?   -  person Idan Adar    schedule 20.04.2016
comment
@IdanAdar, мы еще этого не сделали, поскольку мы обновляемся до MFP7.1 и испытываем нехватку ресурсов. пожалуйста, отложите это.   -  person Sami    schedule 20.04.2016
comment
@HussamEddin есть новости?   -  person Idan Adar    schedule 02.07.2016
comment
Нет новостей, попробовал на нашем МФУ, но по-прежнему получаю ту же ошибку.   -  person Sami    schedule 04.07.2016


Ответы (1)


Два вопроса:

  • Вы используете взаимную аутентификацию?
    Когда включена взаимная аутентификация, worklight проверяет подлинность серверной части путем проверки своего сертификата, а серверная часть также проверяет подлинность клиента (в данном случае адаптера worklight) путем проверки своего сертификата. Если вы не используете взаимную аутентификацию, вам не нужно устанавливать sslCertificateAlias ​​и sslCertificatePassword в политике подключения адаптера.
  • Если вам действительно нужна взаимная аутентификация, вы уверены, что ваш файл p12 правильный? Я подозреваю, что у вашего файла p12 могут быть проблемы.

Чтобы исключить возможность того, что с файлом p12 что-то пойдет не так, вы можете сделать это,

Создайте единый сертификат ЦС, объединив все сертификаты ЦС в своей цепочке доверия

Для этого получите все сертификаты CA, которые являются частью цепочки доверия вашего сертификата. Скопируйте каждый из них в файл, например cacerts.pem. Например, если у вас есть три сертификата CA в вашей цепочке доверия, вы можете объединить и создать один файл, содержащий их все, например cat ca1.crt ca2.crt ca3.crt >> cacerts.pem

Итак, теперь у вас есть один файл, в котором есть все сертификаты CA, которые являются частью цепочки доверия. Прежде чем продолжить, убедитесь, что у вас правильный вариант, выполнив эту команду openssl verify -verbose -CAfile cacerts.pem server.crt (замените server.crt именем файла сертификата). Вы должны увидеть server.crt: OK.

Создайте файл p12 с помощью ранее созданного сертификата ЦС

Теперь создайте файл p12, импортировав сертификат сервера, его закрытый ключ и файл сертификата ca, который мы создали ранее.

openssl pkcs12 -export -in server.crt -inkey serverprivate.key -chain -CAfile cacerts.pem -name "bkdev1_wl" -out ecommerce_bk_mobile.p12.

Он попросит вас ввести пароль закрытого ключа, за которым следует пароль экспорта, убедитесь, что все, что вы даете для пароля экспорта, вы используете в качестве значения ssl.keystore.password в worklight.properties.

Затем убедитесь, что вы ввели псевдоним, который мы использовали в предыдущей команде при определении свойств, которые вы упомянули, bank.services.ssl.certificate.alias = bkdev1_wl, а значение bank.services.ssl.certificate.password должно быть свойством закрытого ключа, а не файла p12

Попробуйте подключиться и проверьте. Если вы все еще получаете ошибку, поделитесь тем, что вы видите на стороне worklight и что вы видите на стороне внутреннего сервера.

person Amith Kashyap    schedule 07.07.2016