Skip to main content

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

  1. Create credentials file:
cp forpsi-credentials.ini.example forpsi-credentials.ini
  1. Edit forpsi-credentials.ini with your Forpsi credentials

  2. Set appropriate permissions:

chmod 600 forpsi-credentials.ini
  1. 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-secret parameter

How It Works

  1. Authentication: Authenticates with Forpsi admin interface using username/password and optional TOTP
  2. Domain Discovery: Automatically discovers domain IDs by parsing the domain list page
  3. TXT Record Management: Adds/removes TXT records through the admin interface
  4. 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

certbot_dns_forpsi-0.1.0.tar.gz (14.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

certbot_dns_forpsi-0.1.0-py3-none-any.whl (13.8 kB view details)

Uploaded Python 3

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

Hashes for certbot_dns_forpsi-0.1.0.tar.gz
Algorithm Hash digest
SHA256 fdac6c05a266b40a40fb9d38fc3b2b8cfdbfea6e9ef4e9d76fa2f269b5cbc55e
MD5 dfd6d458ccfcfc459d7aae612fc8cb00
BLAKE2b-256 b55faa6f80d0e5243855baea08daf5478e368e7bc8a0d79b6970f8a1e4cddf80

See more details on using hashes here.

Provenance

The following attestation bundles were made for certbot_dns_forpsi-0.1.0.tar.gz:

Publisher: publish.yml on roshek/certbot-dns-forpsi

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file certbot_dns_forpsi-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for certbot_dns_forpsi-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 515868bc79ce5663ae689bcb5837fe24c84b53ba57456bacf77ce9f565ddf6d3
MD5 a1e8eaeeddedba399157fae41e8b47d7
BLAKE2b-256 07629e376362a79ebacfa703e66b270a1076e7d4ce5a31a339190028d1c8690d

See more details on using hashes here.

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

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page