Example usage for org.apache.http.ssl SSLContextBuilder loadKeyMaterial

List of usage examples for org.apache.http.ssl SSLContextBuilder loadKeyMaterial

Introduction

In this page you can find the example usage for org.apache.http.ssl SSLContextBuilder loadKeyMaterial.

Prototype

public SSLContextBuilder loadKeyMaterial(final URL url, final char[] storePassword, final char[] keyPassword)
            throws NoSuchAlgorithmException, KeyStoreException, UnrecoverableKeyException, CertificateException,
            IOException 

Source Link

Usage

From source file:io.apiman.gateway.platforms.servlet.connectors.ssl.SSLSessionStrategyFactory.java

private static SSLContextBuilder loadKeyMaterial(SSLContextBuilder builder, File file, char[] ksp, char[] kp,
        PrivateKeyStrategy privateKeyStrategy) throws NoSuchAlgorithmException, KeyStoreException,
        UnrecoverableKeyException, CertificateException, IOException {
    Args.notNull(file, "Keystore file"); //$NON-NLS-1$
    final KeyStore identityStore = KeyStore.getInstance(KeyStore.getDefaultType());
    final FileInputStream instream = new FileInputStream(file);
    try {/*w w  w  . ja va 2 s  . c  o m*/
        identityStore.load(instream, ksp);
    } finally {
        instream.close();
    }
    return builder.loadKeyMaterial(identityStore, kp, privateKeyStrategy);
}

From source file:io.confluent.rest.SslTest.java

private int makeGetRequest(String url, String clientKeystoreLocation, String clientKeystorePassword,
        String clientKeyPassword) throws Exception {
    log.debug("Making GET " + url);
    HttpGet httpget = new HttpGet(url);
    CloseableHttpClient httpclient;/*from  w  ww .j a va 2s .  co  m*/
    if (url.startsWith("http://")) {
        httpclient = HttpClients.createDefault();
    } else {
        // trust all self-signed certs.
        SSLContextBuilder sslContextBuilder = SSLContexts.custom()
                .loadTrustMaterial(new TrustSelfSignedStrategy());

        // add the client keystore if it's configured.
        if (clientKeystoreLocation != null) {
            sslContextBuilder.loadKeyMaterial(new File(clientKeystoreLocation),
                    clientKeystorePassword.toCharArray(), clientKeyPassword.toCharArray());
        }
        SSLContext sslContext = sslContextBuilder.build();

        SSLConnectionSocketFactory sslSf = new SSLConnectionSocketFactory(sslContext, new String[] { "TLSv1" },
                null, SSLConnectionSocketFactory.getDefaultHostnameVerifier());

        httpclient = HttpClients.custom().setSSLSocketFactory(sslSf).build();
    }

    int statusCode = -1;
    CloseableHttpResponse response = null;
    try {
        response = httpclient.execute(httpget);
        statusCode = response.getStatusLine().getStatusCode();
    } finally {
        if (response != null) {
            response.close();
        }
        httpclient.close();
    }
    return statusCode;
}

From source file:org.jodconverter.office.OnlineOfficeManagerPoolEntry.java

private void configureKeyMaterial(final SSLContextBuilder sslBuilder)
        throws UnrecoverableKeyException, NoSuchAlgorithmException, KeyStoreException, CertificateException,
        IOException, NoSuchProviderException {

    final KeyStore keystore = loadStore(sslConfig.getKeyStore(), sslConfig.getKeyStorePassword(),
            sslConfig.getKeyStoreType(), sslConfig.getKeyStoreProvider());
    if (keystore != null) {
        sslBuilder.loadKeyMaterial(keystore,
                sslConfig.getKeyPassword() != null ? sslConfig.getKeyPassword().toCharArray()
                        : sslConfig.getKeyStorePassword().toCharArray(),
                sslConfig.getKeyAlias() == null ? null : new SelectByAlias(sslConfig.getKeyAlias()));
    }//  ww w .  j a  va  2  s .c o m
}

From source file:org.commonjava.util.jhttpc.HttpFactory.java

