2016-07-27 22 views
5

ÖNEMLİ 18.3'ten 18.3.4'e geçişin bu soruna neden olduğu ve 18.3'e geçişin kaldırıldığı kanıtlandı.Bağlantı kapatıldı - garip hata, erlang VM'den belirli ana bilgisayara bağlanamıyor

Her şey bir an kadar çalıştı. Sonra sadece çalışmak için durdu. ile yanıt

def work do 
    HTTPotion.get("https://ssl-third-party.com", 
    ibrowse: [ 
     is_ssl: true, 
     ssl_options: [ 
     certfile: Path.join(File.cwd!, "cert_dev.pem"), 
     password: "pass" |> to_charlist, 
     ] 
     ]) 
    end 

: Ben iksir sarma olmadan birkaç erlang kütüphanelerini denedik

%HTTPotion.ErrorResponse{message: "closed"} 

(Hackney'de + ibrowse) IEX kabuğundan:

iex(5)> url = <<"https://ssl-third-party.com">> 
iex(6)> headers = [] 
[] 
iex(8)> payload = <<>> 
"" 
iex(9)> options=[:insecure] 
[:insecure] 
iex(10)> :hackney.request(m, url, headers, payload, options) 
{:error, :closed} 
### 
iex(1)> a = "https://ssl-third-party.com" |> to_char_list 
iex(2)> :ibrowse.send_req(a, [], :get) 
{:error, {:conn_failed, {:error, :closed}}} 

diğer ana bilgisayarlara bağlanabilir iken

.

Uygulamalar Aynı oturumdaki isteği yapabilir, başlatılır.

Bağlantı basit bukle isteği ile çalışır.

Erlang test - 18.3.4/19.0.2

OS X El Capitan.

20:25:01.535 [error] Failed updating session: 
    ProfileName: :httpc_mix 
    SessionId: {{'repo.hex.pm', 443}, #PID<0.163.0>} 
    Pos:   7 
    Value:  0 
when 
    Session (db) info: :undefined 
    Session (db):  {:session, {{'repo.hex.pm', 443}, #PID<0.163.0>}, false, :https, 
{:sslsocket, {:gen_tcp, #Port<0.5536>, :tls_connection, :undefined}, 
    #PID<0.164.0>}, {:essl, []}, 1, :keep_alive, true} 
    Session (record): {:EXIT, 
{:badarg, 
    [{:ets, :lookup, 
    [:httpc_mix__session_db, {{'repo.hex.pm', 443}, #PID<0.163.0>}], []}, 
    {:httpc_manager, :lookup_session, 2, [file: 'httpc_manager.erl', line: 189]}, 
    {:httpc_handler, :update_session, 4, 
    [file: 'httpc_handler.erl', line: 1909]}, 
    {:httpc_handler, :handle_empty_queue, 4, 
    [file: 'httpc_handler.erl', line: 1368]}, 
    {:httpc_handler, :handle_info, 2, [file: 'httpc_handler.erl', line: 471]}, 
    {:gen_server, :try_dispatch, 4, [file: 'gen_server.erl', line: 601]}, 
    {:gen_server, :handle_msg, 5, [file: 'gen_server.erl', line: 667]}, 
    {:proc_lib, :init_p_do_apply, 3, [file: 'proc_lib.erl', line: 247]}]}} 
    T: :error 
    E: :badarg 

20:25:01.536 [error] Failed updating session: 
    ProfileName: :httpc_mix 
    SessionId: {{'repo.hex.pm', 443}, #PID<0.163.0>} 
    Pos:   9 
    Value:  true 
when 
    Session (db) info: :undefined 
    Session (db):  {:session, {{'repo.hex.pm', 443}, #PID<0.163.0>}, false, :https, 
{:sslsocket, {:gen_tcp, #Port<0.5536>, :tls_connection, :undefined}, 
    #PID<0.164.0>}, {:essl, []}, 1, :keep_alive, false} 
    Session (record): {:EXIT, 
{:badarg, 
    [{:ets, :lookup, 
    [:httpc_mix__session_db, {{'repo.hex.pm', 443}, #PID<0.163.0>}], []}, 
    {:httpc_manager, :lookup_session, 2, [file: 'httpc_manager.erl', line: 189]}, 
    {:httpc_handler, :update_session, 4, 
    [file: 'httpc_handler.erl', line: 1909]}, 
    {:httpc_handler, :maybe_make_session_available, 2, 
    [file: 'httpc_handler.erl', line: 1516]}, 
    {:httpc_handler, :answer_request, 3, 
    [file: 'httpc_handler.erl', line: 1507]}, 
    {:httpc_handler, :terminate, 2, [file: 'httpc_handler.erl', line: 759]}, 
    {:gen_server, :try_terminate, 3, [file: 'gen_server.erl', line: 629]}, 
    {:gen_server, :terminate, 7, [file: 'gen_server.erl', line: 795]}]}} 
    T: :error 
    E: :badarg 

20:25:01.541 [error] GenServer #PID<0.163.0> terminating 
** (stop) {:failed_updating_session, [profile: :httpc_mix, session_id: {{'repo.hex.pm', 443}, #PID<0.163.0>}, pos: 9, value: true, etype: :error, error: :badarg, stacktrace: [{:ets, :update_element, [:httpc_mix__session_db, {{'repo.hex.pm', 443}, #PID<0.163.0>}, {9, true}], []}, {:httpc_manager, :update_session, 4, [file: 'httpc_manager.erl', line: 210]}, {:httpc_handler, :update_session, 4, [file: 'httpc_handler.erl', line: 1887]}, {:httpc_handler, :maybe_make_session_available, 2, [file: 'httpc_handler.erl', line: 1516]}, {:httpc_handler, :answer_request, 3, [file: 'httpc_handler.erl', line: 1507]}, {:httpc_handler, :terminate, 2, [file: 'httpc_handler.erl', line: 759]}, {:gen_server, :try_terminate, 3, [file: 'gen_server.erl', line: 629]}, {:gen_server, :terminate, 7, [file: 'gen_server.erl', line: 795]}]]} 
    (inets) httpc_handler.erl:1911: :httpc_handler.update_session/4 
    (inets) httpc_handler.erl:1516: :httpc_handler.maybe_make_session_available/2 
    (inets) httpc_handler.erl:1507: :httpc_handler.answer_request/3 
    (inets) httpc_handler.erl:759: :httpc_handler.terminate/2 
    (stdlib) gen_server.erl:629: :gen_server.try_terminate/3 
    (stdlib) gen_server.erl:795: :gen_server.terminate/7 
    (stdlib) proc_lib.erl:247: :proc_lib.init_p_do_apply/3 
Last message: {:ssl, {:sslsocket, {:gen_tcp, #Port<0.5536>, :tls_connection, :undefined}, #PID<0.164.0>}, "HTTP/1.1 200 OK\r\nx-amz-id-2: FGpS/bqXLPTNYV4oMTTIvqekRgbExlvO83ZoTR6deiB02Hsm4uqtctPYvP5lqryk/ZYK12/DCuM=\r\nx-amz-request-id: 346087C27C829E83\r\nx-amz-replication-status: COMPLETED\r\nCache-Control: public, max-age=604800\r\nx-amz-meta-surrogate-key: installs\r\nx-amz-version-id: IzHO194FIe8NSS4oev.5dtp2BgBltonw\r\nLast-Modified: Wed, 29 Jun 2016 00:00:27 GMT\r\nETag: \"e8a325a6ca33736d137e5b6f57fe4259\"\r\nContent-Type: binary/octet-stream\r\nServer: AmazonS3\r\nVia: 1.1 varnish\r\nFastly-Debug-Digest: 864530c58fa2f5e6f7b455ba1b8a8fd668c94f688c98b6cdc85319515ff6f6b1\r\nContent-Length: 350\r\nAccept-Ranges: bytes\r\nDate: Fri, 29 Jul 2016 17:25:01 GMT\r\nVia: 1.1 varnish\r\nAge: 235183\r\nConnection: keep-alive\r\nX-Served-By: cache-iad2144-IAD, cache-bma7023-BMA\r\nX-Cache: HIT, HIT\r\nX-Cache-Hits: 1, 1\r\nX-Timer: S1469813101.087231,VS0,VE0\r\n\r\njM3an/yCuclmNcCX0wzS9QhCHsJl+Xf6/FS5bAaQ5O9AAFMlkCnJt4vW08LNU6eL\nkfOsK+mVZ1n8Dk/+I8ThzpO1NZlH3UNYt/8OgK+ZfhFlrT0D1UZ/QEIR1/8TIC4v\nC25ibCcvxTK9zG93mAdrLLCLA6/o4NXeaMV6DOOZ31ZcMWjpCNjDLU1B20UsVSBN\nKzsLkI4QfgrtSt5Iquhs0wovJlpz/lZh7jEf58BTMWa/Z9Yl2EmEVsyO8Fie5RiF\np+KTkDILxY/QkKwSPE+0AcS5BR3dpJSsp8m5RVLUb/44b0KUKko+uPBmN8g6TSYP\nGSIG5Ay9BjXE0uAi2RTFEw==\n"} 
State: {:state, {:request, #Reference<0.0.3.498>, #PID<0.70.0>, 0, :https, {'repo.hex.pm', 443}, '/installs/rebar3-1.x.csv.signed', [], :get, {:http_request_h, :undefined, 'keep-alive', :undefined, :undefined, :undefined, :undefined, :undefined, :undefined, :undefined, :undefined, :undefined, :undefined, :undefined, :undefined, :undefined, :undefined, 'repo.hex.pm', :undefined, :undefined, :undefined, :undefined, :undefined, :undefined, :undefined, :undefined, :undefined, [], 'Mix/1.3.2', :undefined, :undefined, :undefined, '0', :undefined, :undefined, :undefined, :undefined, :undefined, ...}, {[], []}, {:http_options, 'HTTP/1.1', :infinity, true, {:essl, []}, :undefined, true, :infinity, false}, 'https://repo.hex.pm/installs/rebar3-1.x.csv.signed', [], :none, [], 1469813101026, :undefined, :undefined, false}, {:session, {{'repo.hex.pm', 443}, #PID<0.163.0>}, false, :https, {:sslsocket, {:gen_tcp, #Port<0.5536>, :tls_connection, :undefined}, #PID<0.164.0>}, {:essl, []}, 1, :keep_alive, false}, :undefined, :undefined, :undefined, {:httpc_response, :parse, [:nolimit, true]}, {[], []}, {[], []}, :new, [], :nolimit, :nolimit, {:options, {:undefined, []}, {:undefined, []}, 0, 2, 5, 120000, 2, :disabled, false, :inet, :default, :default, []}, {:timers, [], :undefined}, :httpc_mix, :inactive} 

UPD2

Muhtemelen OSX veya> 18.3 OTP hata olmalıdır:

UPD1 da tüm erlang ilgili paketleri yeniden sırasında bu raporu kaydetti sadece üzerine yapılan diğer ubuntu bilgisayar Erlang sürüm 18.3 ve iyi çalıştı, bu bir döner (Erlang kabuk):

httpc:request(get, {"https://ssl-third-party.com", []}, [], []). 
{error,{failed_connect,[{to_address,{"https://ssl-third-party.com", 
            443}}, 
         {inet,[inet],closed}]}} 
+0

Aynı şeyi "curl" ile deneyebilir misiniz? Bağlantı kapatılıyormuş gibi görünüyor, belki sunucu kapalı mı? –

+0

@ PawełObrok, evet, curl ile çalışır. Sistemimde bir noktaya kadar gayet iyi çalıştı ve sonra aniden durdu –

+0

18.3.4 test edildi ama 18.3.4.2 değil mi? Bu ikisi arasında SSL ile ilgili bazı değişiklikler var: "SSL sunucu için TLS/SSL protokolü sürüm seçimi, özellikle desteklenen sürümlerin listesinin boşlukları olması durumunda RFC 5246 Ek E.1'i takip edecek şekilde düzeltildi. En yüksek protokol sürümü, istemcinin desteklediğinden daha yüksek değil destekler. " –

cevap

3

Son zamanlarda this erlang-questions posta iletisinde açıklanan aynı soruna çalıştığınız gibi görünüyor. Görünüşe göre, SSL uygulaması, bu soruna yol açabilecek 18.3 yama sürümleri arasında şifre paketi yapılandırmasını değiştirdi. Ben çözüm başvurulan posta parçacığı olarak

SSL uygulaması için

{versions, ['tlsv1.2']} 

ayarı yani TLS 1.2, kullanmak için SSL yapılandırmak oldu.

+0

bu benim için işe yaramaz ... Yanlış seçenek hatası getirir. –

+0

'{{{: badmatch,% HTTPotion.ErrorResponse {iletisi: "{: Seçenekler arasında { 'TLSv1.2', {: versiyonları, [ 'TLSv1.2']}}}"}}' Birinin beni yardımcı olur 'ibrowse: Bu hasta benim için Erlang aşağıdaki eserlerini ibrowse kullanma cevabı –

+1

onaylaması reslove send_req ("https://aws.amazon.com", [], [], [{is_ssl, gerçek}, {ssl_options olsun , [{sürümleri, ['tlsv1.2']}]}]).' ' ssl_options' anahtarını not edin. – johlo

İlgili konular