<div dir="auto">Did some more investigation.  I downloaded the packages that are being used on centos stream 8.  First I tried my test code with their version of libssl3.so preloaded:  it failed in the same way as all the others failed--not surprisingly since its version is much later than the 3.39 version where this changed.<br>
<br>
Then, I downloaded and took a look at "dogtag-submit" from the CentOS Stream 8 (RedHat) certmonger package.  As far as I can tell, their version of "dogtag-submit" is *not* linked against libcurl-nss.so at all like the version on debian sid.  Instead, all their certmonger helper programs are linked against the OpenSSL version (libcurl.so.4).<br>
<br>
So, I think that we should just link these against the openssl version, as the RedHat packages do and get things to work again.<div dir="auto"><br>This raises two other issues:<div dir="auto">- is there truly a bug in the ssl portion of the nss library?  If so, this should probably be brought to the attention.</div><div dir="auto">- perhaps the libcurl package ought to be reconfigured such that one can install the dev packages simultaneously.  Right now, libcurl-nss also makes a symlink "libcurl.so" that makes it conflict with the libcurl-openssl package to which the "libcurl.so.x.x" lib belongs to.  I think that the libcurl-gnutls package might do the same thing.</div><div dir="auto"><br></div><div dir="auto">My next step will be do rebuild freeipa and certmonger with the libcurl-openssl-dev package in place instead of the libcurl-nss-dev and then try reinstalling.</div></div></div><br>
<br>
On Sat, Oct 9, 2021 at 9:59 PM Spencer Olson <<a href="mailto:olsonse@umich.edu" target="_blank" rel="noreferrer">olsonse@umich.edu</a>> wrote:<br>
><br>
> Cloned nss repo and did a git bisect:  the first commit that causes<br>
> problems is at the upstream merge of 3.39 (upstream/3.39).<br>
><br>
> From a very brief perusal of the upstream changes, I see there are<br>
> some edits with respect to TLS1.3--perhaps this is the reason for our<br>
> problems--I haven't yet looked hard at all the upstream changes (or<br>
> tried to bisect the upstream repo yet).<br>
><br>
> On Sat, Oct 9, 2021 at 12:05 PM Spencer Olson <<a href="mailto:olsonse@umich.edu" target="_blank" rel="noreferrer">olsonse@umich.edu</a>> wrote:<br>
> ><br>
> > Since it doesn't look like any progress has been made on this, I've<br>
> > started to work through some debugging.<br>
> ><br>
> > Right now, it looks like the problem is probably actually due to a<br>
> > change in libnss3.  In fact, the problem appears to be specifically in<br>
> > libssl3.so from the libnss3 package.<br>
> ><br>
> > The problem:<br>
> >   * certmonger has a hard time finishing the certificate requests<br>
> > because it can't seem to authenticate to the dogtag PKI server.<br>
> ><br>
> > Observations:<br>
> >  * When certmonger attempts to request a signed certificate for the<br>
> > renewal agent, it temporarily explicitly uses the ipa-ca-agent<br>
> > certificate which has been temporarily extracted from the<br>
> > /root/ca-agent.p12 storage.<br>
> >  * dogtag-submit attempts to use the CURL library to submit the<br>
> > request, subsequently approve the request, and then poll for its<br>
> > finish.<br>
> >  * The initial request does not use/require an encrypted channel, but<br>
> > the approval and subsequent queries do.<br>
> >  * These attempts to authenticate over this encrypted channel using<br>
> > the client certificate are rejected.<br>
> ><br>
> > Hacks & tests:<br>
> >  * By creating a very small c-program that does the same CURL commands<br>
> > as dogtag-submit from the certmonger package, this same authorization<br>
> > denied can be seen.<br>
> >  * By simply replacing the libssl3.so library, using either LD_PRELOAD<br>
> > or LD_LIBRARY_PATH, from a prior version, the requests succeed.  As of<br>
> > now, I've tried only one other version of libssl3.so (libnss3 3.35<br>
> > from ubuntu 18.04).<br>
> >  * Also, instead of linking against libcurl-nss and manualy replacing<br>
> > the libssl3.so library, success can be found by linking to<br>
> > libcurl-gnutls or libcurl-openssl<br>
> ><br>
> > I suspect that a compile option in libnss3 has to be changed in order<br>
> > for this to work again.<br>
> ><br>
> > Still todo:<br>
> >  * I haven't fully discovered which part/option from libnss3 might have changed.<br>
> >  * I haven't yet successfully had libnss3 emit much<br>
> > debugging--probably have to recompile with DEBUG=1.<br>