### Summary

In Python 3.12 the deprecated `key_file`, `cert_file` and `check_hostname` parameters have been [removed](https://docs.python.org/3.12/library/http.client.html#http.client.HTTPSConnection).

There is code which still attempts to set these, such as:

https://github.com/ansible/ansible/blob/0371ea08d6de55635ffcbf94da5ddec0cd809495/lib/ansible/module_utils/urls.py#L604-L608

Which results in an error under Python 3.12:

```
>       return httplib.HTTPSConnection(host, **kwargs)
E       TypeError: HTTPSConnection.__init__() got an unexpected keyword argument 'cert_file'
```

### Issue Type

Feature Idea

### Component Name

module_utils/urls.py

if os.path.exists(filename):
        try:
            os.unlink(filename)
        except Exception:
            
            pass
def make_context(cafile=None, cadata=None, ciphers=None, validate_certs=True):
    if ciphers is None:
        ciphers = []
    if not is_sequence(ciphers):
        raise TypeError('Ciphers must be a list. Got %s.' % ciphers.__class__.__name__)
    if HAS_SSLCONTEXT:
        context = create_default_context(cafile=cafile)
    elif HAS_URLLIB3_PYOPENSSLCONTEXT:
        context = PyOpenSSLContext(PROTOCOL)
    else:
        raise NotImplementedError('Host libraries are too old to support creating an sslcontext')
    if not validate_certs:
        if ssl.OP_NO_SSLv2:
            context.options |= ssl.OP_NO_SSLv2
        context.options |= ssl.OP_NO_SSLv3
        context.check_hostname = False
        context.verify_mode = ssl.CERT_NONE
    if validate_certs and any((cafile, cadata)):
        context.load_verify_locations(cafile=cafile, cadata=cadata)
    if ciphers:
        context.set_ciphers(':'.join(map(to_native, ciphers)))
    return context
def get_ca_certs(cafile=None):