Forpsi DNS Authenticator plugin for Certbot
Project description
Certbot DNS Forpsi Plugin
A Certbot plugin to complete DNS-01 challenges by automatically managing TXT records for domains registered with Forpsi.
Since Forpsi does not provide an API for DNS management, this plugin interacts with the Forpsi admin web interface to add and remove TXT records required for Let's Encrypt certificate issuance. This means if Forpsi changes their admin interface, the plugin may break and require updates. Please report any issues you encounter.
Inspiration: This project was inspired by AreYouLoco's Forpsi acme.sh script.
⚠️ Beta Software Disclaimer
This plugin is currently in beta status. It has been tested and confirmed to work with
admin.forpsi.hu. Further testing is needed for other Forpsi admin sites. Please report any issues you encounter.Development Note: Inital Forpsi admin site "API" testing was conducted by me (Ákos Szabados), but most of the coding was done using Claude Code.
Features
- Automated DNS-01 challenge completion via Forpsi admin interface
- Support for multiple Forpsi admin sites
- Two-factor authentication (TOTP) support
- Automatic domain ID discovery for subdomains
- Multiple TXT record management (add/delete)
- CLI parameter support as alternative to credentials file
Installation
From PyPI
Install the plugin directly from PyPI:
pip install certbot-dns-forpsi
From Source
Clone the repository and install:
pip install .
Usage
Method 1: Using credentials file
- Create credentials file:
cp forpsi-credentials.ini.example forpsi-credentials.ini
-
Edit
forpsi-credentials.iniwith your Forpsi credentials -
Set appropriate permissions:
chmod 600 forpsi-credentials.ini
- Run Certbot:
certbot certonly \
--authenticator dns-forpsi \
--dns-forpsi-credentials ./forpsi-credentials.ini \
--dns-forpsi-propagation-seconds 120 \
-d example.com \
-d *.example.com
Method 2: Using CLI parameters
certbot certonly \
--authenticator dns-forpsi \
--dns-forpsi-admin-site admin.forpsi.com \
--dns-forpsi-username your_username \
--dns-forpsi-password your_password \
--dns-forpsi-totp-secret your_totp_secret \
--dns-forpsi-propagation-seconds 120 \
-d example.com
Configuration Options
--dns-forpsi-credentials: Path to Forpsi credentials INI file--dns-forpsi-admin-site: Forpsi admin site (e.g., admin.forpsi.com)--dns-forpsi-username: Forpsi username (alternative to credentials file)--dns-forpsi-password: Forpsi password (alternative to credentials file)--dns-forpsi-totp-secret: TOTP secret for 2FA (optional)--dns-forpsi-propagation-seconds: DNS propagation delay (default: 120 seconds)
Credentials File Format
Create a forpsi-credentials.ini file with the following format:
certbot_dns_forpsi:dns_forpsi_admin_site = admin.forpsi.com
certbot_dns_forpsi:dns_forpsi_username = your_username
certbot_dns_forpsi:dns_forpsi_password = your_password
certbot_dns_forpsi:dns_forpsi_totp_secret = your_totp_secret
Two-Factor Authentication
If you have 2FA enabled on your Forpsi account, provide your TOTP secret:
- Get your TOTP secret from your authenticator app setup
- Add it to the credentials file or use the
--dns-forpsi-totp-secretparameter
How It Works
- Authentication: Authenticates with Forpsi admin interface using username/password and optional TOTP
- Domain Discovery: Automatically discovers domain IDs by parsing the domain list page
- TXT Record Management: Adds/removes TXT records through the admin interface
- Verification: Verifies record creation/deletion by checking the admin interface
Development
To install in development mode:
pip install -e .
Testing
Test with Let's Encrypt staging environment:
certbot certonly \
--authenticator dns-forpsi \
--dns-forpsi-credentials ./forpsi-credentials.ini \
--test-cert \
-d example.com
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file certbot_dns_forpsi-0.1.0.tar.gz.
File metadata
- Download URL: certbot_dns_forpsi-0.1.0.tar.gz
- Upload date:
- Size: 14.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fdac6c05a266b40a40fb9d38fc3b2b8cfdbfea6e9ef4e9d76fa2f269b5cbc55e
|
|
| MD5 |
dfd6d458ccfcfc459d7aae612fc8cb00
|
|
| BLAKE2b-256 |
b55faa6f80d0e5243855baea08daf5478e368e7bc8a0d79b6970f8a1e4cddf80
|
Provenance
The following attestation bundles were made for certbot_dns_forpsi-0.1.0.tar.gz:
Publisher:
publish.yml on roshek/certbot-dns-forpsi
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
certbot_dns_forpsi-0.1.0.tar.gz -
Subject digest:
fdac6c05a266b40a40fb9d38fc3b2b8cfdbfea6e9ef4e9d76fa2f269b5cbc55e - Sigstore transparency entry: 293686721
- Sigstore integration time:
-
Permalink:
roshek/certbot-dns-forpsi@29513fb45b565f1c8cf2e7b1fbd4c1b05e772f35 -
Branch / Tag:
refs/tags/0.1.0 - Owner: https://github.com/roshek
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@29513fb45b565f1c8cf2e7b1fbd4c1b05e772f35 -
Trigger Event:
release
-
Statement type:
File details
Details for the file certbot_dns_forpsi-0.1.0-py3-none-any.whl.
File metadata
- Download URL: certbot_dns_forpsi-0.1.0-py3-none-any.whl
- Upload date:
- Size: 13.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
515868bc79ce5663ae689bcb5837fe24c84b53ba57456bacf77ce9f565ddf6d3
|
|
| MD5 |
a1e8eaeeddedba399157fae41e8b47d7
|
|
| BLAKE2b-256 |
07629e376362a79ebacfa703e66b270a1076e7d4ce5a31a339190028d1c8690d
|
Provenance
The following attestation bundles were made for certbot_dns_forpsi-0.1.0-py3-none-any.whl:
Publisher:
publish.yml on roshek/certbot-dns-forpsi
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
certbot_dns_forpsi-0.1.0-py3-none-any.whl -
Subject digest:
515868bc79ce5663ae689bcb5837fe24c84b53ba57456bacf77ce9f565ddf6d3 - Sigstore transparency entry: 293686761
- Sigstore integration time:
-
Permalink:
roshek/certbot-dns-forpsi@29513fb45b565f1c8cf2e7b1fbd4c1b05e772f35 -
Branch / Tag:
refs/tags/0.1.0 - Owner: https://github.com/roshek
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@29513fb45b565f1c8cf2e7b1fbd4c1b05e772f35 -
Trigger Event:
release
-
Statement type: