gpt4 book ai didi

Spring 启动 : Enable HTTPS for embedded tomcat

转载 作者:行者123 更新时间:2023-11-28 21:59:45 24 4
gpt4 key购买 nike

使用以下命令创建 keystore :
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 在端口上启动:8080 (https) 8081 (http)

但是当我发送请求 https://localhost:8081/hello 时,响应从服务器发回并且服务器日志上没有任何事件。不确定发生了什么。

最佳答案

嵌入式 Tomcat 的启动消息清楚地表明您的 ssl/tls 连接正在您使用 server.port 指定的端口上运行:

Tomcat started on port(s): 8080 (https)

所以你只是有一个错误的端口/协议(protocol)组合。 https://localhost:8080应该可以。

但通常您的浏览器会提示并显示一条消息说明这一点。出于好奇,您可以查看调用 https://www.google.com:80 时浏览器中发生的情况。

关于 Spring 启动 : Enable HTTPS for embedded tomcat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36490709/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com