NginxProxyManager / NginxProxyManager/nginx-proxy-manager

Certificate renewal fails with Force SSL enabled and Port 443 blocked

Open
#4,661 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

bug stale
Dominant language
TypeScript
Stars
34.2k
Forks
3.9k
Avg merge
21h 12m
Merged PRs (30d)
20

Description

Checklist

  • Have you pulled and found the error with jc21/nginx-proxy-manager:latest docker image?
    • Yes
  • Are you sure you're not using someone else's docker image?
    • Yes
  • Have you searched for similar issues (both open and closed)?
    • Yes

Describe the bug
In an environment where internal services shall be accessed by https but not exposed to outside one could set up the force ssl solution and block port 443 to outside to ensure the service is intern only. While the service shall be available with a valid ssl certificate from intern the certificate should be requested from letsencrypt. This setup fails when "force ssl" is enabled

Nginx Proxy Manager Version
Tested with 2.12.3 and 2.12.6

To Reproduce
Steps to reproduce the behavior:

  1. Configure Proxy host for any service
  2. Forward port 80 from public to npm
  3. Block Port 443 from public
  4. Setup dns according to documentation
  5. Request first ssl certificate in npm -> will work while ssl is not already set up and therefore no ssl forward is activated
  6. Try to renew certificate -> The request from lets encrypt to the acme challenge will get redirected to https but as port 443 is blocked the challenge will not be successful and no certificate gets signed

Expected behavior
The whole acme challenge should work only with http as it does as well when the first certificate gets generated

Operating System
Tested on a ubuntu vm

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reproducing the renewal flow with Force SSL enabled, public port 80 forwarded, and port 443 blocked, then trace how the ACME HTTP challenge is handled during renewal. Done means an existing certificate renews successfully through HTTP without requiring public access to port 443.

Written by the indexing model from the issue text.

Assessment

Tech stack
docker, nginx
Domain
devops, security
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.