Secure Socket
Purpose¶
Build and create secure socket configurations of the Apache Http Client http://hc.apache.org/httpcomponents-client-4.5.x/tutorial/html/index.html
Methods¶
Binding name: p6.securesocket
Method: SecureContextBuilder contextBuilder()
Creates a new SecureContextBuilder that can be used to build a SecureContext that is used to obtain a CloseableHttpClient or an HttpClientBuilder
SecureContextBuilder
- setType( SecureContext.BundleType type )
- See below.
- setStrict( boolean strict )
- true to enable strict hostname validation (otherwise no hostname verification will be performed)
- setTrustSelfSigned( boolean trustSelfSigned )
- true to accept self signed server certificates
- setIdentityPrivateKeyPath( String identityPrivateKeyPath )
- The path or URI to PEM formatted private key to read and build into a client identity store
- setIdentityCertsPaths( List identityCertsPaths )
- A List of paths or URIs to PEM formatted certificate bundles to read and build into a client identity store
- setIdentityCertsPaths( String csvIdentityCertsPaths )
- A comma separated list of paths or URIs to PEM formatted certificate bundles to read and build into a client identity store
- setTrustCertsPaths( List trustCertsPaths )
- A List of paths or URIs to PEM formatted certificate bundles to read and build into a trust store
SecureContext.BundleType
- ONE_WAY
- Only the client validates the server to ensure that it receives data from the intended server
- TWO_WAY
- Both client and server authenticate each other to ensure that both parties involved in the communication are trusted
- ONE_WAY_TRUST_ANY (default)
- As ONE_WAY except that ANY server connection is trusted
- TWO_WAY_TRUST_ANY
- As TWO_WAY except that ANY server connection is trusted
Method: CloseableHttpClient clientBuild( SecureContext secureContext )
Given a context built by the SecureContextBuilder
an Apache HttpClient is created with a correctly defined https connection factory.
Method: HttpClientBuilder clientBuilder( SecureContext secureContext )
Given a context built by the SecureContextBuilder
an Apache HttpClientBuilder is created with a correctly defined https connection factory.
Access to the ‘builder’ allows the user to further enhance the behaviour of the HttpClient built
Examples¶
import org.apache.http.client.methods.HttpGet def httpClient = securesocket.clientBuild( p6.securesocket.contextBuilder().build() ) def getMethod = new HttpGet( "https://www.amalto.com" ) def response = httpClient.execute( getMethod )
import org.apache.http.client.methods.HttpGet import org.apache.http.client.config.RequestConfig def ctx = p6.securesocket.contextBuilder().setType( SecureContext.BundleType.ONE_WAY ).build(); def cb = p6.securesocket.clientBuilder( ctx ); def timeout = 60 def config = RequestConfig.custom() .setConnectTimeout( timeout * 1000 ) .setConnectionRequestTimeout( timeout * 1000 ) .setSocketTimeout( timeout * 1000 ) .build() def httpClient = cb .disableAuthCaching() .disableAutomaticRetries() .disableCookieManagement() .setDefaultRequestConfig( config ) .build() def getMethod = new HttpGet( "https://www.amalto.com" ) def response = httpClient.execute( getMethod )
import org.apache.http.client.methods.HttpPost import org.apache.http.client.config.RequestConfig def ctx = p6.securesocket.contextBuilder() .setType( SecureContext.BundleType.TWO_WAY_TRUST_ANY ) .setIdentityPrivateKeyPath( "file://${P6_DATA}/resources/certificates/privatekey.pem" ) .setIdentityCertsPaths( "file://${P6_DATA}/resources/certificates/publickey.pem" ) .build(); p6.securesocket.clientBuild( ctx ).withCloseable { client -> def response = client.execute( new HttpPost( "https://httpbin.org/post" ) ) }