hardening(angie): default_server needs a cert on its 443 listener or 'angie -t' fails with 'no ssl_certificate defined' — generate a one-time self-signed dummy (CN=bootstrap-default, 10y) in /etc/angie/ssl so unknown-SNI clients handshake then get 444; mark listen 443 as ssl explicitly
This commit is contained in:
parent
435d66aad2
commit
efdf056352
@ -322,14 +322,25 @@ EOF
|
||||
|
||||
# ── default catch-all server: unmatched Host -> drop ──
|
||||
if [[ ! -f "$d/_on/00-default.conf" ]]; then
|
||||
# The default_server also listens on 443 to catch unknown-SNI TLS clients.
|
||||
# It needs SOME cert to complete the handshake before `return 444` drops them;
|
||||
# angie won't start a 443 listener without ssl_certificate. Generate a self-signed
|
||||
# dummy once (CN='bootstrap-default', 10y) so unknown-SNI clients get dropped
|
||||
# after connecting while real vhosts are picked by SNI.
|
||||
if [[ ! -f "$d/ssl/bootstrap-default.crt" ]]; then
|
||||
sudo_ install -d -m 0755 "$d/ssl"
|
||||
sudo_ openssl req -x509 -newkey rsa:2048 -nodes -days 3650 -keyout "$d/ssl/bootstrap-default.key" -out "$d/ssl/bootstrap-default.crt" -subj "/CN=bootstrap-default/O=bootstrap" 2>/dev/null
|
||||
fi
|
||||
sudo_ tee "$d/_on/00-default.conf" >/dev/null <<'EOF'
|
||||
# default_server: drop requests that match no enabled host (drive-by scanners, bare-IP)
|
||||
server {
|
||||
listen 80 default_server;
|
||||
listen [::]:80 default_server;
|
||||
listen 443 default_server;
|
||||
listen [::]:443 default_server;
|
||||
listen 443 ssl default_server;
|
||||
listen [::]:443 ssl default_server;
|
||||
server_name _;
|
||||
ssl_certificate /etc/angie/ssl/bootstrap-default.crt;
|
||||
ssl_certificate_key /etc/angie/ssl/bootstrap-default.key;
|
||||
return 444;
|
||||
}
|
||||
EOF
|
||||
|
||||
Loading…
Reference in New Issue
Block a user