# requests.exceptions.SSLError: HTTPSConnectionPool(host='internal.example.com', port=443): Max retries exceeded with url: / (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self signed certificate in certificate chain')))

- **ID:** `python/requests-sslerror-self-signed-certificate`
- **Domain:** python
- **Category:** network_error
- **Verification:** ai_generated
- **Fix Rate:** 80%

## Root Cause

The server uses a self-signed certificate that is not trusted by the default CA bundle.

## Version Compatibility

| Version | Status | Introduced | Deprecated |
|---------|--------|------------|------------|
| 3.x | active | — | — |

## Workarounds

1. **Provide the self-signed certificate file to verify parameter** (90% success)
   ```
   requests.get('https://internal.example.com', verify='/path/to/cert.pem')
   ```
2. **Use a custom CA bundle that includes the self-signed certificate** (85% success)
   ```
   requests.get('https://internal.example.com', verify='/path/to/custom-ca-bundle.crt')
   ```

## Dead Ends

- **Setting verify=False globally** — Disables security checks, making the connection vulnerable to attacks. (60% fail)
- **Adding the certificate to the system trust store without proper configuration** — The system trust store may not be used by Python's requests library by default. (70% fail)
