Почему я получаю ошибку с моим кодом в erlang 21, но не в erlang 20? - PullRequest
0 голосов
/ 04 октября 2018

Когда я делаю следующее в Erlang 21, я получаю ошибку.

inets:start(),
ssl:start(),
httpc:request(post,
             {"https://sandbox.itunes.apple.com/verifyReceipt", [], "application/json", []},
             [], []).

Ошибка:

=INFO REPORT==== 3-Oct-2018::19:32:47.728491 ===
TLS client: In state hello received SERVER ALERT: Fatal - Handshake Failure

{error,{failed_connect,[{to_address,{"sandbox.itunes.apple.com",443}},
                        {inet,[inet],{tls_alert,"handshake failure"}}]}}

Когда я делаю то же самое в Erlang 20, это работаетпросто отлично.

Может кто-нибудь подсказать мне, что может быть не так?

1 Ответ

0 голосов
/ 04 октября 2018

Провел некоторое исследование и обнаружил, что из-за OTP 21 Highlights

Безопасность: «небезопасные» шифры удалены по умолчанию в SSL и SSH.

Вам необходимо настроить SSL вручную (включить шифры)

EnabledCiphers = ssl:cipher_suites(all, 'tlsv1.2'),
Options = [{ciphers, EnabledCiphers}],

httpc:request(post,{"https://sandbox.itunes.apple.com/verifyReceipt",
[],"application/json", []}, [{ssl,Options}], []).
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...