ssl 错误请求-此主机和端口组合需要TLS Boot

ffscu2ro  于 2022-11-14  发布在  其他
关注(0)|答案(5)|浏览(795)

我是春 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

我该怎么办?

lxkprmvk

lxkprmvk1#

一开始我用https://代替了http://,它对我很有效。

0h4hbjxa

0h4hbjxa2#

我收到此消息是因为我使用了错误证书
我误解了客户端证书和服务器证书。
在我的例子中,我在服务器上为我的域安装了我的证书,但我需要做的是使用它来发出请求,作为客户端证书。
你可以在这里查看如何做。
Client Certificate Authentication with Spring Boot
所以这条信息基本上是在说:“嘿,你的SSL请求不正常”,我找不到证书文件,或者你的证书文件不是一个好的,正如@SerdarAtalay所说,这也可能意味着你没有使用https://前缀,等等。
希望能有所帮助!

igetnqfo

igetnqfo3#

我自己也遇到了这个问题,我花了好几天时间寻找答案。大多数回复都说要使用https而不是http,但我在localhost上的测试并不需要这样做。我从Shubham的选项中得到了我急需的解决方案,那就是在www.example.com文件中将server.ssl.enabled设置application.properties为false。

prdp8dxp

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

g0czyy6m

g0czyy6m5#

我在Debian 10中使用Tomcat作为应用程序服务器处理Java项目时遇到了这个问题。
问题是,当我在浏览器中使用http调用应用程序时,应用程序已经将https定义为默认协议。
然而,我尝试在浏览器中使用https协议,但它没有连接,并抛出错误:
安全连接失败
连接到34.72.188.50:8009时出错。SSL接收到的记录超过了允许的最大长度。
错误代码:SSL_ERROR_RX_RECORD_太长
无法显示您尝试查看的页面,因为无法验证接收到的数据的真实性。请与网站所有者联系,将此问题通知他们。

我是这么解决的

我首先必须为应用程序创建一个keystore文件,更像是https协议的自签名证书:

sudo keytool -genkey -keyalg RSA -alias tomcat -keystore /usr/share/tomcat.keystore

注意:您需要在服务器上安装Java才能执行此操作。Java可以使用sudo apt install default-jdk安装。

接下来,我在Tomcat服务器配置文件(/opt/tomcat/conf/server.xml)中为应用程序添加了一个httpsTomcat服务器连接器:

sudo nano /opt/tomcat/conf/server.xml

将以下内容添加到应用程序的配置中。请注意,指定了keystore文件位置和口令。此外,还定义了https协议的端口,该端口与http协议的端口不同:

<Connector protocol="org.apache.coyote.http11.Http11Protocol"
           port="8443" maxThreads="200" scheme="https"
           secure="true" SSLEnabled="true"
           keystoreFile="/usr/share/tomcat.keystore"
           keystorePass="my-password"
           clientAuth="false" sslProtocol="TLS"
           URIEncoding="UTF-8"
           compression="force"
           compressableMimeType="text/html,text/xml,text/plain,text/javascript,text/css"/>

因此,在Tomcat服务器配置文件(/opt/tomcat/conf/server.xml)中,应用程序的完整服务器配置如下所示:
第一个
这一次,当我尝试从浏览器访问应用程序时,使用:

https://my-server-ip-address:https-port

在我的情况下,它是:

https:35.123.45.6:8443

它运行得很好。虽然,我不得不接受一个警告,为网站添加了一个安全例外,因为使用的证书是自签名的。
就这样了。
"我希望这能帮上忙"

相关问题