--- install/share/ipa.conf.template.orig 2026-07-16 09:36:59 UTC +++ install/share/ipa.conf.template @@ -1,5 +1,5 @@ # -# VERSION 40 - DO NOT REMOVE THIS LINE +# VERSION 41 - DO NOT REMOVE THIS LINE # # This file may be overwritten on upgrades. # @@ -7,7 +7,7 @@ # Load lookup_identity module in case it has not been loaded yet # The module is used to search users according the certificate. - LoadModule lookup_identity_module modules/mod_lookup_identity.so + LoadModule lookup_identity_module libexec/apache24/mod_lookup_identity.so TraceEnable Off @@ -42,10 +42,15 @@ WSGISocketPrefix $WSGI_PREFIX_DIR WSGISocketPrefix $WSGI_PREFIX_DIR # Configure mod_wsgi handler for /ipa +# FreeBSD: keep socket-timeout well below INT_MAX. mod_wsgi/apr convert the +# value to milliseconds in a 32-bit context; INT_MAX seconds overflows and +# yields a tiny/negative socket timeout, which truncates large daemon-mode +# responses (e.g. the API schema) after ~64KB. 86400s (1 day) is effectively +# unlimited for a single request and does not overflow. WSGIDaemonProcess ipa processes=$WSGI_PROCESSES threads=1 maximum-requests=500 \ - user=ipaapi group=ipaapi display-name=%{GROUP} socket-timeout=2147483647 \ - lang=C.UTF-8 locale=C.UTF-8 -WSGIScriptAlias /ipa /usr/share/ipa/wsgi.py process-group=ipa \ + user=ipaapi group=ipaapi display-name=%{GROUP} socket-timeout=86400 \ + lang=C.UTF-8 locale=C.UTF-8 home=/var/empty +WSGIScriptAlias /ipa $USR_SHARE_IPA_DIR/wsgi.py process-group=ipa \ application-group=%{GLOBAL} WSGIScriptReloading Off @@ -78,6 +83,8 @@ ServerTokens Prod GssapiSessionKey file:$GSSAPI_SESSION_KEY GssapiImpersonate On + GssapiCredStore keytab:/var/db/ipa/gssproxy/http.keytab + GssapiCredStore client_keytab:/var/db/ipa/gssproxy/http.keytab GssapiDelegCcacheDir $IPA_CCACHES GssapiDelegCcachePerms mode:0660 GssapiDelegCcacheUnique On @@ -104,7 +111,7 @@ ServerTokens Prod # Target for login with internal connections -Alias /ipa/session/cookie "/usr/share/ipa/gssapi.login" +Alias /ipa/session/cookie "$USR_SHARE_IPA_DIR/gssapi.login" # Turn off Apache authentication for i18n messages @@ -129,8 +136,10 @@ Alias /ipa/session/cookie "/usr/share/ipa/gssapi.login LookupUserByCertificate On LookupUserByCertificateParamName "username" WSGIProcessGroup ipa - WSGIApplicationGroup ipa + WSGIApplicationGroup %{GLOBAL} GssapiImpersonate On + GssapiCredStore keytab:/var/db/ipa/gssproxy/http.keytab + GssapiCredStore client_keytab:/var/db/ipa/gssproxy/http.keytab GssapiUseSessions On Session On @@ -161,13 +170,13 @@ Alias /ipa/session/cookie "/usr/share/ipa/gssapi.login # This is where we redirect on failed auth -Alias /ipa/errors "/usr/share/ipa/html" +Alias /ipa/errors "$USR_SHARE_IPA_DIR/html" # For the MIT Windows config files -Alias /ipa/config "/usr/share/ipa/html" +Alias /ipa/config "$USR_SHARE_IPA_DIR/html" # Do no authentication on the directory that contains error messages - + SetHandler None AllowOverride None Satisfy Any @@ -202,8 +211,8 @@ Alias /ipa/ui/fonts/fontawesome "${FONTS_FONTAWESOME_D # webUI is now completely static, and served out of that directory -Alias /ipa/ui "/usr/share/ipa/ui" - +Alias /ipa/ui "$USR_SHARE_IPA_DIR/ui" + SetHandler None AllowOverride None Satisfy Any @@ -216,8 +225,8 @@ Alias /ipa/ui "/usr/share/ipa/ui" # Modern WebUI -Alias /ipa/modern-ui "/usr/share/ipa/modern-ui" - +Alias /ipa/modern-ui "$USR_SHARE_IPA_DIR/modern-ui" + SetHandler None AllowOverride None Satisfy Any @@ -230,8 +239,8 @@ Alias /ipa/modern-ui "/usr/share/ipa/modern-ui" # Simple wsgi scripts required by ui -Alias /ipa/wsgi "/usr/share/ipa/wsgi" - +Alias /ipa/wsgi "$USR_SHARE_IPA_DIR/wsgi" + AllowOverride None Satisfy Any Require all granted @@ -240,8 +249,8 @@ Alias /ipa/wsgi "/usr/share/ipa/wsgi" # migration related pages -Alias /ipa/migration "/usr/share/ipa/migration" - +Alias /ipa/migration "$USR_SHARE_IPA_DIR/migration" + AllowOverride None Satisfy Any Require all granted