Slecht verzoek – Voor deze combinatie van host en poort is TLS vereist. met veerlaars

Ik ben een beginner met Spring Boot.

Ik probeer een https-oproep naar een dienst te doen, ik heb een Privake-sleutel om de verbinding te beveiligen.

Ik sloeg:

http://localhost:8081/points/12345/search

Ik heb het geprobeerd met https:// maar ik krijg van Postman:

Could not get any response
There was an error connecting to https://localhost:8081/points/12345/search.

Vanaf het moment dat ik schreef

server.ssl.key-store=classpath:KeyStore.jks
server.ssl.key-store-password=test

in application.propertieskrijg ik de foutmelding:

Slecht verzoek – Deze combinatie van host en poort vereist TLS

Ik heb al mijn code in mijn controller verwijderd, ik laat het eindpunt gewoon zodat ik het kan aanroepen.

@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);
    }
}

Hier is het bestand 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

Wat moet ik doen?


Antwoord 1, autoriteit 100%

Ik gebruikte in het begin https://in plaats van http://, het werkte voor mij.


Antwoord 2, autoriteit 2%

Ik kreeg dit bericht omdat ik een verkeerd certificaat gebruikte.

Ik heb het clientcertificaat en het servercertificaat verkeerd begrepen.

In mijn geval heb ik mijn certificaat op de server geïnstalleerd, voor mijn domein, maar in plaats daarvan moest ik het gebruiken om het verzoek in te dienen, als een clientcertificaat.

u kunt hier zien hoe u dit moet doen.

Clientcertificaatverificatie met Spring Boot

Dus dit bericht zegt eigenlijk: “Hé, uw SSL-verzoek is niet OK”, ik kan het cert-bestand niet vinden, of uw cert-bestand is niet het goede, zoals @SerdarAtalay zegt, het kan ook betekenen dat je hebt geen voorvoegsel https://enz. gebruikt.

Hopelijk helpt het!


Antwoord 3

Ik had dit probleem bij het werken aan een Java-projectin Debian 10met Tomcatals applicatieserver.

Het probleem was dat de applicatie al httpshad gedefinieerd als het standaardprotocol terwijl ik httpgebruikte om de applicatie in de browser aan te roepen.

Ik heb echter geprobeerd het https-protocol in de browser te gebruiken, maar het maakte geen verbinding en gaf de fout:

Beveiligde verbinding mislukt

Er is een fout opgetreden tijdens een verbinding met 34.72.188.50:8009. SSL heeft een record ontvangen dat de maximaal toegestane lengte overschrijdt.

Foutcode: SSL_ERROR_RX_RECORD_TOO_LONG

De pagina die u probeert te bekijken, kan niet worden weergegeven omdat de authenticiteit van de ontvangen gegevens niet kon worden geverifieerd.
Neem contact op met de eigenaren van de website om hen op de hoogte te stellen van dit probleem.

Zo heb ik het opgelost:

Ik moest eerst een keystore-bestand maken voor de applicatie, meer als een zelfondertekend certificaat voor het https-protocol:

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

Opmerking: u moet Java op de server hebben geïnstalleerd om dit te kunnen doen. Java kan worden geïnstalleerd met sudo apt install default-jdk.

Vervolgens heb ik een httpsTomcat-serverconnector voor de toepassing toegevoegd in het Tomcat-serverconfiguratiebestand (/opt/tomcat/conf/server.xml):

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

Voeg het volgende toe aan de configuratie van de applicatie. Merk op dat de keystorebestandslocatie en het wachtwoord zijn opgegeven. Er is ook een poort gedefinieerd voor het https-protocol, die verschilt van de poort voor het http-protocol:

<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"/>

Dus de volledige serverconfiguratie voor de applicatie zag er als volgt uit in het Tomcatserverconfiguratiebestand (/opt/tomcat/conf/server.xml):

<Service name="my-application">
  <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"/>
 <Connector port="8009" protocol="HTTP/1.1"
             connectionTimeout="20000"
             redirectPort="8443" />
  <Engine name="my-application" defaultHost="localhost">
     <Realm className="org.apache.catalina.realm.LockOutRealm">
        <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
             resourceName="UserDatabase"/>
    </Realm>
    <Host name="localhost"  appBase="webapps"
          unpackWARs="true" autoDeploy="true">
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
             prefix="localhost_access_log" suffix=".txt"
             pattern="%h %l %u %t &quot;%r&quot; %s %b" />
    </Host>
  </Engine>
</Service>

Deze keer toen ik probeerde toegang tot de toepassing van de browser gebruiken:

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

In mijn geval was:

https:35.123.45.6:8443

het werkte prima. Hoewel, ik moest een waarschuwing die een beveiliging uitzondering voor de website toegevoegd accepteren, omdat de gebruikte certificaat is een zelf-ondertekend is.

Dat is alles.

Ik hoop dat dit

helpt

Other episodes