# SSL failures: Neon requires encrypted connections

## Symptom
`SSL connection has been closed unexpectedly`, `ssl send: closed`, or handshakes that die immediately.

## Cause
Neon requires SSL for Postgres connections. Clients with SSL disabled or misconfigured (some ORMs default it off, some Java tools need it set explicitly) get their connection killed during negotiation.

## Confirm
1. The connection string or client config lacks `sslmode=require` (or the driver's TLS equivalent).
2. Same string with `?sslmode=require` appended connects fine.

## Fix
- Add `sslmode=require` to the connection string: `postgresql://[host]/[db]?sslmode=require` (with your role and password in the userinfo section as usual).
- In framework config use the documented TLS option (Django: `OPTIONS: {"sslmode": "require"}`; similar per driver).
- Do not disable certificate verification to "fix" this; require is the point.

## Verify
Clean connects from every client type you run (app, migrations, scripts, BI).