MobileFirst 7.1 Получите набор шифров без оборота на рабочем сервере — отлично работает на Dev

MobileFirst 7.1.0.00-20150807-0630 Java 1.7.0_80

У меня есть адаптер Java, который подключается к серверной службе с помощью REST. на macm.saas.ibmcloud.com:443. Все отлично работает с сервера разработки. Но когда я развертываю его на рабочем сервере (как локальном, так и в контейнере Bluemix), я получаю следующую ошибку, когда адаптер пытается подключиться к серверу:

javax.net.ssl.SSLHandshakeException: набор не подлежащих обсуждению шифров

Я бы подумал, что проблема связана с тем, как настроено хранилище ключей, но я не понимаю, почему на рабочем сервере оно отличается от сервера разработки.

Запуск openssl s_client -connect macm.saas.ibmcloud.com:443 дает мне:

> CONNECTED(00000003)
depth=2 /C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert Global Root CA
verify error:num=19:self signed certificate in certificate chain
verify return:0
---
Certificate chain
 0 s:/C=US/ST=New York/L=Armonk/O=International Business Machines Corporation/CN=macm.saas.ibmcloud.com
   i:/C=US/O=DigiCert Inc/CN=DigiCert SHA2 Secure Server CA
 1 s:/C=US/O=DigiCert Inc/CN=DigiCert SHA2 Secure Server CA
   i:/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert Global Root CA
 2 s:/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert Global Root CA
   i:/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert Global Root CA
---
Server certificate
-----BEGIN CERTIFICATE-----
MIIGWzCCBUOgAwIBAgIQATFWvLyURadTLNafH0mf0zANBgkqhkiG9w0BAQsFADBN
MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMScwJQYDVQQDEx5E
aWdpQ2VydCBTSEEyIFNlY3VyZSBTZXJ2ZXIgQ0EwHhcNMTUxMDA3MDAwMDAwWhcN
MTgxMDExMTIwMDAwWjCBiDELMAkGA1UEBhMCVVMxETAPBgNVBAgTCE5ldyBZb3Jr
MQ8wDQYDVQQHEwZBcm1vbmsxNDAyBgNVBAoTK0ludGVybmF0aW9uYWwgQnVzaW5l
c3MgTWFjaGluZXMgQ29ycG9yYXRpb24xHzAdBgNVBAMTFm1hY20uc2Fhcy5pYm1j
bG91ZC5jb20wggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCrxABCsOK4
8j1lshwGxBWJSVXSR1sM4PvyLo0v2p7LMVmsX81jWV67P6+NxvnfQFRr4WqpUbxZ
SPtx37ykO9Non4dFry6USvt22RwA31yveSlpzKaicdZqK8zr5DiQs5SSGvt+6tHb
KgNjwPRWjphaT6C3V2s1yUfwPSQvcrnv9jIgx3dvpFgfJ4SyJ8cBxyGZnp1MsVZX
4hgNgLeFRXdoq6708leLPI9x/f+uQvzUqPZqPOIz3piUzncCSQVE9WkGAQkU2BCe
9xR9hFuIcPgHoiEfHozHPOcg/fKChWwSb3FBJIVOXvoVSPADnzNxqSOA84B3PYNP
T9iJ7Mu5qSOMZLo+JBknKQXUdTxh/yUw0E2QikkgE1DBOSjnVPTNgqveR/CHr67N
1S/pvXVpYUAxmfxt2XFc9Qqo7cMJDTBvoR/93tkIUOevyAhcLbkS8QH+Yn/u7WWp
1h13OtYudtnPDUAElRrf5nty2j01u6uH7jF/ZkMeZbNjjV56Rrwh3uWwe05fgRGV
MeTEc4ccq9b/BUb5K0BCI0AFd2B2ZYOqOnfnvKuQybIrUNpHf+A5su6mzM14FdQY
lJ6vXRa7rzKT4/UH3xiYf7qzpi3h3iBFJ9EcEk6F1W+9I/X6bfbXqjJU8QHGWpYR
ceMXdKLZWuLxQC3+g7pqep5bGjxGye1LGwIDAQABo4IB+TCCAfUwHwYDVR0jBBgw
FoAUD4BhHIIxYdUvKOeNRji0LOHG2eIwHQYDVR0OBBYEFE8uz2MkSduo1sHr/F43
PRBkscnPMD0GA1UdEQQ2MDSCFm1hY20uc2Fhcy5pYm1jbG91ZC5jb22CGnd3dy5t
YWNtLnNhYXMuaWJtY2xvdWQuY29tMA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAU
BggrBgEFBQcDAQYIKwYBBQUHAwIwawYDVR0fBGQwYjAvoC2gK4YpaHR0cDovL2Ny
bDMuZGlnaWNlcnQuY29tL3NzY2Etc2hhMi1nNC5jcmwwL6AtoCuGKWh0dHA6Ly9j
cmw0LmRpZ2ljZXJ0LmNvbS9zc2NhLXNoYTItZzQuY3JsMEwGA1UdIARFMEMwNwYJ
YIZIAYb9bAEBMCowKAYIKwYBBQUHAgEWHGh0dHBzOi8vd3d3LmRpZ2ljZXJ0LmNv
bS9DUFMwCAYGZ4EMAQICMHwGCCsGAQUFBwEBBHAwbjAkBggrBgEFBQcwAYYYaHR0
cDovL29jc3AuZGlnaWNlcnQuY29tMEYGCCsGAQUFBzAChjpodHRwOi8vY2FjZXJ0
cy5kaWdpY2VydC5jb20vRGlnaUNlcnRTSEEyU2VjdXJlU2VydmVyQ0EuY3J0MAwG
A1UdEwEB/wQCMAAwDQYJKoZIhvcNAQELBQADggEBAIWJCItCBT0mE53OjwMdJsq0
nGgrMfb7LbF+5exdtqqaKyq8Zuke3yEbFv4nRg3LUcmh8HMLn8gSDTCnVRH0BCLx
OBmxgRVRm7eXTVSiE8tbdMOHbUEdu96MUSppSCW8CfLMAr3kPnyMWlCPgg215fn2
72CM6m3n9AKEJXcwFRmhriNiSsVeKlTqW+5efqHUig8QOmzqJTo03M2gH/jRY1Au
Dr2nPzyVYxoztBWtlC1ECfSCUbiF0URYXCJbI+UbyQCB8C+k+ikn5H/95Ingvg2v
pmLquKDFH9iH022wA/UaVeQ+AqzXcEQZgfEq+U4ZQNIRJ+ae5KDFwQS+E7OpmR4=
-----END CERTIFICATE-----
subject=/C=US/ST=New York/L=Armonk/O=International Business Machines Corporation/CN=macm.saas.ibmcloud.com
issuer=/C=US/O=DigiCert Inc/CN=DigiCert SHA2 Secure Server CA
---
No client certificate CA names sent
---
SSL handshake has read 3919 bytes and written 712 bytes
---
New, TLSv1/SSLv3, Cipher is AES128-SHA
Server public key is 4096 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
SSL-Session:
    Protocol  : TLSv1
    Cipher    : AES128-SHA
    Session-ID: 21D5000057760A8FE4AB39A6388838B6F38A523A58585858079454560000F4B0
    Session-ID-ctx: 
    Master-Key: 82C926729FA56D9FD83E357C3B6FD372D587D73E8FC28E3721BE053A4CD6CDA45949AD4F03EF2759DEE882B1FFEF257E
    Key-Arg   : None
    Start Time: 1448383495
    Timeout   : 300 (sec)
    Verify return code: 0 (ok)
