mirror of
https://github.com/NginxProxyManager/nginx-proxy-manager.git
synced 2026-04-25 09:25:55 +03:00
[PR #2956] Client certificate support #3640
Labels
No labels
awaiting feedback
bug
cannot reproduce
dns provider request
duplicate
enhancement
enhancement
enhancement
good first issue
help wanted
invalid
need more info
no certbot plugin available
product-support
pull-request
question
stale
troll
upstream issue
v2
v2
v2
v3
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
starred/nginx-proxy-manager-NginxProxyManager#3640
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
📋 Pull Request Information
Original PR: https://github.com/NginxProxyManager/nginx-proxy-manager/pull/2956
Author: @wrouesnel
Created: 5/28/2023
Status: 🔄 Open
Base:
develop← Head:client_certificate_support📝 Commits (10+)
b19a272Fix OpenSSL data parsingc664e86Add storing for Client CA certificates in the databased5b3e53Add frontend support for the new clientca typee5bb50cAdd support for adding Client Certificates to access-listsfb766d1Add support for writing client CAs when access-lists are updated366efc8Add template support for all host types to do client CA authorization34305e0Add authority count to access-list drop down in proxy hostf601105Add a development docker-compose file for use with User Namespaces6cf91a2Add drop_unauthorized parameter to proxy hostsf3c7409Adapt CI command scripts to also support podman📊 Changes
45 files changed (+895 additions, -115 deletions)
View changed files
📝
backend/doc/api.swagger.json(+7 -0)📝
backend/internal/access-list.js(+197 -20)📝
backend/internal/certificate.js(+43 -16)📝
backend/internal/nginx.js(+7 -1)📝
backend/internal/proxy-host.js(+4 -4)➕
backend/migrations/20230526062132_add_clientcas_to_accesslists.js(+50 -0)➕
backend/migrations/20230529030411_add_drop_unauthorized_to_proxyhosts.js(+39 -0)📝
backend/models/access_list.js(+15 -6)➕
backend/models/access_list_clientcas.js(+62 -0)📝
backend/schema/definitions.json(+6 -1)📝
backend/schema/endpoints/access-lists.json(+14 -0)📝
backend/schema/endpoints/proxy-hosts.json(+12 -0)📝
backend/templates/_access.conf(+36 -17)📝
backend/templates/_certificates.conf(+7 -1)➕
backend/templates/access.conf(+12 -0)➕
docker/docker-compose.dev-user.yml(+70 -0)📝
docker/rootfs/etc/nginx/nginx.conf(+1 -0)📝
docker/rootfs/etc/s6-overlay/s6-rc.d/prepare/20-paths.sh(+2 -0)📝
frontend/js/app/api.js(+31 -0)📝
frontend/js/app/nginx/access/form.ejs(+30 -1)...and 25 more files
📄 Description
This PR adds client-certificate support to nginx-proxy-manager. Closes #768. Relates to #622.
A new SSL certificate is defined - "client certificate authority" - which allows uploading client CA certificates. These can then be assigned to Access Lists via the UI or API, and finally the Access List assigned to a host, which will thus enable Client Certificate Authorization for mutual TLS connections to the host.
This includes a slight revamp of the access-list system to implement client IP checks as
geodirectives. This allows the "Drop Unauthorized" function to simply not respond to clients from the wrong IP address, as well as allowing "Satisfy All" and "Satisfy Any" to include Client CA functionality - namely, usingSatisfy Anyis it possible to selectively require client certificates from some networks but not others (in my household the primary use-case of this is for Home Assistant to require certificates from the internet but not the local network).Known Issues
🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.