我在AWS Elastic Beanstalk中加载了一个Web服务Java。此Web服务使用jks密钥库进行SSL休息调用。当我在我的机器上执行webservice时,我加载了keystore
System.setProperty("javax.net.ssl.trustStore", "c:\...\file.jks");
System.setProperty("javax.net.ssl.trustStorePassword", "password");
System.setProperty("javax.net.ssl.keyStore", "c:\...\file.jks");
System.setProperty("javax.net.ssl.keyStorePassword", "sviluppo");
使用System.setProperty我需要file.jks的绝对路径。如何在AWS Elastic Beanstalk上进行相同的操作?
(我尝试使用getAbsolutePath()和getCanonicalPath()但是,在我的机器上,这些结构返回myEclipse根目录)
首先,您必须将file.jks
与您的Java应用程序(WAR或JAR)捆绑在一起,然后您可以从file.jks
的相对路径获取绝对路径,如本接受的答案所述:Converting Relative Paths to Absolute Paths
感谢您的回答。我用这种方式解决它:首先我将我的jks文件放在项目包“package”中,客户端为“Test”。在我的代码里面我写道:
String pathKeyStore = package.Test.class.getResource("file.jks").getPath();
pathKeyStore = pathResourceKeyStore.replaceAll("%20", " ");
System.setProperty("javax.net.ssl.trustStore", pathKeyStore);
System.setProperty("javax.net.ssl.trustStorePassword", "password");
System.setProperty("javax.net.ssl.keyStore", pathKeyStore);
System.setProperty("javax.net.ssl.keyStorePassword", "password");
它也适用于AWS Elastic Beanstalk!