Skip to main content

certbot-dns-valuedomain

CI PyPI version Python Versions License

ValueDomain DNS Authenticator plugin for Certbot.

This plugin automates the process of completing a dns-01 challenge by creating, and subsequently removing, TXT records using the ValueDomain API.

日本語ドキュメント

Features

  • ✅ Automatic DNS-01 challenge completion
  • ✅ Support for wildcard certificates
  • ✅ Automatic TXT record cleanup
  • ✅ Retry logic with exponential backoff
  • ✅ Rate limit handling
  • ✅ Comprehensive error handling
  • ✅ Secure credential management

Installation

From PyPI (Recommended)

pip install certbot-dns-valuedomain

From Source

git clone https://github.com/chrono-meter/certbot-dns-valuedomain.git
cd certbot-dns-valuedomain
pip install -e .

Prerequisites

  • Python 3.9 or higher
  • Certbot 1.1.0 or higher
  • ValueDomain account with API access
  • Domain managed by ValueDomain

Python Version Support

Python Version Status Notes
< 3.9 ❌ Not supported Use plugin version 0.x for older Python
3.9 ✅ Supported Minimum version
3.10 ✅ Supported Stable
3.11 ✅ Supported Recommended
3.12 ✅ Supported Latest stable
3.13+ 🔄 Testing Should work, not officially tested

Configuration

Named Arguments

Argument Description Default
--dns-valuedomain-credentials ValueDomain credentials INI file (Required) None
--dns-valuedomain-propagation-seconds Seconds to wait for DNS propagation 60

Credentials File

Create a credentials file with your ValueDomain API information:

# ValueDomain API credentials
dns_valuedomain_api_key = your_api_key_here
dns_valuedomain_domain = example.com

The path to this file can be provided using the --dns-valuedomain-credentials command-line argument.

Security Best Practices

Important: Protect your credentials file with appropriate permissions:

chmod 600 /path/to/valuedomain.ini

Recommended location: ~/.secrets/certbot/valuedomain.ini

Usage Examples

Obtain a Certificate

certbot certonly 
  --authenticator dns-valuedomain 
  --dns-valuedomain-credentials ~/.secrets/certbot/valuedomain.ini 
  -d example.com

Obtain a Wildcard Certificate

certbot certonly 
  --authenticator dns-valuedomain 
  --dns-valuedomain-credentials ~/.secrets/certbot/valuedomain.ini 
  -d example.com 
  -d '*.example.com'

Obtain a Certificate with Custom Propagation Time

If you experience DNS propagation issues, increase the wait time:

certbot certonly 
  --authenticator dns-valuedomain 
  --dns-valuedomain-credentials ~/.secrets/certbot/valuedomain.ini 
  --dns-valuedomain-propagation-seconds 120 
  -d example.com

Renew Certificates

certbot renew 
  --authenticator dns-valuedomain 
  --dns-valuedomain-credentials ~/.secrets/certbot/valuedomain.ini

Automatic Renewal with Cron

Add to your crontab (crontab -e):

# Renew certificates daily at midnight
0 0 * * * certbot renew --authenticator dns-valuedomain --dns-valuedomain-credentials ~/.secrets/certbot/valuedomain.ini --quiet

Or use systemd timer (recommended for modern systems):

# Enable certbot timer
systemctl enable --now certbot-renew.timer

Test Certificate Issuance (Dry Run)

certbot certonly --dry-run 
  --authenticator dns-valuedomain 
  --dns-valuedomain-credentials ~/.secrets/certbot/valuedomain.ini 
  -d example.com

Getting ValueDomain API Key

  1. Log in to ValueDomain
  2. Navigate to your account settings
  3. Go to API settings section
  4. Generate a new API key
  5. Copy the API key to your credentials file
  6. Ensure your domain is properly configured in ValueDomain

ValueDomain API

This plugin uses the ValueDomain REST API v1:

  • Get DNS records: GET /domains/{domain}/dns
  • Set DNS records: PUT /domains/{domain}/dns

API Documentation: https://www.value-domain.com/api/doc/domain/

Authentication

The plugin uses Bearer token authentication:

Authorization: Bearer YOUR_API_KEY

Troubleshooting

DNS Propagation Errors

If you encounter DNS propagation timeout errors:

# Increase propagation wait time
--dns-valuedomain-propagation-seconds 120

API Authentication Errors

Error: API authentication failed

Solutions:

  • Verify your API key is correct and active
  • Check that the domain is managed by your ValueDomain account
  • Ensure the credentials file has correct permissions (chmod 600)
  • Verify the credentials file path is correct

Permission Denied Errors

Error: Permission denied when reading credentials

Solution:

chmod 600 ~/.secrets/certbot/valuedomain.ini

Rate Limit Errors

