Maximilian Hils
5af9df326a
fix certificate verification
...
This commit fixes netlib's optional (turned off by default)
certificate verification, which previously did not validate the
cert's host name. As it turns out, verifying the connection's host
name on an intercepting proxy is not really straightforward - if
we receive a connection in transparent mode without SNI, we have no
clue which hosts the client intends to connect to. There are two
basic approaches to solve this problem:
1. Exactly mirror the host names presented by the server in the
spoofed certificate presented to the client.
2. Require the client to send the TLS Server Name Indication
extension. While this does not work with older clients,
we can validate the hostname on the proxy.
Approach 1 is problematic in mitmproxy's use case, as we may want
to deliberately divert connections without the client's knowledge.
As a consequence, we opt for approach 2. While mitmproxy does now
require a SNI value to be sent by the client if certificate
verification is turned on, we retain our ability to present
certificates to the client which are accepted with a maximum
likelihood.
2015-11-01 18:15:30 +01:00
Maximilian Hils
67229fbdf7
Merge branch 'http-models'
2015-09-28 13:53:59 +02:00
Maximilian Hils
87566da3ba
fix mitmproxy/mitmproxy#784
2015-09-28 11:18:00 +02:00
Maximilian Hils
23d13e4c12
test response model, push coverage to 100% branch cov
2015-09-27 00:49:41 +02:00
Maximilian Hils
466888b01a
improve request tests, coverage++
2015-09-26 20:07:11 +02:00
Maximilian Hils
49ea8fc0eb
refactor response model
2015-09-26 17:39:50 +02:00
Maximilian Hils
106f7046d3
refactor request model
2015-09-26 00:39:04 +02:00
Maximilian Hils
45f2ea33b2
minor fixes
2015-09-25 18:24:18 +02:00
Maximilian Hils
c7b8322500
also accept bytes as arguments
2015-09-22 01:56:09 +02:00
Maximilian Hils
f937522773
Headers: return str on all Python versions
2015-09-22 01:48:35 +02:00
Maximilian Hils
9fbeac50ce
revert websocket changes from 73586b1b
...
The DEFAULT construct is very weird,
but with None we apparently break pathod
in some difficult-to-debug ways.
Revisit once we do more here.
2015-09-21 22:49:39 +02:00
Thomas Kriechbaumer
e9fe45f3f4
backport changes
2015-09-21 18:45:49 +02:00
Maximilian Hils
1ff8f294b4
minor encoding fixes
2015-09-21 18:34:43 +02:00
Maximilian Hils
73586b1be9
python 3++
2015-09-21 00:44:17 +02:00
Maximilian Hils
daebd1bd27
python3++
2015-09-20 20:35:45 +02:00
Maximilian Hils
0ad5cbc6bf
python3++
2015-09-20 19:56:45 +02:00
Maximilian Hils
693cdfc6d7
python3++
2015-09-20 19:40:09 +02:00
Maximilian Hils
3f1ca556d1
python3++
2015-09-20 18:12:55 +02:00
Maximilian Hils
91cdd78201
improve http error messages
2015-09-19 11:59:40 +02:00
Maximilian Hils
551d9f11e5
experimental: don't interfere with headers
2015-09-18 18:05:50 +02:00
Maximilian Hils
d1904c2f52
python3++
2015-09-18 15:38:31 +02:00
Maximilian Hils
7b6b157547
properly handle SNI IPs
...
fixes mitmproxy/mitmproxy#772
We must use the ipaddress package here, because that's what cryptography
uses. If we opt for something else, we have nasty namespace conflicts.
2015-09-18 15:35:02 +02:00
Maximilian Hils
266b80238d
fix tests
2015-09-17 17:29:55 +02:00
Maximilian Hils
d798ed955d
python3++
2015-09-17 16:31:50 +02:00
Maximilian Hils
8d71059d77
clean up http message models
2015-09-17 15:16:12 +02:00
Maximilian Hils
a07e43df8b
http1: add assemble_body function
2015-09-17 02:39:42 +02:00
Maximilian Hils
dad9f06cb9
organize exceptions, improve content-length handling
2015-09-17 02:14:14 +02:00
Maximilian Hils
265f31e878
adjust http1-related code
2015-09-16 18:43:24 +02:00
Maximilian Hils
a077d8877d
finish netlib.http.http1 refactor
2015-09-16 00:04:23 +02:00
Maximilian Hils
11e7f476bd
wip
2015-09-15 19:12:15 +02:00
Maximilian Hils
997fcde8ce
make clean_bin unicode-aware
2015-09-12 17:03:09 +02:00
Maximilian Hils
a38142d595
don't yield empty chunks
2015-09-11 01:17:39 +02:00
Maximilian Hils
92c763f469
fix mitmproxy/mitmproxy#759
2015-09-10 12:32:38 +02:00
Maximilian Hils
a5f7752cf1
add ssl_read_select
2015-09-10 11:30:41 +02:00
Maximilian Hils
32b3c32138
add tcp.Address.__hash__
2015-09-08 21:31:27 +02:00
Maximilian Hils
fc86bbd03e
let Headers inherit from object
...
fixes mitmproxy/mitmproxy#753
2015-09-08 15:16:25 +02:00
Maximilian Hils
50bf92ccce
Merge branch 'master' of https://github.com/mitmproxy/netlib
2015-09-05 18:16:41 +02:00
Maximilian Hils
66ee1f465f
headers: adjust everything
2015-09-05 18:15:47 +02:00
Maximilian Hils
3718e59308
finalize Headers, add tests
2015-09-05 15:27:48 +02:00
Maximilian Hils
5f97701958
add new headers class
2015-09-05 13:26:36 +02:00
Thomas Kriechbaumer
3ebe5a5147
http2: do net let Settings frames escape
2015-09-03 21:24:07 +02:00
Thomas Kriechbaumer
53abf5f4d7
http2: handle Ping in protocol
2015-09-03 21:24:07 +02:00
Maximilian Hils
2d0d240abc
Merge branch 'master' of https://github.com/mitmproxy/netlib
2015-08-29 20:56:19 +02:00
Maximilian Hils
4a8fd79e33
don't yield prefix and suffix
2015-08-29 20:54:54 +02:00
Maximilian Hils
1265945f55
move sslversion mapping to netlib
2015-08-29 12:30:35 +02:00
Maximilian Hils
982d8000c4
wip
2015-08-28 17:35:48 +02:00
Thomas Kriechbaumer
3e3b59aa71
http2: fix priority stream dependency check
2015-08-26 20:58:00 +02:00
Maximilian Hils
de0ced73f8
fix error messages
2015-08-25 18:33:55 +02:00
Maximilian Hils
21858995ae
request -> request_method
2015-08-24 18:16:34 +02:00
Maximilian Hils
622665952c
minor stylistic fixes
2015-08-24 16:52:32 +02:00
Thomas Kriechbaumer
cd9701050f
read_response depends on request for stream_id
2015-08-21 10:04:57 +02:00
Thomas Kriechbaumer
53f2582313
http2: fix unhandled settings frame
2015-08-20 20:36:51 +02:00
Thomas Kriechbaumer
16f697f68a
http2: disable features we do not support yet
2015-08-20 10:27:06 +02:00
Thomas Kriechbaumer
94b7beae2a
http2: implement basic flow control updates
2015-08-20 10:27:06 +02:00
Thomas Kriechbaumer
eb34305518
http2: fix frame length field
2015-08-20 10:27:06 +02:00
Thomas Kriechbaumer
e20d4e5c02
http2: add callback to handle unexpected frames
2015-08-20 10:27:06 +02:00
Thomas Kriechbaumer
1025c15242
fix typo
2015-08-20 10:27:06 +02:00
Maximilian Hils
9920de1e15
tcp._Connection: clean up code, fix inheritance
2015-08-19 16:06:33 +02:00
Maximilian Hils
6810fba54e
add ssl peek polyfill
2015-08-19 16:05:42 +02:00
Thomas Kriechbaumer
9686a77dcb
http2: implement request target
2015-08-18 22:17:00 +02:00
Thomas Kriechbaumer
07a1356e2f
http2: add support for too large header frames
2015-08-18 21:22:42 +02:00
Thomas Kriechbaumer
0d384ac2a9
http2: add support for too large data frames
2015-08-18 21:22:42 +02:00
Maximilian Hils
231656859f
TCPClient: more sophisticated address handling
2015-08-18 21:08:42 +02:00
Maximilian Hils
62416daa4a
add Reader.peek()
2015-08-18 21:08:01 +02:00
Maximilian Hils
c92dc1b868
re-add form_out
2015-08-18 21:07:38 +02:00
Aldo Cortesi
3d30667125
Bump netlib version - 0.13.1 is already out
2015-08-17 10:21:30 +12:00
Thomas Kriechbaumer
85cede47aa
allow direct ALPN callback method
2015-08-16 11:41:34 +02:00
Thomas Kriechbaumer
b7e6e1c9b2
add HTTP/1.1 ALPN version string
2015-08-15 17:49:59 +02:00
Thomas Kriechbaumer
6a30ad2ad2
fix minor style offences
2015-08-10 20:50:05 +02:00
Thomas Kriechbaumer
ff27d65f08
cleanup whitespace
2015-08-10 20:44:36 +02:00
Thomas Kriechbaumer
476badf45c
cleanup imports
2015-08-10 20:36:47 +02:00
Thomas Kriechbaumer
690b8b4f4e
add move tests and code from mitmproxy
2015-08-10 20:34:27 +02:00
Maximilian Hils
c2832ef72b
fix mitmproxy/mitmproxy#705
2015-08-03 18:06:31 +02:00
Thomas Kriechbaumer
6a678d86e1
fix mitmproxy tests
2015-08-02 11:27:01 +02:00
Thomas Kriechbaumer
0be84fd6b9
fix tutils imports
2015-08-01 14:49:15 +02:00
Thomas Kriechbaumer
a837230320
move code from mitmproxy to netlib
2015-08-01 12:40:40 +02:00
Thomas Kriechbaumer
7b10817670
http2: improve protocol
2015-07-30 19:40:00 +02:00
Thomas Kriechbaumer
c7fcc2cca5
add on-the-wire representation methods
2015-07-29 11:27:43 +02:00
Thomas Kriechbaumer
827fe824d9
move code from mitmproxy to netlib
2015-07-27 11:48:38 +02:00
Maximilian Hils
fb48217224
improve pyopenssl version check
2015-07-25 13:30:25 +02:00
Maximilian Hils
b57c1386a1
Merge pull request #81 from Kriechi/protocol-refactor
...
HTTP protocol refactoring
2015-07-24 16:50:56 +02:00
Maximilian Hils
1b26161382
add distinct error for cert verification issues
2015-07-24 16:47:28 +02:00
Thomas Kriechbaumer
657973eca3
fix bugs
2015-07-22 16:13:06 +02:00
Thomas Kriechbaumer
faf17d3d60
http2: make proper use of odict
2015-07-22 15:30:51 +02:00
Thomas Kriechbaumer
ecc7ffe928
reduce public interface
...
use private indicator pattern “_methodname”
2015-07-22 15:30:51 +02:00
Thomas Kriechbaumer
83f013fca1
introduce EmptyRequest class
2015-07-22 15:30:51 +02:00
Thomas Kriechbaumer
d62dbee0f6
rename content -> body
2015-07-22 15:30:51 +02:00
Thomas Kriechbaumer
37a0cb858c
introduce ConnectRequest class
2015-07-22 15:30:51 +02:00
Thomas Kriechbaumer
4617ab8a3a
add Request class and unify read_request interface
2015-07-22 15:30:51 +02:00
Thomas Kriechbaumer
808b294865
refactor HTTP/1 as protocol
2015-07-22 15:30:51 +02:00
Thomas Kriechbaumer
230c16122b
change HTTP2 interface to match HTTP1
2015-07-22 15:30:51 +02:00
Thomas Kriechbaumer
bab6cbff1e
extract authentication methods from protocol
2015-07-22 15:30:51 +02:00
Thomas Kriechbaumer
f50deb7b76
move bits around
2015-07-22 15:30:51 +02:00
Thomas Kriechbaumer
bd5ee21284
refactor websockets into protocol
2015-07-22 15:30:50 +02:00
Thomas Kriechbaumer
6dcfc35011
introduce http_semantics module
...
used for generic HTTP representation
everything should apply for HTTP/1 and HTTP/2
2015-07-22 15:30:50 +02:00
Maximilian Hils
e316a9cdb4
bump version
2015-07-22 13:39:48 +02:00
Kyle Morton
c17af4162b
Added a fix for pre-1.0 OpenSSL which wasn't correctly erring on failed certificate validation
2015-07-21 19:15:11 -07:00
Kyle Morton
155bdeb123
Fixing default CA which ought to be read as a pemfile and not a directory
2015-07-21 18:09:42 -07:00
Maximilian Hils
9fdc412fa0
bump version
2015-07-22 00:17:05 +02:00
M. Utku Altinkaya
397b3bba5e
Fixed version error formatting issue
2015-07-21 13:17:46 +03:00
Maximilian Hils
880c66fe48
socks: optionally fail early
2015-07-03 02:45:12 +02:00
Maximilian Hils
9aaf10120d
socks: add assert_socks5 method
2015-07-03 02:01:30 +02:00
Kyle Morton
0a2b25187f
Fixing how certifi is made the default ca_path to simplify calling logic.
2015-06-26 14:57:00 -07:00
Maximilian Hils
2723a0e573
remove certffi
2015-06-26 13:26:35 +02:00
Aldo Cortesi
41925b01f7
Fix printing of SSL version error
...
Fixes #73
2015-06-25 10:37:01 +12:00
Aldo Cortesi
db6576ca6f
Merge pull request #76 from kyle-m/master
...
Provide debugging information when upstream server certificate fails validation
2015-06-24 09:27:08 +12:00
Aldo Cortesi
80dd703a2a
Merge branch 'Kriechi-ssl-version-handling'
2015-06-23 22:18:10 +12:00
Aldo Cortesi
239f4758af
Remove dependence on pathod in test suite.
2015-06-23 22:16:03 +12:00
Kyle Morton
d1452424be
Cleaning up upstream server verification. Adding storage of cerificate
...
verification errors on TCPClient object to enable warnings in downstream
projects.
2015-06-22 17:31:13 -07:00
Kyle Morton
7afe44ba4e
Updating TCPServer to allow tests (and potentially other use cases) to serve
...
certificate chains instead of only single certificates.
2015-06-22 16:48:09 -07:00
Thomas Kriechbaumer
58118d607e
unify SSL version/method handling
2015-06-22 20:39:34 +02:00
Aldo Cortesi
2aa1b98fbf
netlib/test.py -> test/tservers.py
2015-06-22 14:52:23 +12:00
Thomas Kriechbaumer
f5c5deb2ae
fix http user agents
2015-06-18 17:36:58 +02:00
Thomas Kriechbaumer
69e71097f7
mark unused variables and arguments
2015-06-18 17:14:38 +02:00
Aldo Cortesi
4579c67150
Merge branch 'master' of https://github.com/kyle-m/netlib into kyle-m-master
2015-06-18 12:23:03 +12:00
Aldo Cortesi
6e301f37d0
Only set OP_NO_COMPRESSION by default if it exists in our version of OpenSSL
...
We'll need to start testing under both new and old versions of OpenSSL
somehow to catch these...
2015-06-18 12:18:22 +12:00
Aldo Cortesi
4152b14387
Merge pull request #71 from Kriechi/landscape
...
fix warnings and code smells
2015-06-18 12:07:20 +12:00
Thomas Kriechbaumer
836b1eab97
fix warnings and code smells
...
use prospector to find them
2015-06-17 13:10:27 +02:00
Kyle Morton
c9c93af453
Adding certifi as default CA bundle.
2015-06-16 11:11:10 -07:00
Thomas Kriechbaumer
eb823a04a1
http2: improve :authority header
2015-06-16 15:00:29 +02:00
Thomas Kriechbaumer
abb37a3ef5
http2: improve test suite
2015-06-16 15:00:28 +02:00
Thomas Kriechbaumer
20c136e070
http2: return stream_id from request for response
2015-06-16 15:00:28 +02:00
Thomas Kriechbaumer
1c124421e3
http2: fix header_block_fragments and length
2015-06-16 15:00:28 +02:00
Thomas Kriechbaumer
d0a9d3cdda
http2: only first headers frame as END_STREAM flag
2015-06-16 15:00:28 +02:00
Thomas Kriechbaumer
e3db241a2f
http2: improve frame output
2015-06-16 15:00:28 +02:00
Thomas Kriechbaumer
79ff439930
add elliptic curve during TLS handshake
2015-06-16 15:00:28 +02:00
Thomas Kriechbaumer
12702b9a01
http2: improve frame output
2015-06-16 14:55:08 +02:00
Aldo Cortesi
bb206323ab
Merge pull request #69 from kyle-m/master
...
Adding support for upstream certificate validation when using SSL/TLS…
2015-06-16 10:34:09 +12:00
Kyle Morton
fe764cde52
Adding support for upstream certificate validation when using SSL/TLS with an
...
instance of TCPClient.
2015-06-15 10:18:54 -07:00
Thomas Kriechbaumer
0d137eac6f
simplify ALPN
2015-06-14 19:50:35 +02:00
Thomas Kriechbaumer
8d71a5b4ab
http2: add authority header
2015-06-14 19:43:32 +02:00
Thomas Kriechbaumer
9c6d237d02
add new TLS methods
2015-06-14 18:17:53 +02:00
Thomas Kriechbaumer
5fab755a05
add more tests
2015-06-12 15:27:29 +02:00
Thomas Kriechbaumer
a901bc3032
http2: add response creation
2015-06-12 14:45:51 +02:00
Thomas Kriechbaumer
8ea157775d
http2: general improvements
2015-06-12 14:42:07 +02:00
Thomas Kriechbaumer
eeaed93a83
improve ALPN integration
2015-06-11 15:37:17 +02:00
Thomas Kriechbaumer
0595585974
fix coding style
2015-06-08 17:00:03 +02:00
Thomas Kriechbaumer
fdbb3b76cf
http2: add warning if raw data looks like HTTP/1
2015-06-08 16:54:19 +02:00
Thomas Kriechbaumer
abbe88c8ce
fix non-ALPN supported OpenSSL-related tests
2015-06-08 13:25:42 +02:00
Thomas Kriechbaumer
4666d1e7bb
improve ALPN support on travis
2015-06-08 12:52:06 +02:00
Thomas Kriechbaumer
359ef46905
fix coding style
2015-06-08 12:29:39 +02:00
Aldo Cortesi
9c48bfb2a5
http2: ditch the logging for now
...
The API is well designed: it looks like we can get all the information
we need to expose debugging in the caller of the API.
2015-06-06 12:30:53 +12:00
Aldo Cortesi
f2d784896d
http2: resolve module structure and circular dependencies
...
- Move implementation out of __init__.py to protocol.py (an anti-pattern
because it makes the kind of structural refactoring we need hard)
- protocol imports frame, frame does not import protocol. To do this, we
shift the default settings to frame. If this feels wrong, we can move
them to a separate module (defaults.py?.).
2015-06-06 12:26:48 +12:00
Aldo Cortesi
fcaabeb455
Merge pull request #65 from Kriechi/h2-client
...
HTTP/2 protocol definition
2015-06-06 11:54:35 +12:00
Thomas Kriechbaumer
f2db8abbe8
use open instead of file
2015-06-05 20:52:11 +02:00
Thomas Kriechbaumer
fdc908cb98
http2: add protocol tests
2015-06-05 20:19:48 +02:00
Thomas Kriechbaumer
f003f87197
http2: rename module and refactor as strategy
2015-06-05 13:33:37 +02:00
Thomas Kriechbaumer
623dd850e0
http2: add logging and error handling
2015-06-05 13:33:37 +02:00
Thomas Kriechbaumer
40fa113116
http2: change header_block_fragment handling
2015-06-05 13:33:37 +02:00
Thomas Kriechbaumer
5cecbdc168
http2: add basic protocol handling
2015-06-05 13:33:37 +02:00