在我根据此网站https://www.thomasvitale.com/https-spring-boot-ssl-certificate/上的说明添加ssl证书后,应用程序无法启动并出现以下错误:
***************************
APPLICATION FAILED TO START
***************************
Description:
The Tomcat connector configured to listen on port 80 failed to start. The port may already be in use or th
e connector may be misconfigured.
当我更改端口时,出现相同的错误。 netstat -ntulp
显示该端口上没有正在运行的程序。当我在application.properties中与ssl关联的注释行时,服务器正常启动。请帮助我
答案 0 :(得分:1)
尝试像这样配置您的后端:
添加依赖:
implementation 'org.apache.httpcomponents:httpclient:4.5'
提供 RestTemplate bean:
@Bean
private RestTemplate restTemplate() {
SSLContext sslContext = buildSslContext();
SSLConnectionSocketFactory socketFactory = new SSLConnectionSocketFactory(sslContext);
HttpClient httpClient = HttpClients.custom()
.setSSLSocketFactory(socketFactory)
.build();
HttpComponentsClientHttpRequestFactory factory = new HttpComponentsClientHttpRequestFactory(httpClient);
return new RestTemplate(factory);
}
private SSLContext buildSslContext() {
try {
char[] keyStorePassword = sslProperties.getKeyStorePassword();
return new SSLContextBuilder()
.loadKeyMaterial(
KeyStore.getInstance(new File(sslProperties.getKeyStore()), keyStorePassword),
keyStorePassword
).build();
} catch (Exception ex) {
throw new IllegalStateException("Unable to instantiate SSL context", ex);
} finally {
sslProperties.setKeyStorePassword(null);
sslProperties.setTrustStorePassword(null);
}
}
server:
ssl:
enabled: true
key-store: /path/to/key.keystore
key-store-password: password
key-alias: alias
trust-store: /path/to/truststore
trust-store-password: password
就是这样。现在您可以看到您的 Tomcat 正在 8080(或其他端口)(https)上启动。
或者,您可以使用 my spring boot starter