The plugin automatically handles rate limits with exponential backoff. If you consistently hit rate limits, consider:

  • Reducing the frequency of certificate requests
  • Contacting ValueDomain support to increase your API limits

Debug Mode

For detailed error information, use the --debug flag:

certbot certonly --debug 
  --authenticator dns-valuedomain 
  --dns-valuedomain-credentials ~/.secrets/certbot/valuedomain.ini 
  -d example.com

Common Issues

Issue: "Plugin not found"

# Reinstall the plugin
pip uninstall certbot-dns-valuedomain
pip install certbot-dns-valuedomain

Issue: "Invalid credentials format"

Ensure your credentials file follows this format:

dns_valuedomain_api_key = your_key
dns_valuedomain_domain = example.com

Development

Setup Development Environment

# Clone the repository
git clone https://github.com/chrono-meter/certbot-dns-valuedomain.git
cd certbot-dns-valuedomain

# Create a virtual environment
python -m venv venv
source venv/bin/activate  # On Windows: venvScriptsactivate

# Install development dependencies
pip install -r requirements-dev.txt

# Install in editable mode
pip install -e .

Run Tests

# Run all tests
pytest tests/

# Run with coverage
pytest tests/ --cov=certbot_dns_valuedomain --cov-report=html

# View coverage report
open htmlcov/index.html

Code Quality

# Format code
black certbot_dns_valuedomain tests

# Lint code
flake8 certbot_dns_valuedomain tests

# Type checking
mypy certbot_dns_valuedomain --ignore-missing-imports

Running Tests Before Commit

# Run all checks
black certbot_dns_valuedomain tests && 
flake8 certbot_dns_valuedomain tests && 
pytest tests/ --cov=certbot_dns_valuedomain

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

Contribution Guidelines

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Make your changes
  4. Add tests for new functionality
  5. Ensure all tests pass (pytest tests/)
  6. Format your code (black .)
  7. Commit your changes (git commit -m 'Add some amazing feature')
  8. Push to the branch (git push origin feature/amazing-feature)
  9. Open a Pull Request

Code Style

  • Follow PEP 8 guidelines
  • Use Black for code formatting
  • Add type hints where applicable
  • Write comprehensive docstrings
  • Include unit tests for new features

Security

Reporting Security Issues

If you discover a security vulnerability, please email the maintainer directly instead of using the issue tracker.

Security Best Practices

  • Never commit credentials to version control
  • Use strict file permissions (600) for credentials files
  • Rotate API keys regularly
  • Use environment-specific credentials
  • Review logs for sensitive information leakage

License

This project is licensed under the Apache License 2.0 - see the LICENSE file for details.

Support

Acknowledgments

  • Certbot - The Let's Encrypt client
  • ValueDomain - DNS provider
  • All contributors to this project

Related Projects

Changelog

See CHANGELOG.md for a list of changes in each version.

Author

chrono-meter stz2012

Project Status

This project is actively maintained. Issues and pull requests are regularly reviewed.


Note: This plugin is not officially affiliated with ValueDomain or Let's Encrypt.

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_valuedomain-1.2.0.tar.gz (19.4 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_valuedomain-1.2.0-py3-none-any.whl (16.4 kB view details)

Uploaded Python 3

File details

Details for the file certbot_dns_valuedomain-1.2.0.tar.gz.

File metadata

  • Download URL: certbot_dns_valuedomain-1.2.0.tar.gz
  • Upload date:
  • Size: 19.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for certbot_dns_valuedomain-1.2.0.tar.gz
Algorithm Hash digest
SHA256 d435612a6ec6741fe6053006e4affd8a65b21a488ae95a1a4fa8d55d67f543c9
MD5 90e95038729133f5f9a2837ef01d2a83
BLAKE2b-256 a1fd746359576e45265223cf7b2cf7f0a7e5572dd5db524f94fcb2259ff6372e

See more details on using hashes here.

Provenance

The following attestation bundles were made for certbot_dns_valuedomain-1.2.0.tar.gz:

Publisher: publish.yml on chrono-meter/certbot-dns-valuedomain

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_valuedomain-1.2.0-py3-none-any.whl.

File metadata

File hashes

Hashes for certbot_dns_valuedomain-1.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 0dc4c522c79a03165ddfb55c5c0288a0513efab7d5a26753dc0d04a7fcb98a91
MD5 6f37beddf02e0d46b9b35077ce5814af
BLAKE2b-256 e66a6f9c516deac8fdcda236109dd08c37eacafb71429436f9de7b158c0af0c3

See more details on using hashes here.

Provenance

The following attestation bundles were made for certbot_dns_valuedomain-1.2.0-py3-none-any.whl:

Publisher: publish.yml on chrono-meter/certbot-dns-valuedomain

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 Sentry Error logging StatusPage Status page