---

person DSchultz_mo    schedule 24.11.2015    source источник
comment
Что вы подразумеваете под сервером разработки и производственным сервером? Это просто разные серверные среды, которые у вас есть? Вы имеете в виду сервер разработки, используемый MFP CLI/MFP Studio?   -  person Andrew Ferrier    schedule 24.11.2015
comment
Вы проверили версии JDK, используемые всеми тремя серверами? Обычно проверка SSL — это концепция уровня JDK.   -  person Andrew Ferrier    schedule 24.11.2015
comment
Да, под сервером разработки я подразумеваю сервер разработки MobileFirst, в моем случае поставляемый вместе со Studio, а под рабочим сервером я имею в виду сервер MobileFirst Platform Server, установленный в экземпляре Liberty. JDK, используемый сервером разработки, — Oracle 1.7.0_80. Контейнеры Bluemix работают под управлением IBM jre 1.7-3.10. Я также пробовал производственный сервер с Oracle jdk 1.8.0 (jdk8u51-b15).   -  person DSchultz_mo    schedule 24.11.2015
comment
Хорошо, спасибо за уточнение. Я склонен не использовать эту терминологию, она скорее сбивает с толку, чем нет, поскольку в большинстве реальных сценариев есть сервер разработки, который на самом деле является полной установкой рабочего сервера.   -  person Andrew Ferrier    schedule 24.11.2015
comment
Прочитав ошибку более внимательно, я бы предположил, что часть проблемы здесь заключается в используемом самозаверяющем сертификате: verify error:num=19:self signed certificate in certificate chain. Обычно это требует, чтобы вы каким-то образом обходили проверку SSL-сертификата, хотя, по общему признанию, я не могу объяснить, почему это будет вести себя по-другому на сервере разработки MFP.   -  person Andrew Ferrier    schedule 24.11.2015
comment
Я думаю, что сообщение о самозаверяющем сертификате - отвлекающий маневр - см.: stackoverflow.com/questions/4103472/. Ошибка, упомянутая изначально в вопросе, указывает на то, что клиент и сервер не могут договориться об использовании шифра.   -  person patbarron    schedule 24.11.2015
comment
Моим следующим шагом здесь было бы добавить (на сервере Liberty) спецификацию трассировки для SSL=all:SSLChannel=all и добавить -Djavax.net.debug=ssl в файл jvm.options, перезапустить сервер, а затем посмотреть в журналах, чтобы увидеть, что происходит во время согласования SSL.   -  person patbarron    schedule 24.11.2015
comment
@DSchultz_mo, есть прогресс?   -  person Idan Adar    schedule 08.01.2016
comment
В конце концов я переписал код подключения Java, используя другой набор библиотек, которые работали для приложения, написанного другой командой. Я так и не определил, что именно в моем коде не работало, но, похоже, это было связано с тем, как я пытался его реализовать.   -  person DSchultz_mo    schedule 12.01.2016
comment
Можете ли вы предоставить вышеизложенное в качестве ответа?   -  person Idan Adar    schedule 19.02.2016
comment
Ну, это не очень ответ, но я думаю, что это что-то   -  person DSchultz_mo    schedule 20.02.2016


Ответы (1)


В конце концов я переписал код подключения Java, используя другой набор библиотек, которые работали для приложения, написанного другой командой. Я так и не определил, что именно в моем коде не работало, но, похоже, это было связано с тем, как я пытался его реализовать.

person DSchultz_mo    schedule 20.02.2016