当maven构建包含密钥库和信任库的springboot项目时,我遇到了一个问题。我有一个单独的密钥库和信任库,用来与我的mongo副本(x509)通信。为此,我以实用的方式生成了ssl上下文,并将其传递给MongoClient,这就起作用了。这就是我启动MongoClient的地方(目前是在应用程序主类中:
@Value("${mongo.keyStore}")
private String keyStore;
@Value("${mongo.keyStorePassword}")
private String keyStorePassword;
@Value("${mongo.trustStore}")
private String trustStore;
@Value("${mongo.trustStorePassword}")
private String trustStorePassword;
@Value("${mongo.keyAlias}")
private String keyAlias;
@Value("${mongo.subject}")
private String subject;
@Bean
public SSLContext mongoSSLContext() throws GeneralSecurityException, IOException {
KeyStore keystore = KeyStore.getInstance(KeyStore.getDefaultType());
try (InputStream in = new FileInputStream(keyStore)) {
keystore.load(in, keyStorePassword.toCharArray());
}
KeyManagerFactory keyManagerFactory =
KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
keyManagerFactory.init(keystore, keyStorePassword.toCharArray());
KeyStore ts = KeyStore.getInstance(KeyStore.getDefaultType());
try (InputStream in = new FileInputStream(trustStore)) {
ts.load(in, trustStorePassword.toCharArray());
}
TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
trustManagerFactory.init(ts);
SSLContext sslContext = SSLContext.getInstance("TLS");
sslContext.init(keyManagerFactory.getKeyManagers(), trustManagerFactory.getTrustManagers(), new SecureRandom());
return sslContext;
}
@Bean
public X509Certificate mongoClientCertificate() throws GeneralSecurityException, IOException {
KeyStore keystore = KeyStore.getInstance(KeyStore.getDefaultType());
try (InputStream in = new FileInputStream(keyStore)) {
keystore.load(in, keyStorePassword.toCharArray());
}
KeyManagerFactory keyManagerFactory =
KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
keyManagerFactory.init(keystore, keyStorePassword.toCharArray());
X509KeyManager keyManager = (X509KeyManager) keyManagerFactory.getKeyManagers()[0];
return keyManager.getCertificateChain(keyAlias)[0];
}
@Bean
public MongoClientSettingsBuilderCustomizer mongoSslCustomizer(SSLContext mongoSSLContext) {
return clientSettingsBuilder -> clientSettingsBuilder.applyToSslSettings(sslBuilder -> sslBuilder.context(mongoSSLContext));
}
下面是我的配置:
mongo:
trustStore: ${PWD}/src/main/resources/keystore/ts.keystore
trustStorePassword: <password>
keyStore: ${PWD}/src/main/resources/keystore/ks.jks
keyStorePassword: <password>
keyAlias: <key-alias>
subject: <subject>
我怀疑我这样做是不对的...有人能帮忙吗?
谢谢你!
您能在pom.xml中尝试一下吗?
<build>
<resources>
<resource>
<directory>${project.basedir}/src/main/resources</directory>
<filtering>true</filtering>
<excludes>
<exclude>**/*.keystore</exclude>
<exclude>**/*.jks</exclude>
</excludes>
</resource>
<resource>
<directory>src/main/resources</directory>
<filtering>false</filtering>
<includes>
<include>**/*.keystore</include>
<include>**/*.jks</include>
</includes>
</resource>
</resources>
我被这个错误弄得神魂颠倒,在我解决这个问题之前,我无法取得任何进展。 我有最新的STS(Spring Tool Source)3.7.1,专门用于Eclipse Mars 4.5.1。我删除了所有旧版本的STS,也删除了旧的.Eclipse文件,因为我希望这是一个全新的安装。我还进入了c:\Users\Tom Holmes\AppData文件夹,删除了“Spring Tool Suite”的所有痕
我检查了/m2/repository。但找不到任何相关的东西。
这是我的文件: 这是Maven命令输出
当我使用现有的Maven项目选项将一个插件导入到eclipse时,遇到了以下错误。 项目生成错误:无法解析的生成扩展:Plugin com.atlassian.maven.plugins:maven-jira-plugin:3.2.3或其依赖项之一无法解析:在http://repo1.maven.org/maven2中查找com.atlassian.maven.plugins:maven-jira
我在maven项目中得到了以下错误。我在看视频教程。并且maven文件相当简单。 下面是maven文件。 在stackoverflow的另一篇文章中有一篇关于文件格式的文章,因此我也将文件格式更改为utf-8。 任何解决这个问题的建议都会很有帮助。谢谢!
我是maven的新手,并用hello World创建了一个简单的maven项目。当我尝试运行Maven项目时,它会说:- [错误]尚未为此生成指定目标。必须指定有效的生命周期阶段或格式为:或:[:]:的目标。可用的生命周期阶段有:验证、初始化、生成源、过程源、生成资源、过程资源、编译、过程类、生成测试源、过程测试源、生成测试资源、过程测试资源、测试编译、过程测试类、测试、准备包、包、集成前测试、集