private SSLConnectionSocketFactory createSSLSocketFactory(final SiteConfig location) throws JHttpCException {
    SSLConnectionSocketFactory fac = (SSLConnectionSocketFactory) location.getAttribute(SSL_FACTORY_ATTRIB);
    if (fac != null) {
        return fac;
    }/*from   ww w .j a  v a 2s.c  o m*/

    KeyStore ks = null;
    KeyStore ts = null;

    final String kcPem = location.getKeyCertPem();

    final String kcPass = passwords.lookup(new PasswordKey(location, PasswordType.KEY));
    if (kcPem != null) {
        logger.debug("Adding client key/certificate from: {}", location);
        if (kcPass == null || kcPass.length() < 1) {
            logger.error("Invalid configuration. Location: {} cannot have an empty key password!",
                    location.getUri());
            throw new JHttpCException(
                    "Location: " + location.getUri() + " is misconfigured! Key password cannot be empty.");
        }

        try {
            logger.trace("Reading Client SSL key from:\n\n{}\n\n", kcPem);
            ks = SSLUtils.readKeyAndCert(kcPem, kcPass);

            logger.trace("Keystore contains the following certificates: {}", new CertEnumerator(ks, kcPass));
        } catch (final CertificateException e) {
            logger.error(String.format(
                    "Invalid configuration. Location: %s has an invalid client certificate! Error: %s",
                    location.getUri(), e.getMessage()), e);
            throw new JHttpCException(
                    "Failed to initialize SSL connection for repository: " + location.getUri());
        } catch (final KeyStoreException e) {
            logger.error(String.format(
                    "Invalid configuration. Cannot initialize keystore for repository: %s. Error: %s",
                    location.getUri(), e.getMessage()), e);
            throw new JHttpCException(
                    "Failed to initialize SSL connection for repository: " + location.getUri());
        } catch (final NoSuchAlgorithmException e) {
            logger.error(String.format(
                    "Invalid configuration. Cannot initialize keystore for repository: %s. Error: %s",
                    location.getUri(), e.getMessage()), e);
            throw new JHttpCException(
                    "Failed to initialize SSL connection for repository: " + location.getUri());
        } catch (final InvalidKeySpecException e) {
            logger.error(
                    String.format("Invalid configuration. Invalid client key for repository: %s. Error: %s",
                            location.getUri(), e.getMessage()),
                    e);
            throw new JHttpCException(
                    "Failed to initialize SSL connection for repository: " + location.getUri());
        } catch (IOException e) {
            throw new JHttpCException("Failed to read client SSL key/certificate from: %s. Reason: %s", e,
                    location, e.getMessage());
        } catch (JHttpCException e) {
            throw new JHttpCException("Failed to read client SSL key/certificate from: %s. Reason: %s", e,
                    location, e.getMessage());
        }
    } else {
        logger.debug("No client key/certificate found");
    }

    final String sPem = location.getServerCertPem();

    //        logger.debug( "Server certificate PEM:\n{}", sPem );
    if (sPem != null) {
        logger.debug("Loading TrustStore (server SSL) information from: {}", location);
        try {
            logger.trace("Reading Server SSL cert from:\n\n{}\n\n", sPem);
            ts = SSLUtils.decodePEMTrustStore(sPem, location.getHost());

            logger.trace("Trust store contains the following certificates:\n{}", new CertEnumerator(ts, null));
        } catch (final CertificateException e) {
            logger.error(String.format(
                    "Invalid configuration. Location: %s has an invalid server certificate! Error: %s",
                    location.getUri(), e.getMessage()), e);
            throw new JHttpCException(
                    "Failed to initialize SSL connection for repository: " + location.getUri());
        } catch (final KeyStoreException e) {
            logger.error(String.format(
                    "Invalid configuration. Cannot initialize keystore for repository: %s. Error: %s",
                    location.getUri(), e.getMessage()), e);
            throw new JHttpCException(
                    "Failed to initialize SSL connection for repository: " + location.getUri());
        } catch (final NoSuchAlgorithmException e) {
            logger.error(String.format(
                    "Invalid configuration. Cannot initialize keystore for repository: %s. Error: %s",
                    location.getUri(), e.getMessage()), e);
            throw new JHttpCException(
                    "Failed to initialize SSL connection for repository: " + location.getUri());
        } catch (IOException e) {
            throw new JHttpCException(
                    "Failed to read server SSL certificate(s) (or couldn't parse server hostname) from: %s. Reason: %s",
                    e, location, e.getMessage());
        }
    } else {
        logger.debug("No server certificates found");
    }

    if (ks != null || ts != null) {
        logger.debug("Setting up SSL context.");
        try {
            SSLContextBuilder sslBuilder = SSLContexts.custom().useProtocol(SSLConnectionSocketFactory.TLS);
            if (ks != null) {
                logger.trace("Loading key material for SSL context...");
                PrivateKeyStrategy pkStrategy = new MonolithicKeyStrategy();
                sslBuilder.loadKeyMaterial(ks, kcPass.toCharArray(), pkStrategy);
            }

            if (ts != null) {
                logger.trace("Loading trust material for SSL context...");

                SiteTrustType trustType = location.getTrustType();
                if (trustType == null) {
                    trustType = SiteTrustType.DEFAULT;
                }

                sslBuilder.loadTrustMaterial(ts, trustType.getTrustStrategy());
            }

            SSLContext ctx = sslBuilder.build();

            fac = new SSLConnectionSocketFactory(ctx, new DefaultHostnameVerifier());
            location.setAttribute(SSL_FACTORY_ATTRIB, fac);
            return fac;
        } catch (final KeyManagementException e) {
            logger.error(
                    "Invalid configuration. Cannot initialize SSL socket factory for repository: {}. Error: {}",
                    e, location.getUri(), e.getMessage());
            throw new JHttpCException(
                    "Failed to initialize SSL connection for repository: " + location.getUri());
        } catch (final UnrecoverableKeyException e) {
            logger.error(
                    "Invalid configuration. Cannot initialize SSL socket factory for repository: {}. Error: {}",
                    e, location.getUri(), e.getMessage());
            throw new JHttpCException(
                    "Failed to initialize SSL connection for repository: " + location.getUri());
        } catch (final NoSuchAlgorithmException e) {
            logger.error(
                    "Invalid configuration. Cannot initialize SSL socket factory for repository: {}. Error: {}",
                    e, location.getUri(), e.getMessage());
            throw new JHttpCException(
                    "Failed to initialize SSL connection for repository: " + location.getUri());
        } catch (final KeyStoreException e) {
            logger.error(
                    "Invalid configuration. Cannot initialize SSL socket factory for repository: {}. Error: {}",
                    e, location.getUri(), e.getMessage());
            throw new JHttpCException(
                    "Failed to initialize SSL connection for repository: " + location.getUri());
        }
    } else {
        logger.debug("No SSL configuration present; no SSL context created.");
    }

    return null;
}

