NginxProxyManager / NginxProxyManager/nginx-proxy-manager
Certificate renewal fails with Force SSL enabled and Port 443 blocked
Nobody has claimed this yet.
- 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:latestdocker 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:
- Configure Proxy host for any service
- Forward port 80 from public to npm
- Block Port 443 from public
- Setup dns according to documentation
- Request first ssl certificate in npm -> will work while ssl is not already set up and therefore no ssl forward is activated
- 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
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- 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