1. Caddy version (caddy version
):
Caddy v1.0.5 (h1:5B1Hs0UF2x2tggr2X9jL2qOZtDXbIWQb9YLbmlxHSuM=)
2. How I run Caddy:
a. System environment:
DigitalOcean VPS Ubuntu 20.04
b. Command:
My Cadddy service file
Description=Caddy HTTP/2 web server
Documentation=https://caddyserver.com/docs
After=network-online.target
Wants=network-online.target systemd-networkd-wait-online.service
; Do not allow the process to be restarted in a tight loop. If the
; process fails to start, something critical needs to be fixed.
StartLimitIntervalSec=14400
StartLimitBurst=10
[Service]
Restart=on-abnormal
; User and group the process will run as.
User=www-data
Group=www-data
; Letsencrypt-issued certificates will be written to this directory.
Environment=CADDYPATH=/etc/ssl/caddy DO_AUTH_TOKEN=<My token>
; Always set "-root" to something safe in case it gets forgotten in the Caddyfile.
ExecStart=/usr/local/bin/caddy -log stdout -log-timestamps=false -agree=true -conf=/etc/caddy/Caddyfile -root=/var/tmp
ExecReload=/bin/kill -USR1 $MAINPID
; Use graceful shutdown with a reasonable timeout
KillMode=mixed
KillSignal=SIGQUIT
TimeoutStopSec=5s
; Limit the number of file descriptors; see `man systemd.exec` for more limit settings.
LimitNOFILE=1048576
; Unmodified caddy is not expected to use more than that.
LimitNPROC=512
; Use private /tmp and /var/tmp, which are discarded after caddy stops.
PrivateTmp=true
; Use a minimal /dev (May bring additional security if switched to 'true', but it may not work on Raspberry Pi's or other devices, so it has been disabled in this dist.)
PrivateDevices=false
; Hide /home, /root, and /run/user. Nobody will steal your SSH-keys.
ProtectHome=true
; Make /usr, /boot, /etc and possibly some more folders read-only.
ProtectSystem=full
; … except /etc/ssl/caddy, because we want Letsencrypt-certificates there.
; This merely retains r/w access rights, it does not add any new. Must still be writable on the host!
ReadWritePaths=/etc/ssl/caddy
ReadWriteDirectories=/etc/ssl/caddy
; The following additional security directives only work with systemd v229 or later.
; They further restrict privileges that can be gained by caddy. Uncomment if you like.
; Note that you may have to add capabilities required by any plugins in use.
;CapabilityBoundingSet=CAP_NET_BIND_SERVICE
;AmbientCapabilities=CAP_NET_BIND_SERVICE
;NoNewPrivileges=true
[Install]
WantedBy=multi-user.target
c. Service/unit/compose file:
Service file above
d. My complete Caddyfile or JSON config:
Caddy File
loggie.app:443 {
root /var/www/loggie/build/
tls {
dns digitalocean
}
}
loggie.app:443/api {
proxy / 127.0.0.1:8000 {
transparent
}
}
3. The problem I’m having:
I’m trying to authenticate my domain with Apple for their Apple Pay verfifcataion process where they have you move a file into Loggie which I have placed in my /var/www/build/.well-known/ dir and the file shows up when I navigate to it. When I go to authenticate with apple they respond with this error.
Correction: When I got my plain domain, load the page then navigate to the apple file it works. But if i navigate there directly (like apple) I get this error
Domain verification failed. Unable to access verification file on server. Confirm that the file is in the correct location, proxies and redirects are not enabled, and the documented Apple Domain Verification IP addresses can access your server.
4. Error messages and/or full log output:
From Apple
Domain verification failed. Review your TLS Certificate configuration to confirm that the certificate is accessible and a supported TLS Cipher Suite is used.
5. What I already tried:
I haven’t tried much because I can’t find much information on Caddy + Apple Pay certification. It seems caddy is missing some TSL types that apple wants but I’m confused on how to set these in the caddy file. I’ve done a TSL cert site and I have TSL 1.2 and 1.3 so I’m not sure what apple is complaining about…
6. Links to relevant resources:
https://developer.apple.com/forums/thread/97031
This talks about TSL issues and possible issues with their IP address not having access.
Also this gives some setup stuff. Apple Developer Documentation How would I add this to my caddy file?