Hello #Bugwarrior with client cert my old friend. Today I needed to connect a #Bugzilla ticket system to you.
I had to tweak it a little though, because I have no idea where to put client certificates for Python’s requests lib and my current customer requires that. Any HTTPS request without will fail with status code 400: No required SSL certificate was sent. On top it’s a self signed so let’s ignore self signed server certs (I know…).
For this I edited ~/.local/lib/python3.11/site-packages/bugzilla/_backendxmlrpc.py line 43 from this:
# pylint: disable=raise-missing-from try: response = self.__bugzillasession.request( "POST", url, data=request_body)
to
# pylint: disable=raise-missing-from cert = () verify = True if url.startswith('https://bugzilla.example.com/'): log.debug("Adding client certs for url: %s", url) cert=('/path/to/client.crt', '/path/to/client.key') verify = False try: response = self.__bugzillasession.request( "POST", url, verify=verify, data=request_body, cert=cert)
This time I even added my extra bits in a conditional way so other bugzilla configs should not be affected. There may be better ways to achieve this but I’ve seen no obvious in the docs at https://bugwarrior.readthedocs.io/en/latest/services/bugzilla.html – YMMV.