cert-find is a rather complex beast because it not only looks for certificates in the optional CA but within the IPA LDAP database as well. It has a process to deduplicate the certificates since any PKI issued certificates will also be associated with an IPA record. In order to obtain the data to deduplicate the certificates the cert from LDAP must be parser for issuer and serial number. ipaldap has automation to determine the datatype of an attribute and will use the python-cryptography engine to decode a certificate automatically if you access entry['usercertificate']. The downside is that this is comparatively slow. Here is the parse time in microseconds: OpenSSL.crypto 175 pyasn1 1010 python-cryptography 3136 The python-cryptography time is fine if you're parsing one certificate but if the LDAP search returns a lot of certificates, say in the thousands, then those microseconds add up quickly. In testing it took ~17 seconds to parse 5k certificates. It's hard to overstate just how much better the cryptography Python interface is. In the case of OpenSSL really the only certificate fields easily available are serial number, subject and issuer. And the subject/issuer are in the OpenSSL reverse format which doesn't compare nicely to the cryptography format. The DN module can correct this. Fortunately for cert-find we only need serial number and issuer, so the OpenSSL module fine. It takes ~2 seconds. pyasn1 is also relatively faster but switch to it would require subtantially more effort for less payback. cert-find when there are a lot of certificates has been historically slow. It isn't related to the CA which returns large sets (well, 5k anyway) in a second or two. It was the LDAP comparision adding tens of seconds to the runtime. CLI times from before and after: original: ------------------------------- Number of entries returned 5011 ------------------------------- real 0m21.155s user 0m0.835s sys 0m0.159s using OpenSSL: real 0m5.747s user 0m0.864s sys 0m0.148s OpenSSL is forcibly lazy-loaded so it doesn't conflict with python-requests. See ipaserver/wsgi.py for the gory details. Fixes: https://pagure.io/freeipa/issue/9331 Signed-off-by: Rob Crittenden <rcritten@redhat.com> Reviewed-By: Florence Blanc-Renaud <frenaud@redhat.com> Reviewed-By: Antonio Torres <antorres@redhat.com> |
||
---|---|---|
.copr | ||
.github | ||
asn1 | ||
client | ||
contrib | ||
daemons | ||
doc | ||
init | ||
install | ||
ipaclient | ||
ipalib | ||
ipaplatform | ||
ipapython | ||
ipaserver | ||
ipasphinx | ||
ipatests | ||
po | ||
pypi | ||
selinux | ||
util | ||
.freeipa-pr-ci.yaml | ||
.git-commit-template | ||
.gitignore | ||
.lgtm.yml | ||
.mailmap | ||
.readthedocs.yaml | ||
.tox-install.sh | ||
.wheelconstraints.in | ||
ACI.txt | ||
API.txt | ||
autogen.sh | ||
BUILD.txt | ||
CODE_OF_CONDUCT.md | ||
configure.ac | ||
Contributors.txt | ||
COPYING | ||
COPYING.openssl | ||
freeipa.doap.rdf | ||
freeipa.spec.in | ||
gpgkey-0E63D716D76AC080A4A33513F40800B6298EB963.asc | ||
ipa.in | ||
ipasetup.py.in | ||
make-doc | ||
make-test | ||
makeaci.in | ||
makeapi.in | ||
Makefile.am | ||
Makefile.python.am | ||
Makefile.pythonscripts.am | ||
makerpms.sh | ||
pylint_plugins.py | ||
pylintrc | ||
README.md | ||
server.m4 | ||
tox.ini | ||
VERSION.m4 |
FreeIPA Server
FreeIPA allows Linux administrators to centrally manage identity, authentication and access control aspects of Linux and UNIX systems by providing simple to install and use command line and web based management tools.
FreeIPA is built on top of well known Open Source components and standard protocols with a very strong focus on ease of management and automation of installation and configuration tasks.
FreeIPA can seamlessly integrate into an Active Directory environment via cross-realm Kerberos trust or user synchronization.
Benefits
FreeIPA:
- Allows all your users to access all the machines with the same credentials and security settings
- Allows users to access personal files transparently from any machine in an authenticated and secure way
- Uses an advanced grouping mechanism to restrict network access to services and files only to specific users
- Allows central management of security mechanisms like passwords, SSH Public Keys, SUDO rules, Keytabs, Access Control Rules
- Enables delegation of selected administrative tasks to other power users
- Integrates into Active Directory environments
Components
The FreeIPA project provides unified installation and management tools for the following components:
- LDAP Server - based on the 389 project
- KDC - based on MIT Kerberos implementation
- PKI based on Dogtag project
- Samba libraries for Active Directory integration
- DNS Server based on BIND and the Bind-DynDB-LDAP plugin
Project Website
Releases, announcements and other information can be found on the IPA server project page at http://www.freeipa.org/ .
Documentation
The most up-to-date documentation can be found at http://freeipa.org/page/Documentation .
Quick Start
To get started quickly, start here: http://www.freeipa.org/page/Quick_Start_Guide
For developers
- Building FreeIPA from source
- http://www.freeipa.org/page/Build
- See the BUILD.txt file in the source root directory
Licensing
Please see the file called COPYING.
Contacts
- If you want to be informed about new code releases, bug fixes, security fixes, general news and information about the IPA server subscribe to the freeipa-announce mailing list at https://www.redhat.com/mailman/listinfo/freeipa-interest/ .
- If you have a bug report please submit it at: https://pagure.io/freeipa/issues
- If you want to participate in actively developing IPA please subscribe to the freeipa-devel mailing list at https://lists.fedoraproject.org/archives/list/freeipa-devel@lists.fedorahosted.org/ or join us in IRC at irc://irc.libera.chat/freeipa