I've figured out why the Python client does not suffer from this
issue. I use `strace` to print all system calls. Then I find the
Python client reads another cert file:

```
openat(AT_FDCWD,
"/usr/local/lib/python3.8/dist-packages/certifi/cacert.pem", O_RDONLY)
= 6
```

The correct cert comes from the `certifi` package.

While the Node.js client first tries to read `/etc/ssl/cert.pem`, then
tries to read `/etc/pki/tls/certs/ca-bundle.crt` that is the libcurl's
bundle CA cert location. Both of them don't exist.

```
1828 openat(AT_FDCWD, "/etc/ssl/cert.pem", O_RDONLY) = -1 ENOENT (No
such file or directory)
1891 openat(AT_FDCWD, "/etc/pki/tls/certs/ca-bundle.crt", O_RDONLY) =
-1 ENOENT (No such file or directory)
```

Thanks,
Yunze

On Thu, Feb 23, 2023 at 11:50 PM Yunze Xu <y...@streamnative.io> wrote:
>
> Hi all,
>
> Currently there are two ongoing releases: Python client 3.1.0 [1] and
> Node.js client 1.8.1 [2]. Both these two releases depend on the C++
> client 3.1.2, which fixes an issue that when performing OAuth2
> authentication with an issuer URL whose protocol is HTTPS, users can
> configure the tls cert file path to fix it.
>
> However, a regression was reported in the vote mail list of Node.js
> client [2]. In short, since Node.js client 1.8.0, users have to
> configure the tls cert file path explicitly, while the path could be
> detected automatically before. Since the Python client is also based
> on the C++ client and adopts a similar way to build the binaries, I've
> thought it should suffer the same issue. While the test result shows
> the Python client works well.
>
> So I created a repository [3] to:
> - Give an example for how to test Python and Node.js clients
> - Report my test results on various operating systems
>
> Please also help verify these two candidate releases.
>
> [1] https://lists.apache.org/thread/0mcdfw6ogof2bcl40m9p3gjzwolr8rw2
> [2] https://lists.apache.org/thread/n8jrg29nmozxqp588dbd8nkm7y18sphf
> [3] https://github.com/BewareMyPower/pulsar-tls-examples
>
> Thanks,
> Yunze

Reply via email to