Author: indika Date: Mon May 11 22:52:45 2009 New Revision: 35529 URL: http://wso2.org/svn/browse/wso2?view=rev&revision=35529
Log: remove password provider from secret manager add password providers for keystore configurations update property file and document Modified: branches/synapse/1.3-wso2v1/modules/core/src/main/java/org/apache/synapse/security/definition/IdentityKeyStoreInformation.java branches/synapse/1.3-wso2v1/modules/core/src/main/java/org/apache/synapse/security/definition/KeyStoreInformation.java branches/synapse/1.3-wso2v1/modules/core/src/main/java/org/apache/synapse/security/definition/factory/KeyStoreInformationFactory.java branches/synapse/1.3-wso2v1/modules/core/src/main/java/org/apache/synapse/security/secret/SecretManager.java branches/synapse/1.3-wso2v1/modules/core/src/main/java/org/apache/synapse/security/tool/CipherTool.java branches/synapse/1.3-wso2v1/repository/conf/synapse.properties branches/synapse/1.3-wso2v1/src/site/xdoc/Synapse_Samples_Setup.xml Modified: branches/synapse/1.3-wso2v1/modules/core/src/main/java/org/apache/synapse/security/definition/IdentityKeyStoreInformation.java URL: http://wso2.org/svn/browse/wso2/branches/synapse/1.3-wso2v1/modules/core/src/main/java/org/apache/synapse/security/definition/IdentityKeyStoreInformation.java?rev=35529&r1=35528&r2=35529&view=diff ============================================================================== --- branches/synapse/1.3-wso2v1/modules/core/src/main/java/org/apache/synapse/security/definition/IdentityKeyStoreInformation.java (original) +++ branches/synapse/1.3-wso2v1/modules/core/src/main/java/org/apache/synapse/security/definition/IdentityKeyStoreInformation.java Mon May 11 22:52:45 2009 @@ -18,6 +18,8 @@ */ package org.apache.synapse.security.definition; +import org.apache.synapse.commons.util.secret.SecretInformation; + import javax.net.ssl.KeyManagerFactory; import java.security.KeyStore; @@ -27,10 +29,10 @@ public class IdentityKeyStoreInformation extends KeyStoreInformation { /* Password for access private key*/ - private String keyPassword; + private SecretInformation keyPasswordProvider; - public void setKeyPassword(String keyPassword) { - this.keyPassword = keyPassword; + public void setKeyPasswordProvider(SecretInformation keyPasswordProvider) { + this.keyPasswordProvider = keyPasswordProvider; } /** @@ -48,7 +50,7 @@ KeyStore keyStore = this.getIdentityKeyStore(); KeyManagerFactory keyManagerFactory = KeyManagerFactory.getInstance( KeyManagerFactory.getDefaultAlgorithm()); - keyManagerFactory.init(keyStore, keyPassword.toCharArray()); + keyManagerFactory.init(keyStore, keyPasswordProvider.getResolvedPassword().toCharArray()); return keyManagerFactory; } catch (Exception e) { @@ -67,4 +69,7 @@ return super.getKeyStore(); } + public SecretInformation getKeyPasswordProvider() { + return keyPasswordProvider; + } } Modified: branches/synapse/1.3-wso2v1/modules/core/src/main/java/org/apache/synapse/security/definition/KeyStoreInformation.java URL: http://wso2.org/svn/browse/wso2/branches/synapse/1.3-wso2v1/modules/core/src/main/java/org/apache/synapse/security/definition/KeyStoreInformation.java?rev=35529&r1=35528&r2=35529&view=diff ============================================================================== --- branches/synapse/1.3-wso2v1/modules/core/src/main/java/org/apache/synapse/security/definition/KeyStoreInformation.java (original) +++ branches/synapse/1.3-wso2v1/modules/core/src/main/java/org/apache/synapse/security/definition/KeyStoreInformation.java Mon May 11 22:52:45 2009 @@ -21,6 +21,7 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.synapse.SynapseException; +import org.apache.synapse.commons.util.secret.SecretInformation; import org.apache.synapse.security.enumeration.KeyStoreType; import org.apache.synapse.security.interfaces.ICACertsLoader; import org.apache.synapse.security.interfaces.IKeyStoreLoader; @@ -49,7 +50,7 @@ /* KeyStore location */ private String location; /* KeyStore Password to unlock KeyStore */ - private String keyStorePassword; + private SecretInformation keyStorePasswordProvider; /* KeyStore provider */ private String provider; @@ -97,8 +98,8 @@ this.provider = provider; } - public void setKeyStorePassword(String keyStorePassword) { - this.keyStorePassword = keyStorePassword; + public void setKeyStorePasswordProvider(SecretInformation keyStorePasswordProvider) { + this.keyStorePasswordProvider = keyStorePasswordProvider; } public void addParameter(String name, String value) { @@ -119,7 +120,7 @@ if (log.isDebugEnabled()) { log.debug("Loading KeyStore with type : " + storeType); } - + String keyStorePassword = this.keyStorePasswordProvider.getResolvedPassword(); switch (storeType) { case JKS: IKeyStoreLoader jksKeyStoreLoader = new JKSKeyStoreLoader(location, @@ -156,4 +157,7 @@ throw new SynapseException(msg, e); } + public SecretInformation getKeyStorePasswordProvider() { + return keyStorePasswordProvider; + } } Modified: branches/synapse/1.3-wso2v1/modules/core/src/main/java/org/apache/synapse/security/definition/factory/KeyStoreInformationFactory.java URL: http://wso2.org/svn/browse/wso2/branches/synapse/1.3-wso2v1/modules/core/src/main/java/org/apache/synapse/security/definition/factory/KeyStoreInformationFactory.java?rev=35529&r1=35528&r2=35529&view=diff ============================================================================== --- branches/synapse/1.3-wso2v1/modules/core/src/main/java/org/apache/synapse/security/definition/factory/KeyStoreInformationFactory.java (original) +++ branches/synapse/1.3-wso2v1/modules/core/src/main/java/org/apache/synapse/security/definition/factory/KeyStoreInformationFactory.java Mon May 11 22:52:45 2009 @@ -24,6 +24,7 @@ import org.apache.synapse.security.definition.KeyStoreInformation; import org.apache.synapse.security.definition.TrustKeyStoreInformation; import org.apache.synapse.commons.util.MiscellaneousUtil; +import org.apache.synapse.commons.util.secret.SecretInformationFactory; import java.util.Properties; @@ -41,9 +42,9 @@ /* Alias for private key entry KeyStore */ private final static String IDENTITY_KEY_STORE_ALIAS = "keystore.identity.alias"; /* Password for access keyStore*/ - private final static String IDENTITY_KEY_STORE_PASSWORD = "keystore.identity.storePassword"; + private final static String IDENTITY_KEY_STORE_PASSWORD = "keystore.identity.store"; /* Password for get private key*/ - private final static String IDENTITY_KEY_PASSWORD = "keystore.identity.keyPassword"; + private final static String IDENTITY_KEY_PASSWORD = "keystore.identity.key"; private final static String KEY_STORE_PARAMETERS = "keystore.identity.parameters"; @@ -54,9 +55,20 @@ /* Alias for certificate KeyStore */ private final static String TRUST_STORE_ALIAS = "keystore.trust.alias"; /* Password for access TrustStore*/ - private final static String TRUST_STORE_PASSWORD = "keystore.trust.storePassword"; + private final static String TRUST_STORE_PASSWORD = "keystore.trust.store"; private final static String TRUST_STORE_PARAMETERS = "keystore.trust.parameters"; + /* Dot string */ + private final static String DOT = "."; + /* Property key password provider */ + private final static String PROP_PASSWORD_PROVIDER = "passwordProvider"; + /* Prompt for trust store password*/ + private final static String TRUSTSTORE_PASSWORD_PROMPT = "Trust Store Password > "; + /* Prompt for identity store password*/ + private final static String IDENTITYSTORE_PASSWORD_PROMPT = "Identity Store Password > "; + /* Prompt for identity store private key password*/ + private final static String IDENTITYSTORE_PRIVATE_KEY_PASSWORD_PROMPT + = "Identity Store Private Key Password > "; /** * Creates a KeyStoreInformation using synapse properties @@ -84,12 +96,17 @@ keyStoreInformation.setStoreType( MiscellaneousUtil.getProperty(properties, IDENTITY_KEY_STORE_TYPE, null)); - keyStoreInformation.setKeyStorePassword( - MiscellaneousUtil.getProperty( - properties, IDENTITY_KEY_STORE_PASSWORD, null)); - keyStoreInformation.setKeyPassword( - MiscellaneousUtil.getProperty( - properties, IDENTITY_KEY_PASSWORD, null)); + + keyStoreInformation.setKeyStorePasswordProvider( + SecretInformationFactory.createSecretInformation(properties, + IDENTITY_KEY_STORE_PASSWORD + DOT, + IDENTITYSTORE_PASSWORD_PROMPT)); + + keyStoreInformation.setKeyPasswordProvider( + SecretInformationFactory.createSecretInformation( + properties, IDENTITY_KEY_PASSWORD + DOT, + IDENTITYSTORE_PRIVATE_KEY_PASSWORD_PROMPT)); + String parameterString = MiscellaneousUtil.getProperty( properties, KEY_STORE_PARAMETERS, null); @@ -124,8 +141,11 @@ trustInformation.setStoreType( MiscellaneousUtil.getProperty(properties, TRUST_STORE_TYPE, null)); - trustInformation.setKeyStorePassword( - MiscellaneousUtil.getProperty(properties, TRUST_STORE_PASSWORD, null)); + + trustInformation.setKeyStorePasswordProvider( + SecretInformationFactory.createSecretInformation( + properties, TRUST_STORE_PASSWORD + DOT, TRUSTSTORE_PASSWORD_PROMPT)); + String parameterString = MiscellaneousUtil.getProperty( properties, TRUST_STORE_PARAMETERS, null); Modified: branches/synapse/1.3-wso2v1/modules/core/src/main/java/org/apache/synapse/security/secret/SecretManager.java URL: http://wso2.org/svn/browse/wso2/branches/synapse/1.3-wso2v1/modules/core/src/main/java/org/apache/synapse/security/secret/SecretManager.java?rev=35529&r1=35528&r2=35529&view=diff ============================================================================== --- branches/synapse/1.3-wso2v1/modules/core/src/main/java/org/apache/synapse/security/secret/SecretManager.java (original) +++ branches/synapse/1.3-wso2v1/modules/core/src/main/java/org/apache/synapse/security/secret/SecretManager.java Mon May 11 22:52:45 2009 @@ -8,7 +8,6 @@ import org.apache.synapse.SynapseException; import org.apache.synapse.commons.util.MiscellaneousUtil; import org.apache.synapse.commons.util.jmx.MBeanRegistrar; -import org.apache.synapse.commons.util.secret.*; import org.apache.synapse.security.definition.IdentityKeyStoreInformation; import org.apache.synapse.security.definition.TrustKeyStoreInformation; import org.apache.synapse.security.definition.factory.KeyStoreInformationFactory; @@ -35,24 +34,6 @@ private final static String PROP_SECRET_REPOSITORIES = "secretRepositories"; /* Type of the secret repository */ private final static String PROP_PROVIDER = "provider"; - /* Property key secret manager */ - private final static String PROP_SECRET_MANAGER = "secretManager"; - /* Property key password provider */ - private final static String PROP_PASSWORD_PROVIDER = "passwordProvider"; - /* Prompt for trust store password*/ - private final static String TRUSTSTORE_PASSWORD_PROMPT = "Trust Store Password > "; - /* Prompt for identity store password*/ - private final static String IDENTITYSTORE_PASSWORD_PROMPT = "Identity Store Password > "; - /* Prompt for identity store private key password*/ - private final static String IDENTITYSTORE_PRIVATE_KEY_PASSWORD_PROMPT - = "Identity Store Private Key Password > "; - /* ID for trust store password*/ - private final static String TRUSTSTORE_PASSWORD_ID = "trust.store.pass"; - /* ID for identity store password*/ - private final static String IDENTITYSTORE_PASSWORD_ID = "identity.store.pass"; - /* ID for identity store private key password*/ - private final static String IDENTITYSTORE_PRIVATE_KEY_PASSWORD_ID - = "identity.key.pass"; /* Dot string */ private final static String DOT = "."; @@ -121,52 +102,22 @@ return; } - SecretCallbackHandler secretCallbackHandler = - SecretCallbackHandlerFactory.createSecretCallbackHandler(properties, - PROP_SECRET_MANAGER + DOT + PROP_PASSWORD_PROVIDER); - if (secretCallbackHandler == null) { - if (log.isDebugEnabled()) { - log.debug("Unable to find a SecretCallbackHandler and so " + - " cannot get passwords required for " + - "root level secret repositories - trust store password or identity " + - "store password and it's private key password"); - } - return; - } + //Create a KeyStore Information for private key entry KeyStore + IdentityKeyStoreInformation identityInformation = + KeyStoreInformationFactory.createIdentityKeyStoreInformation(properties); + + // Create a KeyStore Information for trusted certificate KeyStore + TrustKeyStoreInformation trustInformation = + KeyStoreInformationFactory.createTrustKeyStoreInformation(properties); + - String identityStorePass; - String identityKeyPass; - String trustStorePass; - - // Creating required password class backs - SingleSecretCallback trustStorePassSecretCallback - = new SingleSecretCallback(TRUSTSTORE_PASSWORD_PROMPT, - TRUSTSTORE_PASSWORD_ID); - SingleSecretCallback identityStorePassSecretCallback - = new SingleSecretCallback(IDENTITYSTORE_PASSWORD_PROMPT, - IDENTITYSTORE_PASSWORD_ID); - SingleSecretCallback identityKeyPassSecretCallback - = new SingleSecretCallback(IDENTITYSTORE_PRIVATE_KEY_PASSWORD_PROMPT, - IDENTITYSTORE_PRIVATE_KEY_PASSWORD_ID); - - // Group all as a one callback - MultiSecretCallback callback = new MultiSecretCallback(); - callback.addSecretCallback(trustStorePassSecretCallback); - callback.addSecretCallback(identityStorePassSecretCallback); - callback.addSecretCallback(identityKeyPassSecretCallback); - SecretCallback[] secretCallbacks = new SecretCallback[]{callback}; - - // Create and initiating SecretLoadingModule - SecretLoadingModule secretLoadingModule = new SecretLoadingModule(); - secretLoadingModule.init(new SecretCallbackHandler[]{secretCallbackHandler}); - - //load passwords - secretLoadingModule.load(secretCallbacks); - - identityKeyPass = identityKeyPassSecretCallback.getSecret(); - identityStorePass = identityStorePassSecretCallback.getSecret(); - trustStorePass = trustStorePassSecretCallback.getSecret(); + String identityKeyPass = identityInformation + .getKeyPasswordProvider().getResolvedPassword(); + String identityStorePass = identityInformation + .getKeyStorePasswordProvider().getResolvedPassword(); + String trustStorePass = trustInformation + .getKeyStorePasswordProvider().getResolvedPassword(); if (!validatePasswords(identityStorePass, identityKeyPass, trustStorePass)) { if (log.isDebugEnabled()) { @@ -176,18 +127,8 @@ return; } - //Create a KeyStore Information for private key entry KeyStore - IdentityKeyStoreInformation keyStoreInformation = - KeyStoreInformationFactory.createIdentityKeyStoreInformation(properties); - keyStoreInformation.setKeyStorePassword(identityStorePass); - - // Create a KeyStore Information for trusted certificate KeyStore - TrustKeyStoreInformation trustInformation = - KeyStoreInformationFactory.createTrustKeyStoreInformation(properties); - trustInformation.setKeyStorePassword(trustStorePass); - IdentityKeyStoreWrapper identityKeyStoreWrapper = new IdentityKeyStoreWrapper(); - identityKeyStoreWrapper.init(keyStoreInformation, identityKeyPass); + identityKeyStoreWrapper.init(identityInformation, identityKeyPass); TrustKeyStoreWrapper trustKeyStoreWrapper = new TrustKeyStoreWrapper(); trustKeyStoreWrapper.init(trustInformation); @@ -303,4 +244,4 @@ } return isValid; } -} \ No newline at end of file +} Modified: branches/synapse/1.3-wso2v1/modules/core/src/main/java/org/apache/synapse/security/tool/CipherTool.java URL: http://wso2.org/svn/browse/wso2/branches/synapse/1.3-wso2v1/modules/core/src/main/java/org/apache/synapse/security/tool/CipherTool.java?rev=35529&r1=35528&r2=35529&view=diff ============================================================================== --- branches/synapse/1.3-wso2v1/modules/core/src/main/java/org/apache/synapse/security/tool/CipherTool.java (original) +++ branches/synapse/1.3-wso2v1/modules/core/src/main/java/org/apache/synapse/security/tool/CipherTool.java Mon May 11 22:52:45 2009 @@ -22,6 +22,7 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.synapse.SynapseException; +import org.apache.synapse.commons.util.secret.SecretInformation; import org.apache.synapse.security.definition.CipherInformation; import org.apache.synapse.security.definition.IdentityKeyStoreInformation; import org.apache.synapse.security.definition.TrustKeyStoreInformation; @@ -278,7 +279,9 @@ information.setStoreType(getArgument(cmd, STORE_TYPE, KeyStoreType.JKS.toString())); String storePass = getArgument(cmd, STORE_PASS, null); assertEmpty(storePass, STORE_PASS); - information.setKeyStorePassword(storePass); + SecretInformation secretInformation = new SecretInformation(); + secretInformation.setAliasPassword(storePass); + information.setKeyStorePasswordProvider(secretInformation); return information; } @@ -299,7 +302,9 @@ information.setStoreType(getArgument(cmd, STORE_TYPE, KeyStoreType.JKS.toString())); String storePass = getArgument(cmd, STORE_PASS, null); assertEmpty(storePass, STORE_PASS); - information.setKeyStorePassword(storePass); + SecretInformation secretInformation = new SecretInformation(); + secretInformation.setAliasPassword(storePass); + information.setKeyStorePasswordProvider(secretInformation); return information; } Modified: branches/synapse/1.3-wso2v1/repository/conf/synapse.properties URL: http://wso2.org/svn/browse/wso2/branches/synapse/1.3-wso2v1/repository/conf/synapse.properties?rev=35529&r1=35528&r2=35529&view=diff ============================================================================== --- branches/synapse/1.3-wso2v1/repository/conf/synapse.properties (original) +++ branches/synapse/1.3-wso2v1/repository/conf/synapse.properties Mon May 11 22:52:45 2009 @@ -47,7 +47,6 @@ #synapse.passwordProvider=org.apache.synapse.security.secret.handler.JlineSecretCallbackHandler #synapse.passwordProvider=org.apache.synapse.security.secret.handler.JBossEncryptionSecretCallbackHandler # -#secretManager.passwordProvider=<any implementation of org.apache.synapse.commons.util.secret.SecretCallbackHandler> #secretRepositories=file #secretRepositories.file.provider=org.apache.synapse.security.secret.repository.filebased.FileBaseSecretRepositoryProvider #secretRepositories.file.location=cipher-text.properties @@ -55,15 +54,17 @@ #keystore.identity.location=lib/identity.jks #keystore.identity.type=JKS #keystore.identity.alias=synapse -#keystore.identity.storePassword=password -#keystore.identity.keyPassword=password -#keystore.identity.parameters=enableHostnameVerifier=false;keyStoreCertificateFilePath=/home/esb.cer +#keystore.identity.store.password=password +#keystore.identity.store.passwordProvider=<any implementation of org.apache.synapse.commons.util.secret.SecretCallbackHandler> +#keystore.identity.key.password=password +#keystore.identity.key.passwordProvider=<any implementation of org.apache.synapse.commons.util.secret.SecretCallbackHandler> +##keystore.identity.parameters=enableHostnameVerifier=false;keyStoreCertificateFilePath=/home/esb.cer # #keystore.trust.location=lib/trust.jks #keystore.trust.type=JKS #keystore.trust.alias=synapse -#keystore.trust.storePassword=password -#keystore.trust.parameters=enableHostnameVerifier=false;keyStoreCertificateFilePath=/home/esb.cer +#keystore.trust.store.password=password +#keystore.trust.store.passwordProvider=<any implementation of org.apache.synapse.commons.util.secret.SecretCallbackHandler> # ################################################################################ # DataSources Configuration @@ -97,7 +98,7 @@ #synapse.datasources.reportds.driverClassName=org.apache.derby.jdbc.ClientDriver #synapse.datasources.reportds.url=jdbc:derby://localhost:1527/reportdb;create=false # Optionally you can specifiy a specific password provider implementation which overrides any globally configured provider -#synapse.datasources.lookupds.passwordProvider=org.apache.synapse.security.secret.handler.JBossEncryptionSecretCallbackHandler +#synapse.datasources.reportds.passwordProvider=org.apache.synapse.security.secret.handler.JBossEncryptionSecretCallbackHandler #synapse.datasources.reportds.username=synapse # Depending on the password provider used, you may have to use an encrypted password here! #synapse.datasources.reportds.password=synapse Modified: branches/synapse/1.3-wso2v1/src/site/xdoc/Synapse_Samples_Setup.xml URL: http://wso2.org/svn/browse/wso2/branches/synapse/1.3-wso2v1/src/site/xdoc/Synapse_Samples_Setup.xml?rev=35529&r1=35528&r2=35529&view=diff ============================================================================== --- branches/synapse/1.3-wso2v1/src/site/xdoc/Synapse_Samples_Setup.xml (original) +++ branches/synapse/1.3-wso2v1/src/site/xdoc/Synapse_Samples_Setup.xml Mon May 11 22:52:45 2009 @@ -798,14 +798,14 @@ keystore.identity.location=lib/identity.jks keystore.identity.type=JKS keystore.identity.alias=synapse - keystore.identity.storePassword=password - keystore.identity.keyPassword=password + keystore.identity.store.password=password + keystore.identity.key.password=password #keystore.identity.parameters=enableHostnameVerifier=false;keyStoreCertificateFilePath=/home/esb.cer keystore.trust.location=lib/trust.jks keystore.trust.type=JKS keystore.trust.alias=synapse - keystore.trust.storePassword=password + keystore.trust.store.password=password #keystore.trust.parameters=enableHostnameVerifier=false;keyStoreCertificateFilePath=/home/esb.cer </pre> @@ -822,30 +822,24 @@ Those are arranged in a cascade manger. Secrets can be accessed by providing alias for those. Key Stores needed for Secret Manager and secret repositories need to be configured according to - the <strong>Key Stores Configurations</strong>. In this case, all the passwords in the key store configuration + the<strong>Key Stores Configurations</strong>. In this case, all the passwords in the key store + configuration contains only alias to refer actual password. For example keystore.identity.storePassword=password - Here <strong>password</strong> is an alias and to be used to get actual password + Here + <strong>password</strong> + is an alias and to be used to get actual password In order to resolve above passwords (i.e. to get actual passwords); it is needed to provide a - <strong>password provider</strong> for secret manager. In future, this will be moved into key store - configurations itself .This can be done by adding property to <strong>synapse.properties</strong> - -</p> - -<div> - <p> - <strong>Secret manager password provider - <br/> - </strong> - </p> + <strong>password provider</strong> + for each keystore. + This can be done by adding property called + <strong>passwordProvider= any implementation of org.apache.synapse.commons.util.secret.SecretCallbackHandler + </strong> + Example <pre> - secretManager.passwordProvider=org.apache.synapse.security.secret.handler.JMXSecretCallbackHandler + keystore.identity.store.passwordProvider=org.apache.synapse.security.secret.handler.JMXSecretCallbackHandler </pre> -</div> -<p>Note: In the case where use for configuring key store for secret manager, the passwords in the - above configurations act as only just alias. There are some mechanisms that can be used to - provide actual password for these aliases. Those are described under <strong>Securing Password</strong>. </p> <p> The <strong>password provider</strong> should be an implementation of @@ -862,6 +856,9 @@ <li> org.apache.synapse.security.secret.handler.HardCodedSecretCallbackHandler </li> + <li> + org.apache.synapse.security.secret.handler.JBossEncryptionSecretCallbackHandler + </li> </ul> <p> When use <strong>org.apache.synapse.security.secret.handler.JMXSecretCallbackHandler</strong> @@ -1036,11 +1033,11 @@ </strong> </p> <p> - <strong>ciphertool.bat -source testpass -keystore lib\identity.jks -storepass password -alias synapse -keypass password + <strong>ciphertool.bat -source testpass -keystore lib\identity.jks -storepass password -alias synapse -keypass password -outencode base64 <br/> </strong> </p> - <pre>ciphertool.bat -source testpass -keystore lib\identity.jks -storepass password -alias synapse -keypass password + <pre>ciphertool.bat -source testpass -keystore lib\identity.jks -storepass password -alias synapse -keypass password -outencode base64 Using SYNAPSE_HOME: C:\Project\apache\synapse\synapse4\modules\distribution\ta rget\synapse-SNAPSHOT _______________________________________________ Esb-java-dev mailing list [email protected] https://wso2.org/cgi-bin/mailman/listinfo/esb-java-dev
