使用以下命令创建密钥库:
keytool -genkey -alias tomcat -storetype PKCS12 -keyalg RSA -keysize 2048 -keystore keystore.p12 -validity 3650
在application.properties文件中添加了以下设置:
server.ssl.key-store=keystore.p12
server.ssl.key-store-password=######
server.ssl.keyStoreType=PKCS12
server.ssl.keyAlias=tomcat
#server port config
server.port=8080
server.http.port=8081
写下以下代码:
public EmbeddedServletContainerFactory servletContainer() {
TomcatEmbeddedServletContainerFactory tomcat = new TomcatEmbeddedServletContainerFactory() {
@Override
protected void postProcessContext(Context context) {
SecurityConstraint securityConstraint = new SecurityConstraint();
securityConstraint.setUserConstraint("CONFIDENTIAL");
SecurityCollection collection = new SecurityCollection();
collection.addPattern("/*");
securityConstraint.addCollection(collection);
context.addConstraint(securityConstraint);
}
};
tomcat.addAdditionalTomcatConnectors(initiateHttpConnector());
return tomcat;
}
应用程序启动正常,没有任何错误。我可以在日志中看到以下消息:
s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8080 (https) 8081 (http)
但是当我发送请求https://localhost:8081/hello
时,响应从服务器发回,并且服务器日志上没有活动。不知道发生了什么。
答案 0 :(得分:1)
嵌入式Tomcat的启动消息清楚地表明您的ssl / tls连接正在您使用server.port
指定的端口上运行:
Tomcat started on port(s): 8080 (https)
所以你只是有一个错误的端口/协议组合。 https://localhost:8080应该有用。
但通常你的浏览器会抱怨说明这一点。出于好奇,您可以在致电https://www.google.com:80
时查看浏览器中发生的情况