Documentation ¶
Index ¶
Constants ¶
const DefaultCertCacheSize = 1 << 10
DefaultCertCacheSize is the default size for Proxy's certificates LRU cache
const DefaultIssuerBitSize = 1024
DefaultIssuerBitSize defines default bit size for issued certs.
const DefaultIssuerRootBitSize = 2048
DefaultIssuerRootBitSize defines default bit size for a self-signed root cert.
Variables ¶
var ( // DefaultIssuerRootTmpl is the default template for self-signed root CA certificate. DefaultIssuerRootTmpl = x509.Certificate{ SerialNumber: big.NewInt(1), Issuer: pkix.Name{ CommonName: "issuer.example.org", Organization: []string{"MITMProxy Issuer Org"}, }, Subject: pkix.Name{ CommonName: "root.example.org", Organization: []string{"MITMProxy Root Org"}, }, NotBefore: time.Now(), NotAfter: time.Now().Add(time.Hour * 24 * 365 * 2), IsCA: true, BasicConstraintsValid: true, OCSPServer: []string{"ocsp.example.org"}, DNSNames: []string{"root.example.org"}, SignatureAlgorithm: x509.SHA1WithRSA, KeyUsage: x509.KeyUsageCertSign, } // DefaultIssuerTmpl is the default template for issued certificates. DefaultIssuerTmpl = x509.Certificate{ SerialNumber: big.NewInt(1), Subject: pkix.Name{ Country: []string{"AQ"}, Organization: []string{"MITMProxy"}, }, KeyUsage: x509.KeyUsageDigitalSignature, ExtKeyUsage: []x509.ExtKeyUsage{x509.ExtKeyUsageServerAuth}, } )
var DefaultAccessLogger = log.New(os.Stdout, "", log.LstdFlags|log.Lmsgprefix)
DefaultAccessLogger is the default logger for writing access log
var DefaultErrorLogger = log.New(os.Stderr, "ERR: ", log.LstdFlags|log.Lmsgprefix|log.Lshortfile)
DefaultErrorLogger is the default logger for writing error log
var DefaultIssuer = &SelfSignedCA{}
DefaultIssuer is the default Issuer instance.
var DefaultProxy = &Proxy{}
DefaultProxy is the instance of Proxy with default parameters
var DefaultTransport = defaultTransport()
DefaultTransport defines the default transport for proxy to make HTTP(S) requests to target servers.
Functions ¶
func Latency ¶
Latency returns effective latency of a given http.Request. Returns 0 if http.Request round trip have never been completed.
func Parent ¶
Parent returns parent CONNECT http.Request. Returns nil if request doesn't have a parent.
func Seq ¶
Seq returns sequence number of a request.
For plain HTTP or CONNECT requests it returns own requests' sequence number. For sub-requests generated by a CONNECT request it returns sequence number of the original CONNECT request. Sequence number MUST be present in the context. The absence of one results in panic.
Types ¶
type Issuer ¶
type Issuer interface {
Issue(cn string, dnsnames []string, ipaddresses []net.IP) (*tls.Certificate, error)
}
Issuer defines interface for on-flight certificate generator
type Proxy ¶
type Proxy struct { // Transport specifies optional transport to use for making HTTP(S) requests to target servers. // // If Transport is nil, DefaultTransport is used. Transport http.RoundTripper // AccessLogger is an optional logger used for access logging. // // If AccessLogger is nil, DefaultAccessLogger is used. AccessLogger *log.Logger // ErrorLogger is an optional logger for non-access related log messages. // // If ErrorLogger is nil, DefaultErrorLogger is used. ErrorLogger *log.Logger // NotFoundHandler specifies optional handler for non-proxy requests. // // If NotFoundHandler is nil, http.NotFound handler used. NotFoundHandler http.Handler // Issuer specifies optional certificate issuer. // // If Issuer is nil, DefaultIssuer is used. Issuer Issuer // RequestTimeout is an optional timeout for any HTTP or CONNECT request to finish. It doesn't directly affect // CONNECT sub-requests. If not set, there's no timeout implied. RequestTimeout time.Duration // SubRequestTimeout is an optional timeout for CONNECT sub-requests. If not set, there's no timeout implied. SubRequestTimeout time.Duration // CertCacheSize specifies the size of issued certificates LRU cache. // // If CertCacheSize < 1, DefaultCertCacheSize is used. CertCacheSize int // DisableViaHeader controls addition of Via header as defined in https://tools.ietf.org/html/rfc2616#section-14.45 // // If disabled, the value of the header will pass through unchanged if present in the original request. DisableViaHeader bool // DisableXForwardedFor controls addition of Via header as described in // https://en.wikipedia.org/wiki/X-Forwarded-For // // If disabled, the value of the header will pass through unchanged if present in the original request. DisableXForwardedFor bool // Handle is a token the proxy use to identify itself in Via header. If not specified, hostname is used. If unable // to get the hostname, `mitmproxy` is used. Handle string // contains filtered or unexported fields }
Proxy defines parameters for running a MITM HTTP proxy. The zero value for Proxy is a valid configuration.
type SelfSignedCA ¶
type SelfSignedCA struct { // Cert is a cert chain used to sign newly issued certs. The cert's primary usage must be x509.KeyUsageCertSign // // If nil, a self-signed cert will be generated. Cert *tls.Certificate // BitSize defines bit size for issued certificate keys generation. // // If 0, DefaultIssuerBitSize will be used. BitSize int // RootBitSize defines bit size for self-signed root certificate key generation. // // If 0, DefaultIssuerRootBitSize will be used. RootBitSize int // Tmpl is a template for issued certificates. // // If nil, DefaultIssuerTmpl will be used. Tmpl *x509.Certificate // RootTmpl is a template for self-signed root certificate. // // If nil, DefaultIssuerRootTmpl will be used. RootTmpl *x509.Certificate // Rand is a source of randomness for generated certs. // // If nil, crypto/rand.Reader will be used. Rand io.Reader // contains filtered or unexported fields }
SelfSignedCA defines an Issuer. Zero value is a valid instance.
func (*SelfSignedCA) Issue ¶
func (ca *SelfSignedCA) Issue(cn string, dnsnames []string, ipaddresses []net.IP) (*tls.Certificate, error)
Issue implements Issuer interface