FlorianUekermann / rustls-acme

Apache License 2.0
144 stars 28 forks source link

actix-web support #54

Open lovasoa opened 1 year ago

lovasoa commented 1 year ago

Hello ! I would like to use this crate with actix-web. Is this possible ? I don't see any may to pass rustls-acme's output to actix HTTPServer Maybe this crate would need to implement ServerServiceFactory in order to use ServerBuilder::listen ?

FlorianUekermann commented 1 year ago

You may be correct about implementing ServerServiceFactory, I'm not 100% sure yet. But I suspect that using a smart rustls config with HttpServer::listen_rustls or HttpServer::bind_rustls may do the trick as well. I'll look into this later today.

lovasoa commented 1 year ago

Oh, you mean we could just generate a single rustls ServerConfig, pass it to actix, and be done ? That would be awesome.

FlorianUekermann commented 1 year ago

Yes, exactly. acme-rustls used to work like that, but then people started running into issues with alpn negotiation (iirc, if the client specifies alpn protocols and the server as well, there needs to be a match to proceed). But since actix already adds “h2” and “http/1.1” I don't think this applies here.

Could you something like this and report back:

    let mut state = AcmeConfig::new(args.domains)
        .contact(args.email.iter().map(|e| format!("mailto:{}", e)))
        .cache_option(args.cache.clone().map(DirCache::new))
        .directory_lets_encrypt(args.prod)
        .state();
    let rustls_config = state.challenge_rustls_config();

    spawn(async move {
        loop {
            match state.next().await.unwrap() {
                Ok(ok) => log::info!("event: {:?}", ok),
                Err(err) => log::error!("error: {:?}", err),
            }
        }
    });

    HttpServer::new(|| App::new().route("/", web::get().to(HttpResponse::Ok)))
        .bind_rustls_021(("127.0.0.1", 8080, ), rustls_config)?
        .run()
        .await

I'm happy to add a low_level_actix-web example similar to low_level_tokio.rs if that works.

lovasoa commented 1 year ago

image

It works, thank you ! It's a little bit magical to see it do everything automatically :)

rustls-acme will be in SQLPage v0.17 !

https://github.com/lovasoa/SQLpage/pull/140

