最新消息:20210917 已从crifan.com换到crifan.org

【已解决】mitmproxy代理报错:Cannot establish TLS with 443 sni None TlsException Cannot validate certificate hostname without SNI

mitmproxy crifan 1352浏览 0评论
折腾:
【未解决】自动抓包iOS的app京东金融:第二个tab页财富抓包
期间,遇到:
mitmdump报错:
192.168.31.58:51775: CONNECT 123.126.37.206:443
 << Cannot establish TLS with 123.126.37.206:443 (sni: None): TlsException('Cannot validate certificate hostname without SNI’)

192.168.31.58:51161: CONNECT 123.126.37.206:443
 << Cannot establish TLS with 123.126.37.206:443 (sni: None): TlsException('Cannot validate certificate hostname without SNI')
192.168.31.58:51161: clientdisconnect
192.168.31.58:51160: CONNECT 123.126.37.206:443
 << Cannot establish TLS with 123.126.37.206:443 (sni: None): TlsException('Cannot validate certificate hostname without SNI')
之前也遇到过:
【已解决】自动抓包iOS的app京东金融:mitmdump代理出错Cannot establish TLS with sni None TlsException
以及更早也遇到过:
【已解决】mitmproxy代理抓包安卓app数据访问出错:Cannot establish TLS with client sni TlsException
当时是给脚本Save1.py中加上额外代码。不过此处仍会有这类错误。再去研究看看。
Cannot establish TLS with sni None
Cannot validate certificate hostname without SNI · Issue #1846 · mitmproxy/mitmproxy
说是加上参数,可以规避此问题?
mitmproxy —insecure
说最新版是:
 -k 即 --ssl-insecure
抽空去试试
https proxy Private certificate response 502 error · Issue #2368 · mitmproxy/mitmproxy
networking – Cannot validate certificate hostname without SNI – Server Fault
去看看help
 mitmdump --help
usage: mitmdump [options] [filter]


positional arguments:
  filter_args           Filter expression, equivalent to setting both the view_filter and save_stream_filter options.


optional arguments:
  -h, --help            show this help message and exit
  --version             show version number and exit
  --options             Show all options and their default values
  --commands            Show all commands and their signatures
  --set option[=value]  Set an option. When the value is omitted, booleans are set to true, strings and integers are set to None (if permitted), and
                        sequences are emptied. Boolean values can be true, false or toggle.
  -q, --quiet           Quiet.
  -v, --verbose         Increase log verbosity.
  --mode MODE, -m MODE  Mode can be "regular", "transparent", "socks5", "reverse:SPEC", or "upstream:SPEC". For reverse and upstream proxy modes, SPEC
                        is host specification in the form of "http[s]://host[:port]".
  --no-anticache
  --anticache           Strip out request headers that might cause the server to return 304-not-modified.
  --no-showhost
  --showhost            Use the Host header to construct URLs for display.
  --rfile PATH, -r PATH
                        Read flows from file.
  --scripts SCRIPT, -s SCRIPT
                        Execute a script. May be passed multiple times.
  --stickycookie FILTER
                        Set sticky cookie filter. Matched against requests.
  --stickyauth FILTER   Set sticky auth filter. Matched against requests.
  --save-stream-file PATH, -w PATH
                        Stream flows to file as they arrive. Prefix path with + to append.
  --no-anticomp
  --anticomp            Try to convince servers to send us un-compressed data.
  --flow-detail LEVEL   The display detail level for flows in mitmdump: 0 (almost quiet) to 3 (very verbose). 0: shortened request URL, response status
                        code, WebSocket and TCP message notifications. 1: full request URL with response status code 2: 1 + HTTP headers 3: 2 + full
                        response content, content of WebSocket and TCP messages.


Proxy Options:
  --listen-host HOST    Address to bind proxy to.
  --listen-port PORT, -p PORT
                        Proxy service port.
  --no-server, -n
  --server              Start a proxy server. Enabled by default.
  --ignore-hosts HOST   Ignore host and forward all traffic without processing it. In transparent mode, it is recommended to use an IP address (range),
                        not the hostname. In regular mode, only SSL traffic is ignored and the hostname should be used. The supplied value is
                        interpreted as a regular expression and matched on the ip or the hostname. May be passed multiple times.
  --allow-hosts HOST    Opposite of --ignore-hosts. May be passed multiple times.
  --tcp-hosts HOST      Generic TCP SSL proxy mode for all hosts that match the pattern. Similar to --ignore, but SSL connections are intercepted. The
                        communication contents are printed to the log in verbose mode. May be passed multiple times.
  --upstream-auth USER:PASS
                        Add HTTP Basic authentication to upstream proxy and reverse proxy requests. Format: username:password.
  --proxyauth SPEC      Require proxy authentication. Format: "username:pass", "any" to accept any user/pass combination, "@path" to use an Apache
                        htpasswd file, or "ldap[s]:url_server_ldap:dn_auth:password:dn_subtree" for LDAP authentication.
  --no-rawtcp
  --rawtcp              Enable/disable experimental raw TCP support. TCP connections starting with non-ascii bytes are treated as if they would match
                        tcp_hosts. The heuristic is very rough, use with caution. Disabled by default.
  --no-http2
  --http2               Enable/disable HTTP/2 support. HTTP/2 support is enabled by default.


SSL:
  --certs SPEC          SSL certificates of the form "[domain=]path". The domain may include a wildcard, and is equal to "*" if not specified. The file
                        at path is a certificate in PEM format. If a private key is included in the PEM, it is used, else the default key in the conf
                        dir is used. The PEM file should contain the full certificate chain, with the leaf certificate as the first entry. May be passed
                        multiple times.
  --no-ssl-insecure
  --ssl-insecure, -k    Do not verify upstream server SSL/TLS certificates.
  --key-size KEY_SIZE   TLS key size for certificates and CA.


Client Replay:
  --client-replay PATH, -C PATH
                        Replay client requests from a saved file. May be passed multiple times.


Server Replay:
  --server-replay PATH, -S PATH
                        Replay server responses from a saved file. May be passed multiple times.
  --no-server-replay-kill-extra
  --server-replay-kill-extra
                        Kill extra requests during replay.
  --no-server-replay-nopop
  --server-replay-nopop
                        Don't remove flows from server replay state after use. This makes it possible to replay same response multiple times.
  --no-server-replay-refresh
  --server-replay-refresh
                        Refresh server replay responses by adjusting date, expires and last-modified headers, as well as adjusting cookie expiration.


Replacements:
  --replacements PATTERN, -R PATTERN
                        Replacement patterns of the form "/pattern/regex/replacement", where the separator can be any character. May be passed multiple
                        times.


Set Headers:
  --setheaders PATTERN, -H PATTERN
                        Header set pattern of the form "/pattern/header/value", where the separator can be any character. May be passed multiple times.
是有
  • –ssl-insecure, -k
    • Do not verify upstream server SSL/TLS certificates.
去加上试试
mitmdump -k -s middleware/Save1.py
看看后续,是否还会报此错误
mitmdump -k -p 8081 -s middleware/Save1.py
待后续大量调试,看看是否解决问题。
::ffff:192.168.31.58:57777: Certificate verification error for None: ("hostname 'no-hostname' doesn't match either of '*.jd.com', '*.3.cn', '*.360buy.com', '*.360buyimg.com', '*.7fresh.com', '*.baitiao.com', '*.caiyu.com', '*.chinabank.com.cn', '*.e.jd.com', '*.jd.co.th', '*.jd.hk', '*.jd.id', '*.jd.ru', '*.jdpay.com', '*.jdx.com', '*.joybuy.com', '*.joybuy.es', '*.jr.jd.com', '*.k.jd.com', '*.kmall.jd.com', '*.m.jd.com', '*.m.paipai.com', '*.m.yhd.com', '*.ocwms.com', '*.paipai.com', '*.shop.jd.com', '*.toplife.com', '*.wangyin.com', '*.yhd.com', '*.yihaodianimg.com', '*.yiyaojd.com', '*.yizhitou.com', '3.cn', '360buy.com', '360buyimg.com', '7fresh.com', 'baitiao.com', 'caiyu.com', 'chinabank.com.cn', 'jd.co.th', 'jd.hk', 'jd.id', 'jd.ru', 'jdpay.com', 'jdx.com', 'joybuy.com', 'joybuy.es', 'ocwms.com', 'paipai.com', 'toplife.com', 'wangyin.com', 'yhd.com', 'yihaodianimg.com', 'yiyaojd.com', 'yizhitou.com', 'jd.com'",)
::ffff:192.168.31.58:57777: Ignoring server verification error, continuing with connection
::ffff:192.168.31.58:57778: Certificate verification error for None: ("hostname 'no-hostname' doesn't match either of '*.jd.com', '*.3.cn', '*.360buy.com', '*.360buyimg.com', '*.7fresh.com', '*.baitiao.com', '*.caiyu.com', '*.chinabank.com.cn', '*.e.jd.com', '*.jd.co.th', '*.jd.hk', '*.jd.id', '*.jd.ru', '*.jdpay.com', '*.jdx.com', '*.joybuy.com', '*.joybuy.es', '*.jr.jd.com', '*.k.jd.com', '*.kmall.jd.com', '*.m.jd.com', '*.m.paipai.com', '*.m.yhd.com', '*.ocwms.com', '*.paipai.com', '*.shop.jd.com', '*.toplife.com', '*.wangyin.com', '*.yhd.com', '*.yihaodianimg.com', '*.yiyaojd.com', '*.yizhitou.com', '3.cn', '360buy.com', '360buyimg.com', '7fresh.com', 'baitiao.com', 'caiyu.com', 'chinabank.com.cn', 'jd.co.th', 'jd.hk', 'jd.id', 'jd.ru', 'jdpay.com', 'jdx.com', 'joybuy.com', 'joybuy.es', 'ocwms.com', 'paipai.com', 'toplife.com', 'wangyin.com', 'yhd.com', 'yihaodianimg.com', 'yiyaojd.com', 'yizhitou.com', 'jd.com'",)
::ffff:192.168.31.58:57778: Ignoring server verification error, continuing with connection
好像新多出了上述警告?
好像的确也就没了之前的错误了
取而代之的是上面的警告
Ignoring server verification error, continuing with connection
看来意思就是,取消了服务器的验证错误,然后继续了。
【总结】
此处通过:
mitmdump -k -p 8081 -s middleware/Save1.py
加上了
  • -k == –ssl-insecure
    • Do not verify upstream server SSL/TLS certificates
从而规避了:
TlsException('Cannot validate certificate hostname without SNI
的问题。

转载请注明:在路上 » 【已解决】mitmproxy代理报错:Cannot establish TLS with 443 sni None TlsException Cannot validate certificate hostname without SNI

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
92 queries in 0.186 seconds, using 23.30MB memory