admin管理员组

文章数量:1410737

I am trying to repeat this guide

It's my customizer

@Component
class Http3NettyWebServerCustomizer implements WebServerFactoryCustomizer<NettyReactiveWebServerFactory> {

    @Override
    public void customize(NettyReactiveWebServerFactory factory) {
        factory.addServerCustomizers(server -> {
            SslBundle sslBundle = factory.getSslBundles().getBundle("http3");
            Http3SslContextSpec sslContextSpec =
                    Http3SslContextSpec.forServer(sslBundle.getManagers().getKeyManagerFactory(), sslBundle.getKey().getPassword());

            return server
                    // Configure HTTP/3 protocol
                    .protocol(HttpProtocol.HTTP3)
                    // Configure HTTP/3 SslContext
                    .secure(spec -> spec.sslContext(sslContextSpec))
                    .http3Settings(spec -> spec.idleTimeout(Duration.ofSeconds(5))
                            .maxData(10_000_000)
                            .maxStreamDataBidirectionalRemote(1_000_000)
                            .maxStreamsBidirectional(100));
        });
    }

}

It's my controller:

@RestController
public class HelloController {

    @GetMapping("/hello")
    String hello() {
        return "Hello HTTP/3!";
    }

}

It's my application properties:

spring.application.name=http3app
server.port=888
spring.ssl.bundle.jks.http3.key.alias=http3
spring.ssl.bundle.jks.http3.keystore.location=classpath:keystore.p12
spring.ssl.bundle.jks.http3.keystore.password=changeit
spring.ssl.bundle.jks.http3.keystore.type=PKCS12

For generate a keystore i used:

keytool -genkeypair -alias http3 -keyalg RSA -keysize 4096 \
  -validity 3650 -dname "CN=localhost" -keypass changeit -keystore keystore.p12 \
  -storeType PKCS12 -storepass changeit

when I try to open a page "localhost:888/hello" in the browser, i get an error: ERR_CONNECTION_REFUSED

browser: chrome v128

What am I doing wrong? Please, help

I think there is a problem with the certificate. If i switch to http 1, everything works. Can you tell me how to generate and put the certificate correctly?

I am trying to repeat this guide

It's my customizer

@Component
class Http3NettyWebServerCustomizer implements WebServerFactoryCustomizer<NettyReactiveWebServerFactory> {

    @Override
    public void customize(NettyReactiveWebServerFactory factory) {
        factory.addServerCustomizers(server -> {
            SslBundle sslBundle = factory.getSslBundles().getBundle("http3");
            Http3SslContextSpec sslContextSpec =
                    Http3SslContextSpec.forServer(sslBundle.getManagers().getKeyManagerFactory(), sslBundle.getKey().getPassword());

            return server
                    // Configure HTTP/3 protocol
                    .protocol(HttpProtocol.HTTP3)
                    // Configure HTTP/3 SslContext
                    .secure(spec -> spec.sslContext(sslContextSpec))
                    .http3Settings(spec -> spec.idleTimeout(Duration.ofSeconds(5))
                            .maxData(10_000_000)
                            .maxStreamDataBidirectionalRemote(1_000_000)
                            .maxStreamsBidirectional(100));
        });
    }

}

It's my controller:

@RestController
public class HelloController {

    @GetMapping("/hello")
    String hello() {
        return "Hello HTTP/3!";
    }

}

It's my application properties:

spring.application.name=http3app
server.port=888
spring.ssl.bundle.jks.http3.key.alias=http3
spring.ssl.bundle.jks.http3.keystore.location=classpath:keystore.p12
spring.ssl.bundle.jks.http3.keystore.password=changeit
spring.ssl.bundle.jks.http3.keystore.type=PKCS12

For generate a keystore i used:

keytool -genkeypair -alias http3 -keyalg RSA -keysize 4096 \
  -validity 3650 -dname "CN=localhost" -keypass changeit -keystore keystore.p12 \
  -storeType PKCS12 -storepass changeit

when I try to open a page "localhost:888/hello" in the browser, i get an error: ERR_CONNECTION_REFUSED

browser: chrome v128

What am I doing wrong? Please, help

I think there is a problem with the certificate. If i switch to http 1, everything works. Can you tell me how to generate and put the certificate correctly?

Share Improve this question asked Mar 7 at 12:32 ThinkDifferentThinkDifferent 12 bronze badges
Add a comment  | 

1 Answer 1

Reset to default 0

later, I generated a keystore for the server and a truststore for the client. Add dependency netty-incubator-codec-native-quic for client. Configure http3client:

SslBundle sslBundle = factory.getSslBundles().getBundle("http3");
        TrustManager[] trustManagers = sslBundle.getManagers().getTrustManagers();
        Http3SslContextSpec sslContextSpec = Http3SslContextSpec
                .forClient()
                .configure(s -> s.trustManager(trustManagers[0]));
        
        return HttpClient.create()
                // Configure HTTP/3 protocol
                .protocol(HttpProtocol.HTTP3)
                // Configure HTTP/3 settings
                .secure(spec -> spec.sslContext(sslContextSpec))
                .http3Settings(spec -> spec
                        .idleTimeout(Duration.ofSeconds(5))
                        .maxData(10_000_000)
                        .maxStreamDataBidirectionalLocal(1_000_000));

And it works!

本文标签: javaSpring boot 34 and http3 (netty) controllerStack Overflow