我是春 Boot 的新手。
我正在尝试对服务进行https调用,我有一个Privake密钥来确保连接安全。
我打:
http://localhost:8081/points/12345/search
我尝试使用https://,但 Postman 给我的消息是:
Could not get any response
There was an error connecting to https://localhost:8081/points/12345/search.
从我写的那一刻起
server.ssl.key-store=classpath:KeyStore.jks
server.ssl.key-store-password=test
在application.properties
中,我收到错误消息:
错误请求-此主机和端口组合需要TLS
我已经删除了我的控制器中所有的代码,我只是让端点这样我就可以调用它。
@RestController
@SpringBootApplication
public class MainApplication {
@RequestMapping(value = "/points/{point}/search", method = RequestMethod.GET)
public PointsType getPoint(@PathVariable(value = "point") String point) {
System.out.println("hi"); // Never printed
return null;
}
public static void main(String[] args) {
SpringApplication.run(MainApplication.class, args);
}
}
下面是文件application.properties:
spring.application.name=sge
server.port=8081
server.ssl.key-store=classpath:KeyStore.jks
server.ssl.key-store-password=test
server.ssl.key-alias=homologation-staging
server.ssl.trust-store=classpath:TrustStore.jks
server.ssl.trust-store-password=test
server.ssl.client-auth=need
security.require-ssl=true
server.tomcat.remote_ip_header=x-forwarded-for
server.tomcat.protocol_header=x-forwarded-proto
我该怎么办?
5条答案
按热度按时间lxkprmvk1#
一开始我用
https://
代替了http://
,它对我很有效。0h4hbjxa2#
我收到此消息是因为我使用了错误证书
我误解了客户端证书和服务器证书。
在我的例子中,我在服务器上为我的域安装了我的证书,但我需要做的是使用它来发出请求,作为客户端证书。
你可以在这里查看如何做。
Client Certificate Authentication with Spring Boot
所以这条信息基本上是在说:“嘿,你的SSL请求不正常”,我找不到证书文件,或者你的证书文件不是一个好的,正如@SerdarAtalay所说,这也可能意味着你没有使用
https://
前缀,等等。希望能有所帮助!
igetnqfo3#
我自己也遇到了这个问题,我花了好几天时间寻找答案。大多数回复都说要使用https而不是http,但我在localhost上的测试并不需要这样做。我从Shubham的选项中得到了我急需的解决方案,那就是在www.example.com文件中将server.ssl.enabled设置application.properties为false。
prdp8dxp4#
我们可以通过以下任一解决方案解决此问题。
1.使用HTTPS而不是HTTP
1.从POSTMAN设置禁用TLS加密并使用HTTP
1.请检查应用程序属性server.ssl.enabled= true- HTTPS,false-HTTP
1.在POSTMAN enter image description here中添加正确的授权凭据,如用户名和密码
[1]: https://i.stack.imgur.com/vGOj9.pngenter image description here
g0czyy6m5#
我在Debian 10中使用Tomcat作为应用程序服务器处理Java项目时遇到了这个问题。
问题是,当我在浏览器中使用http调用应用程序时,应用程序已经将https定义为默认协议。
然而,我尝试在浏览器中使用https协议,但它没有连接,并抛出错误:
安全连接失败
连接到34.72.188.50:8009时出错。SSL接收到的记录超过了允许的最大长度。
错误代码:SSL_ERROR_RX_RECORD_太长
无法显示您尝试查看的页面,因为无法验证接收到的数据的真实性。请与网站所有者联系,将此问题通知他们。
我是这么解决的:
我首先必须为应用程序创建一个keystore文件,更像是https协议的自签名证书:
注意:您需要在服务器上安装Java才能执行此操作。Java可以使用
sudo apt install default-jdk
安装。接下来,我在Tomcat服务器配置文件(
/opt/tomcat/conf/server.xml
)中为应用程序添加了一个httpsTomcat服务器连接器:将以下内容添加到应用程序的配置中。请注意,指定了keystore文件位置和口令。此外,还定义了https协议的端口,该端口与http协议的端口不同:
因此,在Tomcat服务器配置文件(
/opt/tomcat/conf/server.xml
)中,应用程序的完整服务器配置如下所示:第一个
这一次,当我尝试从浏览器访问应用程序时,使用:
在我的情况下,它是:
它运行得很好。虽然,我不得不接受一个警告,为网站添加了一个安全例外,因为使用的证书是自签名的。
就这样了。
"我希望这能帮上忙"