0

so I was trying to load test a Kerberos authenticated endpoint using the below locustfile (details removed):

from locust import HttpUser, TaskSet, task
from requests_kerberos import HTTPKerberosAuth


class UserBehaviour(TaskSet):

    @task
    def method1(self):
        self.client.post("/method1", auth=HTTPKerberosAuth(force_preemptive=True), json={})


class FilterAndPrioritiseUser(HttpUser):
    tasks = [UserBehaviour]

Then I continually get an error saying SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1076)'), even though I can manually hit the endpoint fine.

However, if I add another task:

    @task(1)
    def method2(self):
        self.client.get("/endpoint2", verify=False)

Then the results look like this:

Type    Name        # Requests  # Fails 
GET     /endpoint2  6           6   
POST    /endpoint1  19          4   

Where the errors are:

# fails Method  Name        Type
6       GET     /method2    HTTPError('401 Client Error: Unauthorized for url')
4       POST    /method1    SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1076)')

This makes no sense, as why does this other endpoint being hit and failing for the being unauthorised cause the original endpoint to stop failing after a few retries?

Any help would be very appreciated as I'm very confused!

Paragon_
  • 85
  • 10

1 Answers1

0

Turns out I needed to add certs to the default cert file that's used by Python, which I found this using this other post. After doing that, the requests all passed authentication as expected!

Paragon_
  • 85
  • 10