Unable to find a virtual host

Please fill out the fields below so we can help you better. Note: you must provide your domain name to get help. Domain names for issued certificates are all made public in Certificate Transparency logs (e.g. crt.sh | example.com), so withholding your domain name here does not increase secrecy, but only makes it harder for us to provide help.

My domain is: jbillings.net and kcsports.net

I ran this command:

sudo certbot -v

It produced this output:

Saving debug log to /var/log/letsencrypt/letsencrypt.log

ssl_module is statically linked but --apache-bin is missing; not disabling session tickets.

Plugins selected: Authenticator apache, Installer apache

Please enter the domain name(s) you would like on your certificate (comma and/or

space separated) (Enter 'c' to cancel): jbillings.net kcsports.net

Requesting a certificate for jbillings.net and kcsports.net

Performing the following challenges:

http-01 challenge for jbillings.net

http-01 challenge for kcsports.net

Cleaning up challenges

Unable to find a virtual host listening on port 80 which is currently needed for Certbot to prove to the CA that you control your domain. Please add a virtual host for port 80.

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.

My web server is (include version):
Apache 2.4.46

The operating system my web server runs on is (include version): MacOS 11 Big Sur
My hosting provider, if applicable, is:

I can login to a root shell on my machine (yes or no, or I don't know):
YES

I'm using a control panel to manage my site (no, or provide the name and version of the control panel):

The version of my client is (e.g. output of certbot --version or certbot-auto --version if you're using Certbot):
certbot 1.16.0

vhost file

# Virtual Hosts
#
# Required modules: mod_log_config

# If you want to maintain multiple domains/hostnames on your
# machine you can setup VirtualHost containers for them. Most configurations
# use only name-based virtual hosts so the server doesn't need to worry about
# IP addresses. This is indicated by the asterisks in the directives below.
#
# Please see the documentation at 
# <URL:http://httpd.apache.org/docs/2.4/vhosts/>
# for further details before you try to setup virtual hosts.
#
# You may use the command line option '-S' to verify your virtual host
# configuration.

#
# VirtualHost example:
# Almost any Apache directive may go into a VirtualHost container.
# The first VirtualHost section is used for all requests that do not
# match a ServerName or ServerAlias in any <VirtualHost> block.





<VirtualHost *:80>
    ServerAdmin jeffreybillings@mac.com
    DocumentRoot "/Library/WebServer/Documents/jbillings"
    ServerName jbillings.net
    ServerAlias www.jbillings.net
    ErrorLog "/private/var/log/apache2/jbillings.net-error_log"
    CustomLog "/private/var/log/apache2/jbillings.net-access_log" common
</VirtualHost>

<VirtualHost *:80>
    ServerAdmin jeffreybillings@mac.com
    DocumentRoot "/Library/WebServer/Documents/kcsports"
    ServerName kcsports.net
    ServerAlias www.kcsports.net
    ErrorLog "/private/var/log/apache2/kcspors.net-error_log"
    CustomLog "/private/var/log/apache2/kcsports.net-access_log" common
</VirtualHost>

Letsencrypt log:

2021-07-05 22:56:24,797:DEBUG:certbot._internal.main:certbot version: 1.16.0
2021-07-05 22:56:24,797:DEBUG:certbot._internal.main:Location of certbot entry point: /usr/local/bin/certbot
2021-07-05 22:56:24,797:DEBUG:certbot._internal.main:Arguments: ['-v']
2021-07-05 22:56:24,798:DEBUG:certbot._internal.main:Discovered plugins: PluginsRegistry(PluginEntryPoint#apache,PluginEntryPoint#manual,PluginEntryPoint#nginx,PluginEntryPoint#null,PluginEntryPoint#standalone,PluginEntryPoint#webroot)
2021-07-05 22:56:24,842:DEBUG:certbot._internal.log:Root logging level set at 20
2021-07-05 22:56:24,843:DEBUG:certbot._internal.plugins.selection:Requested authenticator None and installer None
2021-07-05 22:56:25,037:DEBUG:certbot_apache._internal.configurator:Apache version is 2.4.46
2021-07-05 22:56:25,359:WARNING:certbot_apache._internal.configurator:ssl_module is statically linked but --apache-bin is missing; not disabling session tickets.
2021-07-05 22:56:25,360:DEBUG:certbot._internal.plugins.disco:No installation (PluginEntryPoint#nginx): Could not find a usable 'nginx' binary. Ensure nginx exists, the binary is executable, and your PATH is set correctly.
Traceback (most recent call last):
  File "/usr/local/Cellar/certbot/1.16.0/libexec/lib/python3.9/site-packages/certbot/_internal/plugins/disco.py", line 158, in prepare
    self._initialized.prepare()  # type: ignore
  File "/usr/local/Cellar/certbot/1.16.0/libexec/lib/python3.9/site-packages/certbot_nginx/_internal/configurator.py", line 189, in prepare
    raise errors.NoInstallationError(
certbot.errors.NoInstallationError: Could not find a usable 'nginx' binary. Ensure nginx exists, the binary is executable, and your PATH is set correctly.
2021-07-05 22:56:25,361:DEBUG:certbot._internal.plugins.selection:Single candidate plugin: * apache
Description: Apache Web Server plugin
Interfaces: IAuthenticator, IInstaller, IPlugin
Entry point: apache = certbot_apache._internal.entrypoint:ENTRYPOINT
Initialized: <certbot_apache._internal.override_darwin.DarwinConfigurator object at 0x10acc60d0>
Prep: True
2021-07-05 22:56:25,362:DEBUG:certbot._internal.plugins.selection:Selected authenticator <certbot_apache._internal.override_darwin.DarwinConfigurator object at 0x10acc60d0> and installer <certbot_apache._internal.override_darwin.DarwinConfigurator object at 0x10acc60d0>
2021-07-05 22:56:25,362:INFO:certbot._internal.plugins.selection:Plugins selected: Authenticator apache, Installer apache
2021-07-05 22:56:25,370: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/129481415', new_authzr_uri=None, terms_of_service=None), 56ddd5f15b7815f8ffc06f1f2d7065af, Meta(creation_dt=datetime.datetime(2021, 7, 6, 1, 15, 24, tzinfo=<UTC>), creation_host='Sysadmins-Mac-Pro.local', register_to_eff='jeffreybillings@mac.com'))>
2021-07-05 22:56:25,384:DEBUG:acme.client:Sending GET request to https://acme-v02.api.letsencrypt.org/directory.
2021-07-05 22:56:25,419:DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): acme-v02.api.letsencrypt.org:443
2021-07-05 22:56:25,596:DEBUG:urllib3.connectionpool:https://acme-v02.api.letsencrypt.org:443 "GET /directory HTTP/1.1" 200 658
2021-07-05 22:56:25,597:DEBUG:acme.client:Received response:
HTTP 200
Server: nginx
Date: Tue, 06 Jul 2021 03:56:25 GMT
Content-Type: application/json
Content-Length: 658
Connection: keep-alive
Cache-Control: public, max-age=0, no-cache
X-Frame-Options: DENY
Strict-Transport-Security: max-age=604800

{
  "U8PjmYFwfkY": "https://community.letsencrypt.org/t/adding-random-entries-to-the-directory/33417",
  "keyChange": "https://acme-v02.api.letsencrypt.org/acme/key-change",
  "meta": {
    "caaIdentities": [
      "letsencrypt.org"
    ],
    "termsOfService": "https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.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",
  "revokeCert": "https://acme-v02.api.letsencrypt.org/acme/revoke-cert"
}
2021-07-05 22:56:40,712:DEBUG:certbot.display.util:Notifying user: Requesting a certificate for jbillings.net and kcsports.net
2021-07-05 22:56:40,771:DEBUG:certbot.crypto_util:Generating RSA key (2048 bits): /etc/letsencrypt/keys/0014_key-certbot.pem
2021-07-05 22:56:40,774:DEBUG:certbot.crypto_util:Creating CSR: /etc/letsencrypt/csr/0014_csr-certbot.pem
2021-07-05 22:56:40,774:DEBUG:acme.client:Requesting fresh nonce
2021-07-05 22:56:40,775:DEBUG:acme.client:Sending HEAD request to https://acme-v02.api.letsencrypt.org/acme/new-nonce.
2021-07-05 22:56:40,814:DEBUG:urllib3.connectionpool:https://acme-v02.api.letsencrypt.org:443 "HEAD /acme/new-nonce HTTP/1.1" 200 0
2021-07-05 22:56:40,814:DEBUG:acme.client:Received response:
HTTP 200
Server: nginx
Date: Tue, 06 Jul 2021 03:56:40 GMT
Connection: keep-alive
Cache-Control: public, max-age=0, no-cache
Link: <https://acme-v02.api.letsencrypt.org/directory>;rel="index"
Replay-Nonce: 0102QuiD1UQYLQR8EoUX0TPpSZf24Mii2p_H3WtkMYA2-p0
X-Frame-Options: DENY
Strict-Transport-Security: max-age=604800


2021-07-05 22:56:40,814:DEBUG:acme.client:Storing nonce: 0102QuiD1UQYLQR8EoUX0TPpSZf24Mii2p_H3WtkMYA2-p0
2021-07-05 22:56:40,815:DEBUG:acme.client:JWS payload:
b'{\n  "identifiers": [\n    {\n      "type": "dns",\n      "value": "jbillings.net"\n    },\n    {\n      "type": "dns",\n      "value": "kcsports.net"\n    }\n  ]\n}'
2021-07-05 22:56:40,817:DEBUG:acme.client:Sending POST request to https://acme-v02.api.letsencrypt.org/acme/new-order:
{
  "protected": "eyJhbGciOiAiUlMyNTYiLCAia2lkIjogImh0dHBzOi8vYWNtZS12MDIuYXBpLmxldHNlbmNyeXB0Lm9yZy9hY21lL2FjY3QvMTI5NDgxNDE1IiwgIm5vbmNlIjogIjAxMDJRdWlEMVVRWUxRUjhFb1VYMFRQcFNaZjI0TWlpMnBfSDNXdGtNWUEyLXAwIiwgInVybCI6ICJodHRwczovL2FjbWUtdjAyLmFwaS5sZXRzZW5jcnlwdC5vcmcvYWNtZS9uZXctb3JkZXIifQ",
  "signature": "s6Zip_oP7LTGTK5OZnUnFgfpqXPYJ_ZyNHhRlldcuNUYB6cKi7_0h_xBiubjwqFHZ17JPcoYiA_a5015AnuzNLsNDTwfYjonHqY14xQ9sC0DzGynDzSO-mZaYVmTuoxXvztRk7h1EvS7hutYK5UHzTMMOjCYKaT20odXAgxYaeuCFR6wshK08swDO6uC2lao6aNUq3AlPFDH8_qGkQLSjjquUSv_Vo_jnvy4zUrwahFpJPfVbwl6XMJddXbmF6cTtYyPzmEjapH_LOKxJHSYW1SfienYkNrBQ9SpTNzORazPloB7XdtwFSZh0M7lQTCQbH3w_5GJ72Q9058Ligd7hQ",
  "payload": "ewogICJpZGVudGlmaWVycyI6IFsKICAgIHsKICAgICAgInR5cGUiOiAiZG5zIiwKICAgICAgInZhbHVlIjogImpiaWxsaW5ncy5uZXQiCiAgICB9LAogICAgewogICAgICAidHlwZSI6ICJkbnMiLAogICAgICAidmFsdWUiOiAia2NzcG9ydHMubmV0IgogICAgfQogIF0KfQ"
}
2021-07-05 22:56:40,988:DEBUG:urllib3.connectionpool:https://acme-v02.api.letsencrypt.org:443 "POST /acme/new-order HTTP/1.1" 201 470
2021-07-05 22:56:40,989:DEBUG:acme.client:Received response:
HTTP 201
Server: nginx
Date: Tue, 06 Jul 2021 03:56:40 GMT
Content-Type: application/json
Content-Length: 470
Connection: keep-alive
Boulder-Requester: 129481415
Cache-Control: public, max-age=0, no-cache
Link: <https://acme-v02.api.letsencrypt.org/directory>;rel="index"
Location: https://acme-v02.api.letsencrypt.org/acme/order/129481415/10879446752
Replay-Nonce: 0102rxwYoXS0MCCiNR9PyOFwQ3z1v6qYhneQEB8Wv6GOYh0
X-Frame-Options: DENY
Strict-Transport-Security: max-age=604800

{
  "status": "pending",
  "expires": "2021-07-13T03:52:13Z",
  "identifiers": [
    {
      "type": "dns",
      "value": "jbillings.net"
    },
    {
      "type": "dns",
      "value": "kcsports.net"
    }
  ],
  "authorizations": [
    "https://acme-v02.api.letsencrypt.org/acme/authz-v3/14574850455",
    "https://acme-v02.api.letsencrypt.org/acme/authz-v3/14574850459"
  ],
  "finalize": "https://acme-v02.api.letsencrypt.org/acme/finalize/129481415/10879446752"
}
2021-07-05 22:56:40,989:DEBUG:acme.client:Storing nonce: 0102rxwYoXS0MCCiNR9PyOFwQ3z1v6qYhneQEB8Wv6GOYh0
2021-07-05 22:56:40,989:DEBUG:acme.client:JWS payload:
b''
2021-07-05 22:56:40,991:DEBUG:acme.client:Sending POST request to https://acme-v02.api.letsencrypt.org/acme/authz-v3/14574850455:
{
  "protected": "eyJhbGciOiAiUlMyNTYiLCAia2lkIjogImh0dHBzOi8vYWNtZS12MDIuYXBpLmxldHNlbmNyeXB0Lm9yZy9hY21lL2FjY3QvMTI5NDgxNDE1IiwgIm5vbmNlIjogIjAxMDJyeHdZb1hTME1DQ2lOUjlQeU9Gd1EzejF2NnFZaG5lUUVCOFd2NkdPWWgwIiwgInVybCI6ICJodHRwczovL2FjbWUtdjAyLmFwaS5sZXRzZW5jcnlwdC5vcmcvYWNtZS9hdXRoei12My8xNDU3NDg1MDQ1NSJ9",
  "signature": "VeOWbsuFShFHfQt2m_YgXnZUyOy9vZObQjdN_r3vT0wDX5QqRYkPpkvlp9ZaDkqsDKjcPXFs-cD5c076W8Wo1fA218778XJSniGsMO_9FDqMzZfSo_fdI7B8FfYehQOvzVtH9JauB5hOlTBc5U9KpRHFCJ1LiCrPg7Mu9lf1GIVt3vYyigZOHoGGtN2B7PVoKphd97sDyGm1RfH_M0kqq3mvd91KqLACZK1i66Vznz-LFeP2XSEJOlzTUkddvpMAgiioX-40O34zwK9zLhZZSUltHEx7HW2bhDvIWgcp-RyW6M-4nWpBIk1vF22ldf970QSr2pfsNEgYyBkH-H_GSA",
  "payload": ""
}
2021-07-05 22:56:41,075:DEBUG:urllib3.connectionpool:https://acme-v02.api.letsencrypt.org:443 "POST /acme/authz-v3/14574850455 HTTP/1.1" 200 794
2021-07-05 22:56:41,076:DEBUG:acme.client:Received response:
HTTP 200
Server: nginx
Date: Tue, 06 Jul 2021 03:56:41 GMT
Content-Type: application/json
Content-Length: 794
Connection: keep-alive
Boulder-Requester: 129481415
Cache-Control: public, max-age=0, no-cache
Link: <https://acme-v02.api.letsencrypt.org/directory>;rel="index"
Replay-Nonce: 01023rzKRUgDwTou6xBCH533NlHoo8bSgxUr0KUzp9htDcI
X-Frame-Options: DENY
Strict-Transport-Security: max-age=604800

{
  "identifier": {
    "type": "dns",
    "value": "jbillings.net"
  },
  "status": "pending",
  "expires": "2021-07-13T03:52:13Z",
  "challenges": [
    {
      "type": "http-01",
      "status": "pending",
      "url": "https://acme-v02.api.letsencrypt.org/acme/chall-v3/14574850455/0Dz34A",
      "token": "JmIlT_jWSRez30Ot6bK1uzGN_uK8NgFIIKfTsM1t568"
    },
    {
      "type": "dns-01",
      "status": "pending",
      "url": "https://acme-v02.api.letsencrypt.org/acme/chall-v3/14574850455/wXo2dQ",
      "token": "JmIlT_jWSRez30Ot6bK1uzGN_uK8NgFIIKfTsM1t568"
    },
    {
      "type": "tls-alpn-01",
      "status": "pending",
      "url": "https://acme-v02.api.letsencrypt.org/acme/chall-v3/14574850455/5LO2NA",
      "token": "JmIlT_jWSRez30Ot6bK1uzGN_uK8NgFIIKfTsM1t568"
    }
  ]
}
2021-07-05 22:56:41,076:DEBUG:acme.client:Storing nonce: 01023rzKRUgDwTou6xBCH533NlHoo8bSgxUr0KUzp9htDcI
2021-07-05 22:56:41,076:DEBUG:acme.client:JWS payload:
b''
2021-07-05 22:56:41,078:DEBUG:acme.client:Sending POST request to https://acme-v02.api.letsencrypt.org/acme/authz-v3/14574850459:
{
  "protected": "eyJhbGciOiAiUlMyNTYiLCAia2lkIjogImh0dHBzOi8vYWNtZS12MDIuYXBpLmxldHNlbmNyeXB0Lm9yZy9hY21lL2FjY3QvMTI5NDgxNDE1IiwgIm5vbmNlIjogIjAxMDIzcnpLUlVnRHdUb3U2eEJDSDUzM05sSG9vOGJTZ3hVcjBLVXpwOWh0RGNJIiwgInVybCI6ICJodHRwczovL2FjbWUtdjAyLmFwaS5sZXRzZW5jcnlwdC5vcmcvYWNtZS9hdXRoei12My8xNDU3NDg1MDQ1OSJ9",
  "signature": "TTbidS6pm_3slblGSz7HECx2rqkyepZtRDhw59veMx2E6MqZRdVOBjdDs_g8mxKdmHY2tI_D6pbVp2Qni1h78yaZgU87T-H7bZUtmCjWqg93GNgrnG9HPLi_vis9kTziVWNCqITPNPCGfngOKWyPw3qJl1IIwJDYI0o41Lw4f4p7q8fChDojBvFevD-UK2E13RZLDeoGKrGWHvQ8Xut-YmXMOy_bAVT8zJe1JJ2POHntPv0g95SjPCETRWoSJuyhvC1XcCV60JNexo4BZXuBBJ2ynLA2b7SpYwr_F1i9x1eUUH-I6U0rjPHUR3oDygqpquz64YiAV0IvUBcjQRrCIA",
  "payload": ""
}
2021-07-05 22:56:41,153:DEBUG:urllib3.connectionpool:https://acme-v02.api.letsencrypt.org:443 "POST /acme/authz-v3/14574850459 HTTP/1.1" 200 793
2021-07-05 22:56:41,153:DEBUG:acme.client:Received response:
HTTP 200
Server: nginx
Date: Tue, 06 Jul 2021 03:56:41 GMT
Content-Type: application/json
Content-Length: 793
Connection: keep-alive
Boulder-Requester: 129481415
Cache-Control: public, max-age=0, no-cache
Link: <https://acme-v02.api.letsencrypt.org/directory>;rel="index"
Replay-Nonce: 0102wEX8sNv9wC7H7Wq070I_tXHHKDcdFwonhZ4Shep57oE
X-Frame-Options: DENY
Strict-Transport-Security: max-age=604800

{
  "identifier": {
    "type": "dns",
    "value": "kcsports.net"
  },
  "status": "pending",
  "expires": "2021-07-13T03:52:13Z",
  "challenges": [
    {
      "type": "http-01",
      "status": "pending",
      "url": "https://acme-v02.api.letsencrypt.org/acme/chall-v3/14574850459/aDI6ew",
      "token": "YdLagC9vsnys0yGADIo3pm-v0DSaWYnxiqnWUWJsdf8"
    },
    {
      "type": "dns-01",
      "status": "pending",
      "url": "https://acme-v02.api.letsencrypt.org/acme/chall-v3/14574850459/BDjvUg",
      "token": "YdLagC9vsnys0yGADIo3pm-v0DSaWYnxiqnWUWJsdf8"
    },
    {
      "type": "tls-alpn-01",
      "status": "pending",
      "url": "https://acme-v02.api.letsencrypt.org/acme/chall-v3/14574850459/bkcACw",
      "token": "YdLagC9vsnys0yGADIo3pm-v0DSaWYnxiqnWUWJsdf8"
    }
  ]
}
2021-07-05 22:56:41,153:DEBUG:acme.client:Storing nonce: 0102wEX8sNv9wC7H7Wq070I_tXHHKDcdFwonhZ4Shep57oE
2021-07-05 22:56:41,154:INFO:certbot._internal.auth_handler:Performing the following challenges:
2021-07-05 22:56:41,154:INFO:certbot._internal.auth_handler:http-01 challenge for jbillings.net
2021-07-05 22:56:41,154:INFO:certbot._internal.auth_handler:http-01 challenge for kcsports.net
2021-07-05 22:56:41,160:DEBUG:certbot._internal.error_handler:Encountered exception:
Traceback (most recent call last):
  File "/usr/local/Cellar/certbot/1.16.0/libexec/lib/python3.9/site-packages/certbot/_internal/auth_handler.py", line 73, in handle_authorizations
    resps = self.auth.perform(achalls)
  File "/usr/local/Cellar/certbot/1.16.0/libexec/lib/python3.9/site-packages/certbot_apache/_internal/configurator.py", line 2538, in perform
    http_response = http_doer.perform()
  File "/usr/local/Cellar/certbot/1.16.0/libexec/lib/python3.9/site-packages/certbot_apache/_internal/http_01.py", line 76, in perform
    self._mod_config()
  File "/usr/local/Cellar/certbot/1.16.0/libexec/lib/python3.9/site-packages/certbot_apache/_internal/http_01.py", line 111, in _mod_config
    for vh in self._relevant_vhosts():
  File "/usr/local/Cellar/certbot/1.16.0/libexec/lib/python3.9/site-packages/certbot_apache/_internal/http_01.py", line 162, in _relevant_vhosts
    raise errors.PluginError(
certbot.errors.PluginError: Unable to find a virtual host listening on port 80 which is currently needed for Certbot to prove to the CA that you control your domain. Please add a virtual host for port 80.

2021-07-05 22:56:41,160:DEBUG:certbot._internal.error_handler:Calling registered functions
2021-07-05 22:56:41,160:INFO:certbot._internal.auth_handler:Cleaning up challenges
2021-07-05 22:56:41,388:DEBUG:certbot._internal.log:Exiting abnormally:
Traceback (most recent call last):
  File "/usr/local/bin/certbot", line 33, in <module>
    sys.exit(load_entry_point('certbot==1.16.0', 'console_scripts', 'certbot')())
  File "/usr/local/Cellar/certbot/1.16.0/libexec/lib/python3.9/site-packages/certbot/main.py", line 15, in main
    return internal_main.main(cli_args)
  File "/usr/local/Cellar/certbot/1.16.0/libexec/lib/python3.9/site-packages/certbot/_internal/main.py", line 1552, in main
    return config.func(config, plugins)
  File "/usr/local/Cellar/certbot/1.16.0/libexec/lib/python3.9/site-packages/certbot/_internal/main.py", line 1268, in run
    new_lineage = _get_and_save_cert(le_client, config, domains,
  File "/usr/local/Cellar/certbot/1.16.0/libexec/lib/python3.9/site-packages/certbot/_internal/main.py", line 128, in _get_and_save_cert
    lineage = le_client.obtain_and_enroll_certificate(domains, certname)
  File "/usr/local/Cellar/certbot/1.16.0/libexec/lib/python3.9/site-packages/certbot/_internal/client.py", line 445, in obtain_and_enroll_certificate
    cert, chain, key, _ = self.obtain_certificate(domains)
  File "/usr/local/Cellar/certbot/1.16.0/libexec/lib/python3.9/site-packages/certbot/_internal/client.py", line 375, in obtain_certificate
    orderr = self._get_order_and_authorizations(csr.data, self.config.allow_subset_of_names)
  File "/usr/local/Cellar/certbot/1.16.0/libexec/lib/python3.9/site-packages/certbot/_internal/client.py", line 425, in _get_order_and_authorizations
    authzr = self.auth_handler.handle_authorizations(orderr, self.config, best_effort)
  File "/usr/local/Cellar/certbot/1.16.0/libexec/lib/python3.9/site-packages/certbot/_internal/auth_handler.py", line 73, in handle_authorizations
    resps = self.auth.perform(achalls)
  File "/usr/local/Cellar/certbot/1.16.0/libexec/lib/python3.9/site-packages/certbot_apache/_internal/configurator.py", line 2538, in perform
    http_response = http_doer.perform()
  File "/usr/local/Cellar/certbot/1.16.0/libexec/lib/python3.9/site-packages/certbot_apache/_internal/http_01.py", line 76, in perform
    self._mod_config()
  File "/usr/local/Cellar/certbot/1.16.0/libexec/lib/python3.9/site-packages/certbot_apache/_internal/http_01.py", line 111, in _mod_config
    for vh in self._relevant_vhosts():
  File "/usr/local/Cellar/certbot/1.16.0/libexec/lib/python3.9/site-packages/certbot_apache/_internal/http_01.py", line 162, in _relevant_vhosts
    raise errors.PluginError(
certbot.errors.PluginError: Unable to find a virtual host listening on port 80 which is currently needed for Certbot to prove to the CA that you control your domain. Please add a virtual host for port 80.
2021-07-05 22:56:41,390:ERROR:certbot._internal.log:Unable to find a virtual host listening on port 80 which is currently needed for Certbot to prove to the CA that you control your domain. Please add a virtual host for port 80.

I've work through your files for 2 hours trying to be a good member. But I'm lost:(

2 Likes

Certbot on macOS expects the Apache vhost configuration, by default, to be in /etc/apache2/other/.

On your system, where are the above vhosts located?

3 Likes

First, Thanks for the reply.

On Big Sur its located at:

/private/etc/apache2/extra/http-vhost.config

I can access the websites over the internet in the current configuration. What do you suggest I do?

3 Likes

I'm not sure that I can give the right response to make --apache work, without asking somebody who uses macOS first.

If the Apache paths have changed in macOS, then Certbot should probably change too. But I'm not sure whether the paths have changed or whether you are just using a different Apache installation to whatever is expected.

You can probably get your certificates using --webroot, but you will have to configure them yourself in Apache:

certbot certonly -d kcsports.net -d www.kcsports.net \
--webroot -w /Library/WebServer/Documents/kcsports

and

certbot certonly -d jbillings.net -d www.jbillings.net \
--webroot -w /Library/WebServer/Documents/jbillings
2 Likes

Welcome to the Let's Encrypt Community, Jeffrey :slightly_smiling_face:

I believe where @_az was leading is that the certbot Apache plugin has configurable parameters that let you specify where to find things:

--apache-enmod APACHE_ENMOD

Path to the Apache 'a2enmod' binary (default: None)

--apache-dismod APACHE_DISMOD

Path to the Apache 'a2dismod' binary (default: None)

--apache-le-vhost-ext APACHE_LE_VHOST_EXT

SSL vhost configuration extension (default: -le- ssl.conf)

--apache-server-root APACHE_SERVER_ROOT

Apache server root directory (default: /etc/apache2)

--apache-vhost-root APACHE_VHOST_ROOT

Apache server VirtualHost configuration root (default: None)

--apache-logs-root APACHE_LOGS_ROOT

Apache server logs directory (default: /var/log/apache2)

--apache-challenge-location APACHE_CHALLENGE_LOCATION

Directory path for challenge configuration (default: /etc/apache2)

--apache-handle-modules APACHE_HANDLE_MODULES

Let installer handle enabling required modules for you (Only Ubuntu/Debian currently) (default: False)

--apache-handle-sites APACHE_HANDLE_SITES

Let installer handle enabling sites for you (Only Ubuntu/Debian currently) (default: False)

--apache-ctl APACHE_CTL

Full path to Apache control script (default: apache2ctl)

--apache-bin APACHE_BIN

Full path to apache2/httpd binary (default: None)

https://certbot.eff.org/docs/using.html#certbot-command-line-options


Sorry @_az. You responded while I was constructing my post.

2 Likes

Thanks, I'll look it after work

3 Likes

I will get into this shortly.

2 Likes

Thanks guy's I've got it up and running. Now to sit down and document what I did for a blog post.

2 Likes