``` [2023-11-25T02:11:09.643Z INFO sqlpage] Starting server on 0.0.0.0:8080 [2023-11-25T02:11:09.643Z INFO sqlpage::webserver::http] Will start HTTPS server on 0.0.0.0:443 [2023-11-25T02:11:09.643Z INFO sqlpage::webserver::https] Starting HTTPS configuration for testtls.ophir.dev [2023-11-25T02:11:09.644Z INFO actix_server::builder] starting 8 workers [2023-11-25T02:11:09.644Z INFO actix_server::server] Actix runtime found; starting in Actix runtime [2023-11-25T02:11:09.651Z INFO sqlpage] Server started successfully. SQLPage is now running on http://127.0.0.1:8080/ and on https://testtls.ophir.dev You can write your website's code in .sql files in /home/olojkine/dev/sqlpage. [2023-11-25T02:11:09.652Z INFO sqlpage::webserver::https] ACME configuration event: AccountCacheStore [2023-11-25T02:11:09.672Z DEBUG rustls::client::hs] No cached session for DnsName("acme-staging-v02.api.letsencrypt.org") [2023-11-25T02:11:09.672Z DEBUG rustls::client::hs] Not resuming any session [2023-11-25T02:11:10.003Z DEBUG rustls::client::hs] Using ciphersuite TLS13_AES_256_GCM_SHA384 [2023-11-25T02:11:10.003Z DEBUG rustls::client::tls13] Not resuming [2023-11-25T02:11:10.004Z DEBUG rustls::client::tls13] TLS1.3 encrypted extensions: [ServerNameAck] [2023-11-25T02:11:10.004Z DEBUG rustls::client::hs] ALPN protocol is None [2023-11-25T02:11:10.186Z DEBUG rustls::client::hs] Resuming session [2023-11-25T02:11:10.457Z DEBUG rustls::client::hs] Using ciphersuite TLS13_AES_256_GCM_SHA384 [2023-11-25T02:11:10.457Z DEBUG rustls::client::tls13] Not resuming [2023-11-25T02:11:10.457Z DEBUG rustls::client::tls13] TLS1.3 encrypted extensions: [ServerNameAck] [2023-11-25T02:11:10.457Z DEBUG rustls::client::hs] ALPN protocol is None [2023-11-25T02:11:10.617Z DEBUG rustls::client::hs] Resuming session [2023-11-25T02:11:10.895Z DEBUG rustls::client::hs] Using ciphersuite TLS13_AES_256_GCM_SHA384 [2023-11-25T02:11:10.896Z DEBUG rustls::client::tls13] Resuming using PSK [2023-11-25T02:11:10.896Z DEBUG rustls::client::tls13] TLS1.3 encrypted extensions: [ServerNameAck] [2023-11-25T02:11:10.896Z DEBUG rustls::client::hs] ALPN protocol is None [2023-11-25T02:11:11.140Z DEBUG rustls::client::hs] Resuming session [2023-11-25T02:11:11.535Z DEBUG rustls::client::hs] Using ciphersuite TLS13_AES_256_GCM_SHA384 [2023-11-25T02:11:11.535Z DEBUG rustls::client::tls13] Resuming using PSK [2023-11-25T02:11:11.535Z DEBUG rustls::client::tls13] TLS1.3 encrypted extensions: [ServerNameAck] [2023-11-25T02:11:11.535Z DEBUG rustls::client::hs] ALPN protocol is None [2023-11-25T02:11:11.727Z DEBUG rustls::client::hs] Resuming session [2023-11-25T02:11:12.028Z DEBUG rustls::client::hs] Using ciphersuite TLS13_AES_256_GCM_SHA384 [2023-11-25T02:11:12.028Z DEBUG rustls::client::tls13] Resuming using PSK [2023-11-25T02:11:12.028Z DEBUG rustls::client::tls13] TLS1.3 encrypted extensions: [ServerNameAck] [2023-11-25T02:11:12.028Z DEBUG rustls::client::hs] ALPN protocol is None [2023-11-25T02:11:12.229Z DEBUG rustls_acme::acme] response: "{\n \"status\": \"pending\",\n \"expires\": \"2023-12-02T02:11:12Z\",\n \"identifiers\": [\n {\n \"type\": \"dns\",\n \"value\": \"testtls.ophir.dev\"\n }\n ],\n \"authorizations\": [\n \"https://acme-staging-v02.api.letsencrypt.org/acme/authz-v3/9668899504\"\n ],\n \"finalize\": \"https://acme-staging-v02.api.letsencrypt.org/acme/finalize/126687904/12514248154\"\n}" [2023-11-25T02:11:12.239Z DEBUG rustls::client::hs] Resuming session [2023-11-25T02:11:12.525Z DEBUG rustls::client::hs] Using ciphersuite TLS13_AES_256_GCM_SHA384 [2023-11-25T02:11:12.525Z DEBUG rustls::client::tls13] Not resuming [2023-11-25T02:11:12.526Z DEBUG rustls::client::tls13] TLS1.3 encrypted extensions: [ServerNameAck] [2023-11-25T02:11:12.526Z DEBUG rustls::client::hs] ALPN protocol is None [2023-11-25T02:11:12.693Z DEBUG rustls::client::hs] Resuming session [2023-11-25T02:11:13.075Z DEBUG rustls::client::hs] Using ciphersuite TLS13_AES_256_GCM_SHA384 [2023-11-25T02:11:13.075Z DEBUG rustls::client::tls13] Not resuming [2023-11-25T02:11:13.075Z DEBUG rustls::client::tls13] TLS1.3 encrypted extensions: [ServerNameAck] [2023-11-25T02:11:13.075Z DEBUG rustls::client::hs] ALPN protocol is None [2023-11-25T02:11:13.279Z DEBUG rustls_acme::acme] response: "{\n \"identifier\": {\n \"type\": \"dns\",\n \"value\": \"testtls.ophir.dev\"\n },\n \"status\": \"pending\",\n \"expires\": \"2023-12-02T02:11:12Z\",\n \"challenges\": [\n {\n \"type\": \"http-01\",\n \"status\": \"pending\",\n \"url\": \"https://acme-staging-v02.api.letsencrypt.org/acme/chall-v3/9668899504/rZtzQQ\",\n \"token\": \"vTY6qQj8AiSGG7o73fDzUAMGa3ynjRV8UQ_WpaiwMlw\"\n },\n {\n \"type\": \"dns-01\",\n \"status\": \"pending\",\n \"url\": \"https://acme-staging-v02.api.letsencrypt.org/acme/chall-v3/9668899504/prQZAA\",\n \"token\": \"vTY6qQj8AiSGG7o73fDzUAMGa3ynjRV8UQ_WpaiwMlw\"\n },\n {\n \"type\": \"tls-alpn-01\",\n \"status\": \"pending\",\n \"url\": \"https://acme-staging-v02.api.letsencrypt.org/acme/chall-v3/9668899504/DRzKsg\",\n \"token\": \"vTY6qQj8AiSGG7o73fDzUAMGa3ynjRV8UQ_WpaiwMlw\"\n }\n ]\n}" [2023-11-25T02:11:13.279Z INFO rustls_acme::state] trigger challenge for testtls.ophir.dev [2023-11-25T02:11:13.290Z DEBUG rustls::client::hs] Resuming session [2023-11-25T02:11:13.689Z DEBUG rustls::client::hs] Using ciphersuite TLS13_AES_256_GCM_SHA384 [2023-11-25T02:11:13.689Z DEBUG rustls::client::tls13] Resuming using PSK [2023-11-25T02:11:13.690Z DEBUG rustls::client::tls13] TLS1.3 encrypted extensions: [ServerNameAck] [2023-11-25T02:11:13.690Z DEBUG rustls::client::hs] ALPN protocol is None [2023-11-25T02:11:13.906Z DEBUG rustls::client::hs] Resuming session [2023-11-25T02:11:14.305Z DEBUG rustls::client::hs] Using ciphersuite TLS13_AES_256_GCM_SHA384 [2023-11-25T02:11:14.305Z DEBUG rustls::client::tls13] Resuming using PSK [2023-11-25T02:11:14.306Z DEBUG rustls::client::tls13] TLS1.3 encrypted extensions: [ServerNameAck] [2023-11-25T02:11:14.306Z DEBUG rustls::client::hs] ALPN protocol is None [2023-11-25T02:11:14.508Z DEBUG rustls_acme::acme] response: "{\n \"type\": \"tls-alpn-01\",\n \"status\": \"pending\",\n \"url\": \"https://acme-staging-v02.api.letsencrypt.org/acme/chall-v3/9668899504/DRzKsg\",\n \"token\": \"vTY6qQj8AiSGG7o73fDzUAMGa3ynjRV8UQ_WpaiwMlw\"\n}" [2023-11-25T02:11:14.793Z DEBUG rustls::server::hs] decided upon suite TLS13_AES_128_GCM_SHA256 [2023-11-25T02:11:14.793Z DEBUG rustls::server::tls13::client_hello] Client unwilling to resume, DHE_KE not offered [2023-11-25T02:11:14.794Z DEBUG rustls::server::hs] Chosen ALPN protocol [97, 99, 109, 101, 45, 116, 108, 115, 47, 49] [2023-11-25T02:11:14.910Z DEBUG rustls::common_state] Sending warning alert CloseNotify [2023-11-25T02:11:15.246Z DEBUG rustls::server::hs] decided upon suite TLS13_AES_128_GCM_SHA256 [2023-11-25T02:11:15.246Z DEBUG rustls::server::tls13::client_hello] Client unwilling to resume, DHE_KE not offered [2023-11-25T02:11:15.246Z DEBUG rustls::server::hs] Chosen ALPN protocol [97, 99, 109, 101, 45, 116, 108, 115, 47, 49] [2023-11-25T02:11:15.513Z DEBUG rustls::common_state] Sending warning alert CloseNotify [2023-11-25T02:11:15.520Z DEBUG rustls::client::hs] Resuming session [2023-11-25T02:11:15.840Z DEBUG rustls::client::hs] Using ciphersuite TLS13_AES_256_GCM_SHA384 [2023-11-25T02:11:15.840Z DEBUG rustls::client::tls13] Resuming using PSK [2023-11-25T02:11:15.840Z DEBUG rustls::client::tls13] TLS1.3 encrypted extensions: [ServerNameAck] [2023-11-25T02:11:15.840Z DEBUG rustls::client::hs] ALPN protocol is None [2023-11-25T02:11:16.055Z DEBUG rustls::client::hs] Resuming session [2023-11-25T02:11:16.454Z DEBUG rustls::client::hs] Using ciphersuite TLS13_AES_256_GCM_SHA384 [2023-11-25T02:11:16.454Z DEBUG rustls::client::tls13] Not resuming [2023-11-25T02:11:16.455Z DEBUG rustls::client::tls13] TLS1.3 encrypted extensions: [ServerNameAck] [2023-11-25T02:11:16.455Z DEBUG rustls::client::hs] ALPN protocol is None [2023-11-25T02:11:16.635Z DEBUG rustls_acme::acme] response: "{\n \"identifier\": {\n \"type\": \"dns\",\n \"value\": \"testtls.ophir.dev\"\n },\n \"status\": \"pending\",\n \"expires\": \"2023-12-02T02:11:12Z\",\n \"challenges\": [\n {\n \"type\": \"http-01\",\n \"status\": \"pending\",\n \"url\": \"https://acme-staging-v02.api.letsencrypt.org/acme/chall-v3/9668899504/rZtzQQ\",\n \"token\": \"vTY6qQj8AiSGG7o73fDzUAMGa3ynjRV8UQ_WpaiwMlw\"\n },\n {\n \"type\": \"dns-01\",\n \"status\": \"pending\",\n \"url\": \"https://acme-staging-v02.api.letsencrypt.org/acme/chall-v3/9668899504/prQZAA\",\n \"token\": \"vTY6qQj8AiSGG7o73fDzUAMGa3ynjRV8UQ_WpaiwMlw\"\n },\n {\n \"type\": \"tls-alpn-01\",\n \"status\": \"pending\",\n \"url\": \"https://acme-staging-v02.api.letsencrypt.org/acme/chall-v3/9668899504/DRzKsg\",\n \"token\": \"vTY6qQj8AiSGG7o73fDzUAMGa3ynjRV8UQ_WpaiwMlw\"\n }\n ]\n}" [2023-11-25T02:11:16.635Z INFO rustls_acme::state] authorization for testtls.ophir.dev still pending [2023-11-25T02:11:16.643Z DEBUG rustls::client::hs] Resuming session [2023-11-25T02:11:16.927Z DEBUG rustls::client::hs] Using ciphersuite TLS13_AES_256_GCM_SHA384 [2023-11-25T02:11:16.927Z DEBUG rustls::client::tls13] Not resuming [2023-11-25T02:11:16.928Z DEBUG rustls::client::tls13] TLS1.3 encrypted extensions: [ServerNameAck] [2023-11-25T02:11:16.928Z DEBUG rustls::client::hs] ALPN protocol is None [2023-11-25T02:11:17.182Z DEBUG rustls::client::hs] Resuming session [2023-11-25T02:11:17.191Z DEBUG rustls::server::hs] decided upon suite TLS13_AES_128_GCM_SHA256 [2023-11-25T02:11:17.191Z DEBUG rustls::server::tls13::client_hello] Client unwilling to resume, DHE_KE not offered [2023-11-25T02:11:17.192Z DEBUG rustls::server::hs] Chosen ALPN protocol [97, 99, 109, 101, 45, 116, 108, 115, 47, 49] [2023-11-25T02:11:17.356Z DEBUG rustls::common_state] Sending warning alert CloseNotify [2023-11-25T02:11:17.488Z DEBUG rustls::client::hs] Using ciphersuite TLS13_AES_256_GCM_SHA384 [2023-11-25T02:11:17.488Z DEBUG rustls::client::tls13] Resuming using PSK [2023-11-25T02:11:17.488Z DEBUG rustls::client::tls13] TLS1.3 encrypted extensions: [ServerNameAck] [2023-11-25T02:11:17.488Z DEBUG rustls::client::hs] ALPN protocol is None [2023-11-25T02:11:17.683Z DEBUG rustls_acme::acme] response: "{\n \"type\": \"tls-alpn-01\",\n \"status\": \"pending\",\n \"url\": \"https://acme-staging-v02.api.letsencrypt.org/acme/chall-v3/9668899504/DRzKsg\",\n \"token\": \"vTY6qQj8AiSGG7o73fDzUAMGa3ynjRV8UQ_WpaiwMlw\"\n}" [2023-11-25T02:11:17.778Z DEBUG rustls::server::hs] decided upon suite TLS13_AES_128_GCM_SHA256 [2023-11-25T02:11:17.778Z DEBUG rustls::server::tls13::client_hello] Client unwilling to resume, DHE_KE not offered [2023-11-25T02:11:17.778Z DEBUG rustls::server::hs] Chosen ALPN protocol [97, 99, 109, 101, 45, 116, 108, 115, 47, 49] [2023-11-25T02:11:17.882Z DEBUG rustls::server::hs] decided upon suite TLS13_AES_128_GCM_SHA256 [2023-11-25T02:11:17.882Z DEBUG rustls::server::tls13::client_hello] Client unwilling to resume, DHE_KE not offered [2023-11-25T02:11:17.883Z DEBUG rustls::server::hs] Chosen ALPN protocol [97, 99, 109, 101, 45, 116, 108, 115, 47, 49] [2023-11-25T02:11:17.894Z DEBUG rustls::common_state] Sending warning alert CloseNotify [2023-11-25T02:11:18.094Z DEBUG rustls::common_state] Sending warning alert CloseNotify [2023-11-25T02:11:18.209Z DEBUG rustls::server::hs] decided upon suite TLS13_AES_128_GCM_SHA256 [2023-11-25T02:11:18.209Z DEBUG rustls::server::tls13::client_hello] Client unwilling to resume, DHE_KE not offered [2023-11-25T02:11:18.210Z DEBUG rustls::server::hs] Chosen ALPN protocol [97, 99, 109, 101, 45, 116, 108, 115, 47, 49] [2023-11-25T02:11:18.399Z DEBUG rustls::common_state] Sending warning alert CloseNotify [2023-11-25T02:11:19.695Z DEBUG rustls::client::hs] Resuming session [2023-11-25T02:11:20.037Z DEBUG rustls::client::hs] Using ciphersuite TLS13_AES_256_GCM_SHA384 [2023-11-25T02:11:20.037Z DEBUG rustls::client::tls13] Not resuming [2023-11-25T02:11:20.038Z DEBUG rustls::client::tls13] TLS1.3 encrypted extensions: [ServerNameAck] [2023-11-25T02:11:20.038Z DEBUG rustls::client::hs] ALPN protocol is None [2023-11-25T02:11:20.255Z DEBUG rustls::client::hs] Resuming session [2023-11-25T02:11:20.563Z DEBUG rustls::client::hs] Using ciphersuite TLS13_AES_256_GCM_SHA384 [2023-11-25T02:11:20.563Z DEBUG rustls::client::tls13] Resuming using PSK [2023-11-25T02:11:20.563Z DEBUG rustls::client::tls13] TLS1.3 encrypted extensions: [ServerNameAck] [2023-11-25T02:11:20.563Z DEBUG rustls::client::hs] ALPN protocol is None [2023-11-25T02:11:20.755Z DEBUG rustls_acme::acme] response: "{\n \"identifier\": {\n \"type\": \"dns\",\n \"value\": \"testtls.ophir.dev\"\n },\n \"status\": \"valid\",\n \"expires\": \"2023-12-25T02:11:17Z\",\n \"challenges\": [\n {\n \"type\": \"tls-alpn-01\",\n \"status\": \"valid\",\n \"url\": \"https://acme-staging-v02.api.letsencrypt.org/acme/chall-v3/9668899504/DRzKsg\",\n \"token\": \"vTY6qQj8AiSGG7o73fDzUAMGa3ynjRV8UQ_WpaiwMlw\",\n \"validationRecord\": [\n {\n \"hostname\": \"testtls.ophir.dev\",\n \"port\": \"443\",\n \"addressesResolved\": [\n \"2a01:4f8:c0c:5754::2\"\n ],\n \"addressUsed\": \"2a01:4f8:c0c:5754::2\"\n }\n ],\n \"validated\": \"2023-11-25T02:11:14Z\"\n }\n ]\n}" [2023-11-25T02:11:20.755Z INFO rustls_acme::state] completed all authorizations [2023-11-25T02:11:20.765Z DEBUG rustls::client::hs] Resuming session [2023-11-25T02:11:21.164Z DEBUG rustls::client::hs] Using ciphersuite TLS13_AES_256_GCM_SHA384 [2023-11-25T02:11:21.164Z DEBUG rustls::client::tls13] Resuming using PSK [2023-11-25T02:11:21.165Z DEBUG rustls::client::tls13] TLS1.3 encrypted extensions: [ServerNameAck] [2023-11-25T02:11:21.165Z DEBUG rustls::client::hs] ALPN protocol is None [2023-11-25T02:11:21.378Z DEBUG rustls::client::hs] Resuming session [2023-11-25T02:11:21.654Z DEBUG rustls::client::hs] Using ciphersuite TLS13_AES_256_GCM_SHA384 [2023-11-25T02:11:21.654Z DEBUG rustls::client::tls13] Not resuming [2023-11-25T02:11:21.654Z DEBUG rustls::client::tls13] TLS1.3 encrypted extensions: [ServerNameAck] [2023-11-25T02:11:21.654Z DEBUG rustls::client::hs] ALPN protocol is None [2023-11-25T02:11:21.881Z DEBUG rustls_acme::acme] response: "{\n \"status\": \"ready\",\n \"expires\": \"2023-12-02T02:11:12Z\",\n \"identifiers\": [\n {\n \"type\": \"dns\",\n \"value\": \"testtls.ophir.dev\"\n }\n ],\n \"authorizations\": [\n \"https://acme-staging-v02.api.letsencrypt.org/acme/authz-v3/9668899504\"\n ],\n \"finalize\": \"https://acme-staging-v02.api.letsencrypt.org/acme/finalize/126687904/12514248154\"\n}" [2023-11-25T02:11:21.881Z INFO rustls_acme::state] sending csr [2023-11-25T02:11:21.900Z DEBUG rustls::client::hs] Resuming session [2023-11-25T02:11:22.296Z DEBUG rustls::client::hs] Using ciphersuite TLS13_AES_256_GCM_SHA384 [2023-11-25T02:11:22.296Z DEBUG rustls::client::tls13] Not resuming [2023-11-25T02:11:22.296Z DEBUG rustls::client::tls13] TLS1.3 encrypted extensions: [ServerNameAck] [2023-11-25T02:11:22.296Z DEBUG rustls::client::hs] ALPN protocol is None [2023-11-25T02:11:22.505Z DEBUG rustls::client::hs] Resuming session [2023-11-25T02:11:22.783Z DEBUG rustls::client::hs] Using ciphersuite TLS13_AES_256_GCM_SHA384 [2023-11-25T02:11:22.783Z DEBUG rustls::client::tls13] Resuming using PSK [2023-11-25T02:11:22.783Z DEBUG rustls::client::tls13] TLS1.3 encrypted extensions: [ServerNameAck] [2023-11-25T02:11:22.783Z DEBUG rustls::client::hs] ALPN protocol is None [2023-11-25T02:11:23.008Z DEBUG rustls_acme::acme] response: "{\n \"status\": \"processing\",\n \"expires\": \"2023-12-02T02:11:12Z\",\n \"identifiers\": [\n {\n \"type\": \"dns\",\n \"value\": \"testtls.ophir.dev\"\n }\n ],\n \"authorizations\": [\n \"https://acme-staging-v02.api.letsencrypt.org/acme/authz-v3/9668899504\"\n ],\n \"finalize\": \"https://acme-staging-v02.api.letsencrypt.org/acme/finalize/126687904/12514248154\"\n}" [2023-11-25T02:11:23.008Z INFO rustls_acme::state] order processing [2023-11-25T02:11:24.020Z DEBUG rustls::client::hs] Resuming session [2023-11-25T02:11:24.442Z DEBUG rustls::client::hs] Using ciphersuite TLS13_AES_256_GCM_SHA384 [2023-11-25T02:11:24.442Z DEBUG rustls::client::tls13] Not resuming [2023-11-25T02:11:24.442Z DEBUG rustls::client::tls13] TLS1.3 encrypted extensions: [ServerNameAck] [2023-11-25T02:11:24.442Z DEBUG rustls::client::hs] ALPN protocol is None [2023-11-25T02:11:24.656Z DEBUG rustls::client::hs] Resuming session [2023-11-25T02:11:24.929Z DEBUG rustls::client::hs] Using ciphersuite TLS13_AES_256_GCM_SHA384 [2023-11-25T02:11:24.929Z DEBUG rustls::client::tls13] Resuming using PSK [2023-11-25T02:11:24.930Z DEBUG rustls::client::tls13] TLS1.3 encrypted extensions: [ServerNameAck] [2023-11-25T02:11:24.930Z DEBUG rustls::client::hs] ALPN protocol is None [2023-11-25T02:11:25.158Z DEBUG rustls_acme::acme] response: "{\n \"status\": \"valid\",\n \"expires\": \"2023-12-02T02:11:12Z\",\n \"identifiers\": [\n {\n \"type\": \"dns\",\n \"value\": \"testtls.ophir.dev\"\n }\n ],\n \"authorizations\": [\n \"https://acme-staging-v02.api.letsencrypt.org/acme/authz-v3/9668899504\"\n ],\n \"finalize\": \"https://acme-staging-v02.api.letsencrypt.org/acme/finalize/126687904/12514248154\",\n \"certificate\": \"https://acme-staging-v02.api.letsencrypt.org/acme/cert/fae847b77e0534dcf0cb5a3957970e02fbce\"\n}" [2023-11-25T02:11:25.158Z INFO rustls_acme::state] download certificate [2023-11-25T02:11:25.170Z DEBUG rustls::client::hs] Resuming session [2023-11-25T02:11:25.568Z DEBUG rustls::client::hs] Using ciphersuite TLS13_AES_256_GCM_SHA384 [2023-11-25T02:11:25.568Z DEBUG rustls::client::tls13] Not resuming [2023-11-25T02:11:25.569Z DEBUG rustls::client::tls13] TLS1.3 encrypted extensions: [ServerNameAck] [2023-11-25T02:11:25.569Z DEBUG rustls::client::hs] ALPN protocol is None [2023-11-25T02:11:25.782Z DEBUG rustls::client::hs] Resuming session [2023-11-25T02:11:26.051Z DEBUG rustls::client::hs] Using ciphersuite TLS13_AES_256_GCM_SHA384 [2023-11-25T02:11:26.051Z DEBUG rustls::client::tls13] Resuming using PSK [2023-11-25T02:11:26.051Z DEBUG rustls::client::tls13] TLS1.3 encrypted extensions: [ServerNameAck] [2023-11-25T02:11:26.051Z DEBUG rustls::client::hs] ALPN protocol is None [2023-11-25T02:11:26.286Z DEBUG rustls_acme::acme] response: "-----BEGIN CERTIFICATE-----\n ... -----END CERTIFICATE-----\n" [2023-11-25T02:11:26.286Z INFO sqlpage::webserver::https] ACME configuration event: DeployedNewCert [2023-11-25T02:11:26.287Z INFO sqlpage::webserver::https] ACME configuration event: CertCacheStore ```