Package com.browserup.bup.mitm.manager
Class ImpersonatingMitmManager.Builder
- java.lang.Object
-
- com.browserup.bup.mitm.manager.ImpersonatingMitmManager.Builder
-
- Enclosing class:
- ImpersonatingMitmManager
public static class ImpersonatingMitmManager.Builder extends java.lang.ObjectA Builder forImpersonatingMitmManagers. Initialized with suitable default values suitable for most purposes.
-
-
Constructor Summary
Constructors Constructor Description Builder()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description ImpersonatingMitmManagerbuild()ImpersonatingMitmManager.BuildercacheConcurrencyLevel(int cacheConcurrencyLevel)The concurrency level for the SSLContext cache.ImpersonatingMitmManager.BuildercacheExpirationInterval(long cacheExpirationInterval, java.util.concurrent.TimeUnit timeUnit)The length of time SSLContexts with forged certificates will be kept in the cache.ImpersonatingMitmManager.BuildercertificateInfoGenerator(CertificateInfoGenerator certificateInfoGenerator)TheCertificateInfoGeneratorthat will populateCertificateInfoobjects containing certificate data for forced X509Certificates.ImpersonatingMitmManager.BuildercertificateTool(SecurityProviderTool securityProviderTool)TheSecurityProviderToolimplementation that will be used to generate certificates.ImpersonatingMitmManager.BuilderclientCiphers(java.util.Collection<java.lang.String> clientCiphers)The cipher suites allowed on client connections to the proxy.ImpersonatingMitmManager.BuilderrootCertificateSource(CertificateAndKeySource certificateAndKeySource)The source of the CA root certificate that will be used to sign the impersonated server certificates.ImpersonatingMitmManager.BuilderserverCiphers(java.util.Collection<java.lang.String> serverCiphers)The cipher suites allowed on connections to upstream servers.ImpersonatingMitmManager.BuilderserverKeyGenerator(KeyGenerator serverKeyGenerator)TheKeyGeneratorthat will be used to generate the server public and private keys.ImpersonatingMitmManager.BuilderserverMessageDigest(java.lang.String serverMessageDigest)The message digest that will be used when signing server certificates with the root certificate's private key.ImpersonatingMitmManager.BuildertrustAllServers(boolean trustAllServers)When true, no upstream certificate verification will be performed.ImpersonatingMitmManager.BuildertrustSource(TrustSource trustSource)The TrustSource that supplies the trusted root CAs used to validate upstream servers' certificates.
-
-
-
Method Detail
-
rootCertificateSource
public ImpersonatingMitmManager.Builder rootCertificateSource(CertificateAndKeySource certificateAndKeySource)
The source of the CA root certificate that will be used to sign the impersonated server certificates. Custom certificates can be used by supplying an implementation ofCertificateAndKeySource, such asPemFileCertificateSource. Alternatively, a new root certificate can be generated and saved (for later import into browsers) usingRootCertificateGenerator.- Parameters:
certificateAndKeySource- impersonation materials source to use- Returns:
- Builder
-
serverMessageDigest
public ImpersonatingMitmManager.Builder serverMessageDigest(java.lang.String serverMessageDigest)
The message digest that will be used when signing server certificates with the root certificate's private key.- Parameters:
serverMessageDigest- serverMessageDigest- Returns:
- Builder
-
trustAllServers
public ImpersonatingMitmManager.Builder trustAllServers(boolean trustAllServers)
When true, no upstream certificate verification will be performed. This will make it possible for attackers to MITM communications with the upstream server, so use trustAllServers only when testing. Calling this method with 'true' will remove any trustSource set withtrustSource(TrustSource). Calling this method with 'false' has no effect unless trustAllServers was previously called with 'true'. To set a specific TrustSource, usetrustSource(TrustSource).- Parameters:
trustAllServers- trustAllServers- Returns:
- Builder
-
trustSource
public ImpersonatingMitmManager.Builder trustSource(TrustSource trustSource)
The TrustSource that supplies the trusted root CAs used to validate upstream servers' certificates.- Parameters:
trustSource- trustSource- Returns:
- Builder
-
serverKeyGenerator
public ImpersonatingMitmManager.Builder serverKeyGenerator(KeyGenerator serverKeyGenerator)
TheKeyGeneratorthat will be used to generate the server public and private keys.- Parameters:
serverKeyGenerator- serverKeyGenerator- Returns:
- Builder
-
cacheConcurrencyLevel
public ImpersonatingMitmManager.Builder cacheConcurrencyLevel(int cacheConcurrencyLevel)
The concurrency level for the SSLContext cache. Increase this beyond the default value for high-volume proxy servers.- Parameters:
cacheConcurrencyLevel- cacheConcurrencyLevel- Returns:
- Builder
-
cacheExpirationInterval
public ImpersonatingMitmManager.Builder cacheExpirationInterval(long cacheExpirationInterval, java.util.concurrent.TimeUnit timeUnit)
The length of time SSLContexts with forged certificates will be kept in the cache.- Parameters:
cacheExpirationInterval- cacheExpirationIntervaltimeUnit- timeUnit- Returns:
- Builder
-
certificateInfoGenerator
public ImpersonatingMitmManager.Builder certificateInfoGenerator(CertificateInfoGenerator certificateInfoGenerator)
TheCertificateInfoGeneratorthat will populateCertificateInfoobjects containing certificate data for forced X509Certificates.- Parameters:
certificateInfoGenerator- certificateInfoGenerator- Returns:
- Builder
-
serverCiphers
public ImpersonatingMitmManager.Builder serverCiphers(java.util.Collection<java.lang.String> serverCiphers)
The cipher suites allowed on connections to upstream servers. Cipher suite names should be specified in Java format, rather than OpenSSL format (e.g., TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384), even when using OpenSSL. Ciphers will be preferred in the order they are returned by the collection's iterator.- Parameters:
serverCiphers- serverCiphers- Returns:
- Builder
-
clientCiphers
public ImpersonatingMitmManager.Builder clientCiphers(java.util.Collection<java.lang.String> clientCiphers)
The cipher suites allowed on client connections to the proxy. Cipher suite names should be specified in Java format, rather than OpenSSL format (e.g., TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384), even when using OpenSSL. Ciphers will be preferred in the order they are returned by the collection's iterator.- Parameters:
clientCiphers- clientCiphers- Returns:
- Builder
-
certificateTool
public ImpersonatingMitmManager.Builder certificateTool(SecurityProviderTool securityProviderTool)
TheSecurityProviderToolimplementation that will be used to generate certificates.- Parameters:
securityProviderTool- securityProviderTool- Returns:
- Builder
-
build
public ImpersonatingMitmManager build()
-
-