| SYSTEM INFORMATION | |
|---|---|
| OS type and version | Debian Linux 12 |
| Webmin version | 2.641 |
| Virtualmin version | 8.1.0 Professional |
| Webserver version | Apache 2.4.67 |
| Related packages | N/A |
I updated to webmin 2.650 when I saw it listed in my available updates. After doing that I was unable to create a letsencrypt cert. I believe the domain was created before the upgrade, and I did not test upgrading first, then creating the domain and cert. I have since reverted to the previous webmin package and was able to successfully create a cert.
The errors I received were:
Initial Request:
Web-based validation failed : Expected full certificate file /etc/letsencrypt/live/seafile.myDomain.me/fullchain.pemKeyissavedat:/etc/letsencrypt/live/seafile.myDomain.me/privkey.pem was not found DNS-based validation failed : Expected full certificate file /etc/letsencrypt/live/seafile.myDomain.me/fullchain.pemKeyissavedat:/etc/letsencrypt/live/seafile.myDomain.me/privkey.pem was not found
Subsequent tries gave me the following:
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Renewing an existing certificate for seafile.myDomain.me and www.seafile.myDomain.me
An unexpected error occurred:
AttributeError: can't set attribute
Ask for help or search for solutions at https://community.letsencrypt.org. See the logfile /var/log/letsencrypt/letsencrypt.log or re-run Certbot with -v for more details.
Errors from the letsencrypt.log are here:
Count of Errors. Only concerned with 2026-06-27
Line 79: 2026-06-21 13:13:44,458:DEBUG:urllib3.connectionpool:https://acme-v02.api.letsencrypt.org:443 “POST /acme/new-order HTTP/1.1” 201 517
Line 821: 2026-06-21 15:50:13,579:DEBUG:urllib3.connectionpool:https://acme-v02.api.letsencrypt.org:443 “POST /acme/new-order HTTP/1.1” 201 689
Line 1767: 2026-06-23 15:45:14,084:DEBUG:urllib3.connectionpool:https://acme-v02.api.letsencrypt.org:443 “POST /acme/new-order HTTP/1.1” 201 513
Line 2506: 2026-06-24 10:20:13,272:DEBUG:urllib3.connectionpool:https://acme-v02.api.letsencrypt.org:443 “POST /acme/new-order HTTP/1.1” 201 796
Line 3500: 2026-06-27 09:41:52,549:DEBUG:urllib3.connectionpool:https://acme-v02.api.letsencrypt.org:443 “POST /acme/new-order HTTP/1.1” 201 503
Line 4241: 2026-06-27 09:42:01,785:DEBUG:urllib3.connectionpool:https://acme-v02.api.letsencrypt.org:443 “POST /acme/new-order HTTP/1.1” 201 501
Line 4694: 2026-06-27 09:42:25,035:DEBUG:urllib3.connectionpool:https://acme-v02.api.letsencrypt.org:443 “POST /acme/new-order HTTP/1.1” 201 501
Line 5147: 2026-06-27 09:42:28,546:DEBUG:urllib3.connectionpool:https://acme-v02.api.letsencrypt.org:443 “POST /acme/new-order HTTP/1.1” 201 501
Line 5600: 2026-06-27 09:46:55,478:DEBUG:urllib3.connectionpool:https://acme-v02.api.letsencrypt.org:443 “POST /acme/new-order HTTP/1.1” 201 501
Line 6053: 2026-06-27 09:46:59,036:DEBUG:urllib3.connectionpool:https://acme-v02.api.letsencrypt.org:443 “POST /acme/new-order HTTP/1.1” 429 312
Line 6210: 2026-06-27 09:47:20,784:DEBUG:urllib3.connectionpool:https://acme-v02.api.letsencrypt.org:443 “POST /acme/new-order HTTP/1.1” 429 312
Line 6367: 2026-06-27 09:47:22,312:DEBUG:urllib3.connectionpool:https://acme-v02.api.letsencrypt.org:443 “POST /acme/new-order HTTP/1.1” 429 312
Line 6525: 2026-06-27 09:48:20,123:DEBUG:urllib3.connectionpool:https://acme-v02.api.letsencrypt.org:443 “POST /acme/new-order HTTP/1.1” 201 511
Line 6980: 2026-06-27 09:48:23,990:DEBUG:urllib3.connectionpool:https://acme-v02.api.letsencrypt.org:443 “POST /acme/new-order HTTP/1.1” 201 511
Line 7435: 2026-06-27 09:48:47,552:DEBUG:urllib3.connectionpool:https://acme-v02.api.letsencrypt.org:443 “POST /acme/new-order HTTP/1.1” 201 511
Line 7890: 2026-06-27 09:48:52,058:DEBUG:urllib3.connectionpool:https://acme-v02.api.letsencrypt.org:443 “POST /acme/new-order HTTP/1.1” 201 511
By the count, it almost looks like it’s repeatedly asking for a new cert. Below is the log output from the tail end of the successful request, and the start of the failed request.
letsencrypt.log
2026-06-27 09:46:57,514:DEBUG:acme.client:Storing nonce: tgKU1SCRnlZCGtwUOK1ow_d_YRBTMMW4mbcftyWal-GNEfn0nJY
2026-06-27 09:46:57,517:DEBUG:certbot._internal.storage:Writing new private key to /etc/letsencrypt/archive/seafile.myDomain.me/privkey5.pem.
2026-06-27 09:46:57,517:DEBUG:certbot._internal.storage:Writing certificate to /etc/letsencrypt/archive/seafile.myDomain.me/cert5.pem.
2026-06-27 09:46:57,517:DEBUG:certbot._internal.storage:Writing chain to /etc/letsencrypt/archive/seafile.myDomain.me/chain5.pem.
2026-06-27 09:46:57,517:DEBUG:certbot._internal.storage:Writing full chain to /etc/letsencrypt/archive/seafile.myDomain.me/fullchain5.pem.
2026-06-27 09:46:57,518:DEBUG:certbot._internal.cli:Var rsa_key_size=2048 (set by user).
2026-06-27 09:46:57,518:DEBUG:certbot._internal.cli:Var key_type=rsa (set by user).
2026-06-27 09:46:57,518:DEBUG:certbot._internal.cli:Var autorenew=True (set by user).
2026-06-27 09:46:57,518:DEBUG:certbot._internal.cli:Var authenticator=webroot (set by user).
2026-06-27 09:46:57,518:DEBUG:certbot._internal.cli:Var webroot_path=/home/myDomain/domains/seafile.myDomain.me/public_html (set by user).
2026-06-27 09:46:57,518:DEBUG:certbot._internal.cli:Var webroot_path=/home/myDomain/domains/seafile.myDomain.me/public_html (set by user).
2026-06-27 09:46:57,518:DEBUG:certbot._internal.cli:Var webroot_map={‘webroot_path’} (set by user).
2026-06-27 09:46:57,518:DEBUG:certbot._internal.storage:Writing new config /etc/letsencrypt/renewal/seafile.myDomain.me.conf.new.
2026-06-27 09:46:57,522:DEBUG:certbot._internal.display.obj:Notifying user:
Successfully received certificate.
Certificate is saved at: /etc/letsencrypt/live/seafile.myDomain.me/fullchain.pem
Key is saved at: /etc/letsencrypt/live/seafile.myDomain.me/privkey.pem
This certificate expires on 2026-09-25.
These files will be updated when the certificate renews.
Certbot has set up a scheduled task to automatically renew this certificate in the background.
2026-06-27 09:46:57,526:DEBUG:certbot._internal.display.obj:Notifying user: If you like Certbot, please consider supporting our work by:
- Donating to ISRG / Let’s Encrypt: Support Encryption for Everyone - Let's Encrypt
- Donating to EFF: Support EFF's Work on Let's Encrypt | Electronic Frontier Foundation
2026-06-27 09:46:58,394:DEBUG:certbot._internal.main:certbot version: 2.1.0
2026-06-27 09:46:58,394:DEBUG:certbot._internal.main:Location of certbot entry point: /bin/letsencrypt
2026-06-27 09:46:58,394:DEBUG:certbot._internal.main:Arguments: [‘–manual’, ‘-d’, ‘seafile.myDomain.me’, ‘-d’, ‘www.seafile.myDomain.me’, ‘–preferred-challenges=dns’, ‘–manual-auth-hook’, ‘/etc/webmin/webmin/letsencrypt-dns.pl’, ‘–manual-cleanup-hook’, ‘/etc/webmin/webmin/letsencrypt-cleanup.pl’, ‘–duplicate’, ‘–force-renewal’, ‘–non-interactive’, ‘–agree-tos’, ‘–config’, ‘/tmp/.webmin/572654_789961_3_letsencrypt.cgi’, ‘–rsa-key-size’, ‘2048’, ‘–cert-name’, ‘seafile.myDomain.me’, ‘–no-autorenew’, ‘–key-type’, ‘rsa’]
2026-06-27 09:46:58,395:DEBUG:certbot._internal.main:Discovered plugins: PluginsRegistry(PluginEntryPoint#manual,PluginEntryPoint#null,PluginEntryPoint#standalone,PluginEntryPoint#webroot)
2026-06-27 09:46:58,401:DEBUG:certbot._internal.log:Root logging level set at 30
2026-06-27 09:46:58,402:DEBUG:certbot._internal.plugins.selection:Requested authenticator manual and installer None
2026-06-27 09:46:58,402:DEBUG:certbot._internal.plugins.selection:Single candidate plugin: * manual
Description: Manual configuration or run your own shell scripts
Interfaces: Authenticator, Plugin
Entry point: manual = certbot._internal.plugins.manual:Authenticator
Initialized: <certbot._internal.plugins.manual.Authenticator object at 0x7f668b027cd0>
Prep: True
2026-06-27 09:46:58,403:DEBUG:certbot._internal.plugins.selection:Selected authenticator <certbot._internal.plugins.manual.Authenticator object at 0x7f668b027cd0> and installer None
2026-06-27 09:46:58,403:INFO:certbot._internal.plugins.selection:Plugins selected: Authenticator manual, Installer None
2026-06-27 09:46:58,444:DEBUG:certbot._internal.main:Picked account: <Account(RegistrationResource(body=Registration(key=None, contact=(), agreement=None, status=None, terms_of_service_agreed=None, only_return_existing=None, external_account_binding=None), uri=‘https://acme-v02.api.letsencrypt.org/acme/acct/2488258721’, new_authzr_uri=None, terms_of_service=None), 296756a407bb35ca0605b325b9711f0b, Meta(creation_dt=datetime.datetime(2025, 6, 25, 15, 26, 42, tzinfo=), creation_host=‘david.c9design.top’, register_to_eff=None))>
2026-06-27 09:46:58,445:DEBUG:acme.client:Sending GET request to https://acme-v02.api.letsencrypt.org/directory.
2026-06-27 09:46:58,446:DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): acme-v02.api.letsencrypt.org:443
2026-06-27 09:46:58,647:DEBUG:urllib3.connectionpool:https://acme-v02.api.letsencrypt.org:443 “GET /directory HTTP/1.1” 200 1031
2026-06-27 09:46:58,647:DEBUG:acme.client:Received response:
HTTP 200
Server: nginx
Date: Sat, 27 Jun 2026 14:46:58 GMT
Content-Type: application/json
Content-Length: 1031
Connection: keep-alive
Cache-Control: public, max-age=0, no-cache
X-Frame-Options: DENY
Strict-Transport-Security: max-age=604800
{
“MfbSo8Cbr5k”: “Adding random entries to the directory - API Announcements - Let's Encrypt Community Support”,
“keyChange”: “https://acme-v02.api.letsencrypt.org/acme/key-change”,
“meta”: {
“caaIdentities”: [
“letsencrypt.org”
],
“profiles”: {
“classic”: “Profiles - Let's Encrypt”,
“shortlived”: “Profiles - Let's Encrypt”,
“tlsclient”: “Profiles - Let's Encrypt”,
“tlsserver”: “Profiles - Let's Encrypt”
},
“termsOfService”: “https://letsencrypt.org/documents/LE-SA-v1.7-June-04-2026.pdf”,
“website”: “https://letsencrypt.org”
},
“newAccount”: “https://acme-v02.api.letsencrypt.org/acme/new-acct”,
“newNonce”: “https://acme-v02.api.letsencrypt.org/acme/new-nonce”,
“newOrder”: “https://acme-v02.api.letsencrypt.org/acme/new-order”,
“renewalInfo”: “https://acme-v02.api.letsencrypt.org/acme/renewal-info”,
“revokeCert”: “https://acme-v02.api.letsencrypt.org/acme/revoke-cert”
}
2026-06-27 09:46:58,690:DEBUG:certbot._internal.renewal:Auto-renewal forced with --force-renewal…
2026-06-27 09:46:58,690:DEBUG:certbot._internal.display.obj:Notifying user: Renewing an existing certificate for seafile.myDomain.me and www.seafile.myDomain.me
2026-06-27 09:46:58,696:DEBUG:certbot._internal.plugins.selection:Requested authenticator manual and installer <certbot._internal.cli.cli_utils._Default object at 0x7f668ac92890>
2026-06-27 09:46:58,890:DEBUG:certbot.crypto_util:Generating RSA key (2048 bits): /etc/letsencrypt/keys/0129_key-certbot.pem
2026-06-27 09:46:58,894:DEBUG:certbot.crypto_util:Creating CSR: /etc/letsencrypt/csr/0246_csr-certbot.pem
2026-06-27 09:46:58,895:DEBUG:acme.client:Requesting fresh nonce
2026-06-27 09:46:58,895:DEBUG:acme.client:Sending HEAD request to https://acme-v02.api.letsencrypt.org/acme/new-nonce.
2026-06-27 09:46:58,961:DEBUG:urllib3.connectionpool:https://acme-v02.api.letsencrypt.org:443 “HEAD /acme/new-nonce HTTP/1.1” 200 0
2026-06-27 09:46:58,961:DEBUG:acme.client:Received response:
HTTP 200
Server: nginx
Date: Sat, 27 Jun 2026 14:46:58 GMT
Connection: keep-alive
Cache-Control: public, max-age=0, no-cache
Link: https://acme-v02.api.letsencrypt.org/directory;rel=“index”
Replay-Nonce: tgKU1SCROGTIHI8Gy8DhzZRGy0hxKHseDLhdwGx2O16pZuIvfLM
X-Frame-Options: DENY
Strict-Transport-Security: max-age=604800
2026-06-27 09:46:58,963:DEBUG:acme.client:Storing nonce: tgKU1SCROGTIHI8Gy8DhzZRGy0hxKHseDLhdwGx2O16pZuIvfLM
2026-06-27 09:46:58,963:DEBUG:acme.client:JWS payload:
b’{\n “identifiers”: [\n {\n “type”: “dns”,\n “value”: “seafile.myDomain.me”\n },\n {\n “type”: “dns”,\n “value”: “www.seafile.myDomain.me”\n }\n ]\n}’
2026-06-27 09:46:58,965:DEBUG:acme.client:Sending POST request to https://acme-v02.api.letsencrypt.org/acme/new-order:
{
“protected”: “eyJhbGciOiAiUlMyNTYiLCAia2lkIjogImh0dHBzOi8vYWNtZS12MDIuYXBpLmxldHNlbmNyeXB0Lm9yZy9hY21lL2FjY3QvMjQ4ODI1ODcyMSIsICJub25jZSI6ICJ0Z0tVMVNDUk9HVElISThHeThEaHpaUkd5MGh4S0hzZURMaGR3R3gyTzE2cFp1SXZmTE0iLCAidXJsIjogImh0dHBzOi8vYWNtZS12MDIuYXBpLmxldHNlbmNyeXB0Lm9yZy9hY21lL25ldy1vcmRlciJ9”,
“signature”: “oJcXKkIJOfVVpa1OnFJ8sDjVp6lY74-PUqWC7KuD-RZ-Gv24ZLVXG4bVTaNoQa4_v45nDi_cmrMlmawanrtRO5sb09IC1SRBQaTfDI09zeo03QR1clXxlbO8kytd3ZVMFiHvdpRNzQ0kBOGgkR4cxVx1-QB8BbtgpUiTPA_77oX_5aA3lIQC3YzxHkBLtcvs3qajBUJIOHAvUC42HiP-m8O3orvPmoPoDnVMjnRuGFGmGcGoh_tJolNvjxUOgR_5ulvghsbC_qIttmdj3n68dagZiju1vPavTRfaJTnz4MerCKFw26jWlf7IaZJ8FfnJ7-OjIMDZ7XjhvY1wXza8Jw”,
“payload”: “ewogICJpZGVudGlmaWVycyI6IFsKICAgIHsKICAgICAgInR5cGUiOiAiZG5zIiwKICAgICAgInZhbHVlIjogInNlYWZpbGUuYnVza292Lm1lIgogICAgfSwKICAgIHsKICAgICAgInR5cGUiOiAiZG5zIiwKICAgICAgInZhbHVlIjogInd3dy5zZWFmaWxlLmJ1c2tvdi5tZSIKICAgIH0KICBdCn0”
}
2026-06-27 09:46:59,036:DEBUG:urllib3.connectionpool:https://acme-v02.api.letsencrypt.org:443 “POST /acme/new-order HTTP/1.1” 429 312
2026-06-27 09:46:59,036:DEBUG:acme.client:Received response:
HTTP 429
Server: nginx
Date: Sat, 27 Jun 2026 14:46:58 GMT
Content-Type: application/problem+json
Content-Length: 312
Connection: keep-alive
Boulder-Requester: 2488258721
Cache-Control: public, max-age=0, no-cache
Link: https://acme-v02.api.letsencrypt.org/directory;rel=“index”, https://letsencrypt.org/docs/rate-limits;rel=“help”
Replay-Nonce: tgKU1SCRV6wXz0YitYA5eQkpM7gYYTO8OBAJKb5BvHwJyRUpm2U
Retry-After: 124146