package org.cagrid.dorian.service.tools; import java.io.File; import java.io.FileOutputStream; import java.security.KeyStore; import java.security.cert.X509Certificate; import java.util.Properties; import org.cagrid.core.commandline.BaseCommandLine; import org.cagrid.dorian.service.Dorian; import org.globus.gsi.CertUtil; public class CreateTrustStore extends BaseCommandLine { private final static String PROPERTIES_FILE = "src/main/resources/host-certificate-request.properties"; private final static String ALIAS = "dorianca"; private final static char[] STORE_PASSWORD = "changeit".toCharArray(); private final static String TRUSTSTORE_PATH = "dorian-truststore.jks"; public CreateTrustStore(File propertiesFile) { super(propertiesFile); } public CreateTrustStore(Properties properties) { super(properties); } @Override public void execute() throws Exception { BootstrapperSpringUtils utils = new BootstrapperSpringUtils(); Dorian dorian = utils.getDorian(); X509Certificate certificate = dorian.getCACertificate(); KeyStore trustStore = KeyStore.getInstance("JKS"); trustStore.load(null, null); trustStore.setCertificateEntry(ALIAS, certificate); FileOutputStream truststoreStream = new FileOutputStream( TRUSTSTORE_PATH); trustStore.store(truststoreStream, STORE_PASSWORD); truststoreStream.close(); System.out.println("Trust store written to " + TRUSTSTORE_PATH); String certFile = certificate.getSerialNumber().toString() + ".pem"; FileOutputStream certStream = new FileOutputStream(certFile); CertUtil.writeCertificate(certStream, certificate); certStream.close(); System.out.println("Certificate written to " + certFile); } public static void main(String[] args) throws Exception { CreateTrustStore main = new CreateTrustStore(new File(PROPERTIES_FILE)); main.execute(); } }