Requests: Permintaan tidak berfungsi di wadah Docker

Dibuat pada 31 Mar 2017  ·  37Komentar  ·  Sumber: psf/requests

Hai

Itulah cerita lama tentang SSL yang tidak berfungsi dengan permintaan, tetapi selangkah lebih maju.... Wadah Docker

Saya memiliki aplikasi yang menggunakan permintaan, dan berfungsi dengan baik di mesin lokal saya, tetapi, ketika menerapkannya dalam wadah Docker, saya mengalami kesalahan dengan modul permintaan (kesalahan SSL)

[2017-03-31 11:32:29,863] ERROR dalam aplikasi: Pengecualian pada /send [POST]
Traceback (panggilan terakhir terakhir):
File "/usr/local/lib/python2.7/dist-packages/flask/app.py", baris 1982, di wsgi_app
respon = self.full_dispatch_request()
File "/usr/local/lib/python2.7/dist-packages/flask/app.py", baris 1614, dalam full_dispatch_request
rv = self.handle_user_exception(e)
File "/usr/local/lib/python2.7/dist-packages/flask/app.py", baris 1517, di handle_user_exception
reraise(exc_type, exc_value, tb)
File "/usr/local/lib/python2.7/dist-packages/flask/app.py", baris 1612, dalam full_dispatch_request
rv = self.dispatch_request()
File "/usr/local/lib/python2.7/dist-packages/flask/app.py", baris 1598, di dispatch_request
kembalikan self.view_functions rule.endpoint
File "app.py", baris 62, di sendrequest
response=sess.post(url,params, header=h,verify=False)
File "/usr/local/lib/python2.7/dist-packages/requests/sessions.py", baris 535, di pos
return self.request('POST', url, data=data, json=json, *kwargs)File "/usr/local/lib/python2.7/dist-packages/requests/sessions.py", baris 488, dalam permintaanresp = self.send(persiapan, * send_kwargs)
File "/usr/local/lib/python2.7/dist-packages/requests/sessions.py", baris 609, di kirim
r = adapter.send(permintaan, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/requests/adapters.py", baris 497, di kirim
naikkan SSLError(e, request=request)
SSLError: ("jabat tangan buruk: SysCallError(-1, 'EOF Tak Terduga')",)

Saya telah mendengar itu mungkin terkait dengan openSSL. Adakah ide tentang bagaimana ini bisa diselesaikan? Haruskah saya memasukkan ketergantungan?

Komentar yang paling membantu

coba instal versi ini:

requests[security]==2.7.0
cryptography==1.9
pyOpenSSL==17.4.0

Semua 37 komentar

Bisakah Anda menjalankan openssl version di wadah Anda?

Ini juga bisa sangat terkait dengan versi Python, kami juga ingin mengetahuinya.

Hai

Python 2.7 (12)
Openssl 1.0.2g

Terima kasih

Apakah Anda menjalankan versi Permintaan yang sama di dalam wadah dan di luar? Apa dua versi itu?

2.11.1 saat bekerja, dan 2..12.5 di dalam wadah. Apakah itu membuat perbedaan?

Ya, ada beberapa perubahan kode yang layak di antara kedua versi itu. Ingin mencoba menurunkan versi ke 2.11 dengan cepat dalam wadah untuk melihat apa yang terjadi?

Masih gagal, tetapi dengan pesan kesalahan yang berbeda
...
...
File "/usr/local/lib/python2.7/dist-packages/requests/adapters.py", baris 491, di kirim
naikkan SSLError(e, request=request)
SSLError: EOF terjadi karena melanggar protokol (_ssl.c:590)

Hm. Kesalahan yang berbeda itu adalah kesalahan yang hampir sama. Bisakah Anda mengungkapkan kepada kami server web apa yang Anda coba hubungi?

Itu server saya sendiri, yang memiliki sertifikat yang ditandatangani sendiri. Saya mengirim verifikasi=False untuk mengabaikan SSL tetapi sepertinya tidak menyukainya

response=sess.post(url,params, header=h,verify=False)

Bisakah Anda menunjukkan konfigurasi TLS untuk server Anda, dan versi OpenSSL apa yang ditautkan?

TLS 1.2 dan versi openSSL yang sama... tidak ada yang istimewa. Saya tidak berpikir di sana
apakah ada yang salah di sisi server karena berfungsi dengan baik di luar buruh pelabuhan
wadah

Pada Jumat, 31 Maret 2017 pukul 16:07, Cory Benfield [email protected]
menulis:

Bisakah Anda menunjukkan konfigurasi TLS untuk server Anda, dan OpenSSL apa?
versi yang ditautkan?


Anda menerima ini karena Anda yang menulis utas.
Balas email ini secara langsung, lihat di GitHub
https://github.com/kennethreitz/requests/issues/3948#issuecomment-290738188 ,
atau matikan utasnya
https://github.com/notifications/unsubscribe-auth/AMK55o2K5PaiflW3wHWD_rZYm_WFXXGyks5rrRa6gaJpZM4Mvjzc
.

Jadi, "salah" di sini hanya didefinisikan apakah ada ketidaksesuaian antara apa yang diharapkan klien dan server. Karena minat, apakah server Anda mengharapkan SNI? Apakah Anda mencapai server Anda melalui nama host atau IP?

Dalam wadah itu, dapatkah Anda menggulung server Anda dengan URL yang sama? Atau bahkan hanya telnet saja? Saya ingin tahu apakah permintaan bahkan dapat mencapai server dari tempat Anda menggunakan wadah.

Hai

Menanggapi keduanya. itu mengharapkan SNI dan saya mencapainya melalui nama host

Dari container saya bisa telnet ke server, tidak ada masalah dengan
itu. Saya telah mengekspos layanan lain melalui http dan berfungsi dengan baik, itu murni
jabat tangan SSL apa yang gagal

Pada Jum, 31 Mar 2017 jam 16:16, Ian Cordasco [email protected]
menulis:

Dalam wadah itu, dapatkah Anda menggulung server Anda dengan URL yang sama? Atau bahkan
hanya telnet untuk itu? Saya ingin tahu apakah permintaan bahkan dapat mencapai server dari
tempat Anda men-deploy container.


Anda menerima ini karena Anda yang menulis utas.
Balas email ini secara langsung, lihat di GitHub
https://github.com/kennethreitz/requests/issues/3948#issuecomment-290740743 ,
atau matikan utasnya
https://github.com/notifications/unsubscribe-auth/AMK55kVKzprqGA1n1PKJznWX_g_V7nsxks5rrRi-gaJpZM4Mvjzc
.

Oke, apa hasil menjalankan openssl s_client -connect host:port ke server Anda dari dalam wadah?

Hai

Terhubung tanpa masalah (terhubung (00003))

Pada Jumat, 31 Maret 2017 pukul 16.19, Cory Benfield [email protected]
menulis:

Ok, apa hasil dari menjalankan openssl s_client -connect Host:port to
server Anda dari dalam wadah?


Anda menerima ini karena Anda yang menulis utas.
Balas email ini secara langsung, lihat di GitHub
https://github.com/kennethreitz/requests/issues/3948#issuecomment-290741631 ,
atau matikan utasnya
https://github.com/notifications/unsubscribe-auth/AMK55oeDzw5HhrujLbMFLA6CCowT0umwks5rrRmLgaJpZM4Mvjzc
.

Maaf, seluruh hasil. Saya tertarik dengan apa hasil negosiasinya.

Verifikasi kode pengembalian: 19 (sertifikat yang ditandatangani sendiri dalam rantai sertifikat)

Pada Jumat, 31 Maret 2017 pukul 16.34, Cory Benfield [email protected]
menulis:

Maaf, seluruh hasil. Saya tertarik dengan apa hasil dari
negosiasi adalah.


Anda menerima ini karena Anda yang menulis utas.
Balas email ini secara langsung, lihat di GitHub
https://github.com/kennethreitz/requests/issues/3948#issuecomment-290746053 ,
atau matikan utasnya
https://github.com/notifications/unsubscribe-auth/AMK55o4JyAkpP5h1ZPLBOkRONN2z9Em8ks5rrRz-gaJpZM4Mvjzc
.

Itu bukan hasil keseluruhan. Silakan salin dan tempel semuanya dari perintah itu.

Tidak, seluruh hasil. Semua keluaran. Semua yang dicetaknya.

Tidak ada lagi yang menarik di sana, hanya versi tls, info sertifikat dll ...

Saya memiliki respons yang persis sama di luar wadah
El El vie, 31 mar 2017 16:40 terakhir, Cory Benfield [email protected]
deskripsi:

Tidak, seluruh hasil. Semua keluaran. Semua yang dicetaknya.


Anda menerima ini karena Anda yang menulis utas.
Balas email ini secara langsung, lihat di GitHub
https://github.com/kennethreitz/requests/issues/3948#issuecomment-290747930 ,
atau matikan utasnya
https://github.com/notifications/unsubscribe-auth/AMK55iD8dY2eDxdfz1j0YzpteN8ThFJ3ks5rrR58gaJpZM4Mvjzc
.

Informasi itulah yang membuat saya tertarik. Sesuatu di Klien TLS kami, Halo, membuat server Anda marah, jadi saya tertarik untuk melihat apa yang dinegosiasikan oleh server Anda.

Oke, mari kita lakukan sesuatu untuk memastikan itu bukan sertifikat saya. Saya akan mencari apapun
halaman lain yang menggunakan sertifikat yang ditandatangani sendiri (jika Anda mengetahuinya, silakan
bagikan) dan saya akan mencoba menentangnya, sehingga Anda dapat menghubungkannya
server juga

El El vie, 31 mar 2017 16:46 terakhir, Cory Benfield [email protected]
deskripsi:

Informasi itulah yang saya minati. Sesuatu di TLS kami
Klien Halo membuat server Anda marah, jadi saya tertarik untuk melihatnya
apa yang dinegosiasikan oleh server Anda.


Anda menerima ini karena Anda yang menulis utas.
Balas email ini secara langsung, lihat di GitHub
https://github.com/kennethreitz/requests/issues/3948#issuecomment-290749603 ,
atau matikan utasnya
https://github.com/notifications/unsubscribe-auth/AMK55oT_6jlrkIO4VlXRsoohjEGzNy3pks5rrR_TgaJpZM4Mvjzc
.

Ini bukan sertifikat Anda. Pesan kesalahan yang dimaksud (EOF tak terduga) berarti bahwa selama jabat tangan TLS, server telah mengirimi kami paket TCP FIN atau RST. Itu berarti server telah memilih untuk menutup koneksi, bukan kami. Itu berarti server telah memutuskan kami tidak melakukan sesuatu yang disukainya. Akibatnya, ini bukan kesalahan sertifikat Anda: kami belum sampai pada tahap memvalidasinya.

@javixeneize tanpa informasi yang kami minta dari Anda, saya tidak yakin apa lagi yang bisa kami lakukan untuk membantu.

Ok ok... saya akan memberikan itu pada hari senin
El El vie, 31 mar 2017 a las 17:19, Ian Cordasco [email protected]
deskripsi:

@javixeneize https://github.com/javixeneize tanpa informasi
kami telah meminta Anda, saya tidak yakin apa lagi yang bisa kami lakukan untuk membantu.


Anda menerima ini karena Anda disebutkan.

Balas email ini secara langsung, lihat di GitHub
https://github.com/kennethreitz/requests/issues/3948#issuecomment-290759070 ,
atau matikan utasnya
https://github.com/notifications/unsubscribe-auth/AMK55ugTXZp-cZpp9JJJ7WmACcYXho2Rks5rrSeegaJpZM4Mvjzc
.

root<strong i="5">@4f66ccbaef3c</strong>:/# openssl s_client -connect api.quinto.ai:443
CONNECTED(00000003)
depth=2 O = Digital Signature Trust Co., CN = DST Root CA X3
verify return:1
depth=1 C = US, O = Let's Encrypt, CN = Let's Encrypt Authority X3
verify return:1
depth=0 CN = fbbot.quintoapp.com
verify return:1
---
Certificate chain
 0 s:/CN=fbbot.quintoapp.com
   i:/C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X3
 1 s:/C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X3
   i:/O=Digital Signature Trust Co./CN=DST Root CA X3
---
Server certificate
-----BEGIN CERTIFICATE-----
MIIFCjCCA/KgAwIBAgISA1Bg18LrjA3qyyrEDmzE+5YSMA0GCSqGSIb3DQEBCwUA
MEoxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MSMwIQYDVQQD
ExpMZXQncyBFbmNyeXB0IEF1dGhvcml0eSBYMzAeFw0xNzAzMTQwNzMyMDBaFw0x
NzA2MTIwNzMyMDBaMB4xHDAaBgNVBAMTE2ZiYm90LnF1aW50b2FwcC5jb20wggEi
MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQD0xbEa4W4k4BlPrIxeVX+ekPl1
Od4OuwepY5Ha2BQd6YMiphh+we5H6JVu2XDuPbQnmQMtEwGa2T2Adhic4bGPPC7+
0j+utJuqGBRIbYJ09A5EQOhB4HhOSI82l1ZpPkHpvOiC4UoEgG4KOLnqBX0JydI3
8vhiV4EgbLr77wARsEeinK+Zj+7bpsEK8q+B7mR5km6f6tKT/i++Wd4Fx3Pz7iuK
aCulKzG4IMxopE/9DDf608H/3cFcSHvg/4IguPoOCx2ArNKE7QCNFGYAx9HhnV2y
AYVbd2WGWeJKuNWEwCF+nvxGDo4cHdT6kq9HHB6kPTYrZb7PrKtkq1C3MNB/AgMB
AAGjggIUMIICEDAOBgNVHQ8BAf8EBAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUHAwEG
CCsGAQUFBwMCMAwGA1UdEwEB/wQCMAAwHQYDVR0OBBYEFENiqFyUkXGaxd/woyxi
6SqQz2WqMB8GA1UdIwQYMBaAFKhKamMEfd265tE5t6ZFZe/zqOyhMHAGCCsGAQUF
BwEBBGQwYjAvBggrBgEFBQcwAYYjaHR0cDovL29jc3AuaW50LXgzLmxldHNlbmNy
eXB0Lm9yZy8wLwYIKwYBBQUHMAKGI2h0dHA6Ly9jZXJ0LmludC14My5sZXRzZW5j
cnlwdC5vcmcvMB4GA1UdEQQXMBWCE2ZiYm90LnF1aW50b2FwcC5jb20wgf4GA1Ud
IASB9jCB8zAIBgZngQwBAgEwgeYGCysGAQQBgt8TAQEBMIHWMCYGCCsGAQUFBwIB
FhpodHRwOi8vY3BzLmxldHNlbmNyeXB0Lm9yZzCBqwYIKwYBBQUHAgIwgZ4MgZtU
aGlzIENlcnRpZmljYXRlIG1heSBvbmx5IGJlIHJlbGllZCB1cG9uIGJ5IFJlbHlp
bmcgUGFydGllcyBhbmQgb25seSBpbiBhY2NvcmRhbmNlIHdpdGggdGhlIENlcnRp
ZmljYXRlIFBvbGljeSBmb3VuZCBhdCBodHRwczovL2xldHNlbmNyeXB0Lm9yZy9y
ZXBvc2l0b3J5LzANBgkqhkiG9w0BAQsFAAOCAQEAf80at95dsb9WsSMaChtKNEJR
FfuPd/5MZaqFxWM6+AtEGZt2qbeOExIShEHFehUSWQnrCBTiPY6ildK1E5nhduap
4K0O7FrnMVaNBhnoBT7jsZMs7ivLpaKCT6imR71hQTUv07xw1kQJMu/jrHHtVjNi
9iI+VryZeETIVBtCXbirwKxT0JYLicdS/9M9m9wC7/H8xWVkcRR5dMI2Im+4klX4
eGmgi+XCJPkDZZEpfQHmIqQQ9ccCpP0BFs0JqfwLich71NdPihVnJDhVZrEVMcgs
+412WdWCOTIXrEzsL6xddypVETY2k5Z3S8sZTInWA9nYOGHW82xwh6/tRU+yiQ==
-----END CERTIFICATE-----
subject=/CN=fbbot.quintoapp.com
issuer=/C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X3
---
No client certificate CA names sent
Peer signing digest: SHA512
Server Temp Key: ECDH, P-256, 256 bits
---
SSL handshake has read 3157 bytes and written 433 bytes
---
New, TLSv1/SSLv3, Cipher is ECDHE-RSA-AES128-GCM-SHA256
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
    Protocol  : TLSv1.2
    Cipher    : ECDHE-RSA-AES128-GCM-SHA256
    Session-ID: 78B1ABFE5A7BF1E698FB5D43D1A75D6F874DD9D2E12816E3276B349FC0C4B96B
    Session-ID-ctx:
    Master-Key: B6EE0F224CB1A93379B86524E9F01D618A018E2F1D68F5AB29F7570611F0D9CF4210F9946335A9FAAEEA143B0BC98D26
    Key-Arg   : None
    PSK identity: None
    PSK identity hint: None
    SRP username: None
    TLS session ticket lifetime hint: 300 (seconds)
    TLS session ticket:
    0000 - 00 39 b1 81 4d f9 90 0a-b2 dd a8 e7 b5 6b 74 7c   .9..M........kt|
    0010 - ba 4e 8b 51 75 df c4 ae-e1 6c dc 3e 05 a1 0e fc   .N.Qu....l.>....
    0020 - 4e 61 83 34 f4 ea 06 b7-8d 54 82 01 a8 b2 fa 2a   Na.4.....T.....*
    0030 - 48 69 01 b5 06 6b ee 18-3d 93 f5 d7 31 d8 66 8f   Hi...k..=...1.f.
    0040 - a4 6f f4 6c 2d 48 37 9f-33 b7 36 49 39 1f 2f 31   .o.l-H7.3.6I9./1
    0050 - 1a 0d 8f 8e 34 36 3d d1-09 fb 6b 5b 5d 68 80 3e   ....46=...k[]h.>
    0060 - 66 d9 44 11 4d 12 d5 cc-df eb c3 45 ae 04 10 56   f.D.M......E...V
    0070 - 34 ad 98 8f f9 1b f2 33-00 a4 b3 3c a5 40 80 8e   4......3...<.@..
    0080 - 9b f1 b5 40 e5 2b 29 86-7e 2b f6 95 03 4b e3 b4   ...@.+).~+...K..
    0090 - ab 16 25 bc 47 bf fb 87-dc 13 0e 10 a8 1b 18 fb   ..%.G...........
    00a0 - 3b 65 07 96 05 ce 1a c2-9a d4 d8 73 fd 38 40 8b   ;e.........s.8@.
    00b0 - 0e 52 df 26 19 fc 9f 04-06 28 b3 25 5c e2 64 51   .R.&.....(.%\.dQ

    Start Time: 1496212705
    Timeout   : 300 (sec)
    Verify return code: 0 (ok)
---
read:errno=0

Apa masalah Anda yang sebenarnya @ harry1064?

@Lukasa jika Anda melihat hasil di atas dari perintah openssl s_client -connect api.quinto.ai:443 saya jalankan di dalam wadah buruh pelabuhan yang berjalan di server saya, Anda akan melihat CN menjadi fbbot.quintoapp.com yang menunjuk ke server host tempat wadah buruh pelabuhan saya berjalan.
Tetapi perintah yang sama yang saya jalankan di server host, CN adalah api.quinto.ai.
Jadi pada dasarnya, saya memiliki server python yang berjalan di wadah buruh pelabuhan dan saya ingin membuat permintaan ke server lain api.quinto.ai tetapi saya tidak dapat melakukannya menggunakan permintaan. Kode python yang sama saya jalankan pada juru bahasa pada mesin Host, itu berfungsi dengan baik tetapi ketika saya masuk ke wadah buruh pelabuhan dan menjalankan kode yang sama dari dalam juru bahasa python, itu tidak berfungsi

Secara default, OpenSSL s_client tidak menampilkan bidang indikasi nama server, yang berarti bahwa server jarak jauh akan menampilkan sertifikat apa pun yang dipilihnya. Apakah Anda mendapatkan hasil yang sama dalam kedua kasus jika Anda mengubah perintah Anda menjadi:

openssl s_client -connect api.quinto.ai:443 -servername api.quinto.ai

Bahkan jika tidak, ini terdengar seperti masalah dengan buruh pelabuhan, bukan dengan Permintaan: Anda tampaknya mereproduksi masalah menggunakan baris perintah openssl, yang tidak menggunakan Permintaan dengan cara apa pun. Jadi saya tidak yakin bagaimana Anda ingin kami menyelesaikan masalah Anda.

Saya mendapat tanggapan yang sama dengan kedua kasus tersebut. Jadi saya juga berpikir ini adalah masalah dengan buruh pelabuhan karena mereka mungkin menggunakan pemetaan antara iptables.

Mungkin ini bisa membantu seseorang. Bagi saya, saya perlu menginstal ini:

OpenSSL 1.0.2g 1 Mar 2016

requests[security]==2.7.0  # not 2.18.x
cryptography==1.9   # not 2.0

Diskusi ini menjadi basi beberapa bulan yang lalu. Aku menutup ini. Kami dapat membukanya kembali jika perlu.

@harry1064 @javixeneize apakah kalian telah menemukan solusi untuk ini? Saya dengan masalah yang sama dan mungkin ini bisa menjadi masalah Docker. Tapi saya benar-benar tidak tahu bagaimana mengatasi ini ...

Terima kasih!

Tidak...

El El jue, 11 en 2018 14:11 terakhir, Gabriel Gularte <
[email protected]> penjelasan:

@harry1064 https://github.com/harry1064 @javixeneize
https://github.com/javixeneize apakah kalian telah menemukan solusi untuk
ini? Saya dengan masalah yang sama dan mungkin ini bisa menjadi masalah Docker. Tetapi
Saya benar-benar tidak tahu bagaimana mengatasi ini ...

Terima kasih!


Anda menerima ini karena Anda disebutkan.
Balas email ini secara langsung, lihat di GitHub
https://github.com/requests/requests/issues/3948#issuecomment-356944272 ,
atau matikan utasnya
https://github.com/notifications/unsubscribe-auth/AMK55roWfMLccuizdHkWQTTOq2gU3BXMks5tJhYegaJpZM4Mvjzc
.

coba instal versi ini:

requests[security]==2.7.0
cryptography==1.9
pyOpenSSL==17.4.0

Halo ,
Saya memiliki masalah yang sama, setelah menurunkan ke versi yang disebutkan di atas semuanya berjalan lancar ( python 3.6 )

Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

ghtyrant picture ghtyrant  ·  3Komentar

justlurking picture justlurking  ·  3Komentar

remram44 picture remram44  ·  4Komentar

ReimarBauer picture ReimarBauer  ·  4Komentar

cnicodeme picture cnicodeme  ·  3Komentar