From source file:org.apache.geode.rest.internal.web.controllers.RestAPIsWithSSLDUnitTest.java

private CloseableHttpClient getSSLBasedHTTPClient(Properties properties) throws Exception {

    KeyStore clientKeys = KeyStore.getInstance("JKS");
    File keystoreJKSForPath = findKeyStoreJKS(properties);
    clientKeys.load(new FileInputStream(keystoreJKSForPath), "password".toCharArray());

    KeyStore clientTrust = KeyStore.getInstance("JKS");
    File trustStoreJKSForPath = findTrustStoreJKSForPath(properties);
    clientTrust.load(new FileInputStream(trustStoreJKSForPath), "password".toCharArray());

    // this is needed
    SSLContextBuilder custom = SSLContexts.custom();
    SSLContextBuilder sslContextBuilder = custom.loadTrustMaterial(clientTrust, new TrustSelfSignedStrategy());
    SSLContext sslcontext = sslContextBuilder
            .loadKeyMaterial(clientKeys, "password".toCharArray(), (aliases, socket) -> {
                if (aliases.size() == 1) {
                    return aliases.keySet().stream().findFirst().get();
                }/* w  ww .  j a v  a  2s .  c  o m*/
                if (!StringUtils.isEmpty(properties.getProperty(INVALID_CLIENT_ALIAS))) {
                    return properties.getProperty(INVALID_CLIENT_ALIAS);
                } else {
                    return properties.getProperty(SSL_WEB_ALIAS);
                }
            }).build();

    // Host checking is disabled here , as tests might run on multiple hosts and
    // host entries can not be assumed
    SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslcontext,
            SSLConnectionSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);

    return HttpClients.custom().setSSLSocketFactory(sslConnectionSocketFactory).build();
}

From source file:org.apache.camel.component.etcd.EtcdEndpoint.java

@Override
protected void doStart() throws Exception {
    if ((configuration.getTrustSelfsigned() == true) || (configuration.getCaFile() != null)
            || (configuration.getKeyFile() != null)) {
        // Need to create a custom httpclient since we need to change the SSL information.
        SSLContextBuilder builder = new SSLContextBuilder();
        if (configuration.getTrustSelfsigned() == true) {
            // Don't need to look at the CA file since we are going to trust anyhow.
            final TrustStrategy acceptingTrustStrategy = new TrustStrategy() {
                @Override//from   w ww .ja  v  a 2  s . com
                public boolean isTrusted(X509Certificate[] certificate, String authType) {
                    return true;
                }
            };
            builder.loadTrustMaterial(acceptingTrustStrategy);
        } else {
            if (configuration.getCaFile() != null) {
                builder.loadTrustMaterial(new File(configuration.getCaFile()));
            }
        }
        // Now check if there are any private keys.
        if (configuration.getKeyFile() != null) {
            builder.loadKeyMaterial(new File(configuration.getKeyFile()), null, null);
        }
        //SSLSocketFactory socketfactory = SSLSocketFactory(builder.build());
        final CloseableHttpAsyncClient httpClient = HttpAsyncClients.custom().setSSLContext(builder.build())
                .build();
        etcdClient = new EtcdClient(configuration.makeURI());
    } else {
        etcdClient = new EtcdClient(configuration.makeURI());
    }
}

From source file:com.ibm.og.client.ApacheClient.java

private void configureKeyStores(final SSLContextBuilder builder) {
    if (this.keyStore != null) {
        try {/* ww  w . ja v a2s  .  c om*/
            final char[] storePassword = this.keyStorePassword.toCharArray();
            final char[] keyPassword = this.keyPassword.toCharArray();
            builder.loadKeyMaterial(this.keyStore, storePassword, keyPassword);
        } catch (final Exception e) {
            throw new RuntimeException(e);
        }
    }
}