Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/gothack/acmeasync
asyncio ACME / Letsencrypt client with built in TCP TLS proxy server
https://github.com/gothack/acmeasync
acme-client acme-http acme-v2 letsencrypt proxy proxy-server python python3
Last synced: 5 days ago
JSON representation
asyncio ACME / Letsencrypt client with built in TCP TLS proxy server
- Host: GitHub
- URL: https://github.com/gothack/acmeasync
- Owner: GothAck
- License: mit
- Created: 2020-09-02T13:10:52.000Z (about 4 years ago)
- Default Branch: master
- Last Pushed: 2021-10-15T04:58:45.000Z (about 3 years ago)
- Last Synced: 2024-08-09T08:51:01.653Z (3 months ago)
- Topics: acme-client, acme-http, acme-v2, letsencrypt, proxy, proxy-server, python, python3
- Language: Python
- Homepage: http://gothack.ninja/acmeasync/
- Size: 2.24 MB
- Stars: 1
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
Awesome Lists containing this project
README
# ACMEasync
AsyncIO ACME client for Python 3.
## Why?
Moar async moar better. Seriously though, I wanted to utilize Python's asyncio to create an automatically certifying proxy server that "just works".## How?
You can use the library as is, see `acmeasync/__main__.py` and `acmeasync/certbot2.py` as guides for spinning your own implementations, or use the built in tls reverse proxy (currently raw TCP only).To run the proxy:
```sh
export DOMAINS="example.com,example.net"
export PORT=80 # or whatever port you wish to run the ACME challenge http server on, you need root to serve on 80, or you can forward 8080 if you're running in a docker container for example.
export EMAIL="[email protected]"
export PROXIES="8081:towel.blinkenlights.nl:23,8082:towel.blinkenlights.nl:23" # format: localport:remotehost:remoteport,...
export DIRECTORY_URL="https://acme-v02.api.letsencrypt.org/directory"
acmeleproxy
```It's recommended you run as root so that proxy processes can drop privileges and lose access to your private keys, but this is optional.
API documentation incoming soon...
## But why Python?
Yeah, I know, the GIL, the proxy server uses multiprocessing to spawn a subprocess per connection, which should give much better performance. This kinda thing exists the nodejs world already, why not python too?## Requirements
Pulled in by setup.py:
- `acme`
- `aiohttp`
- `aiohttp-requests`Required from your OS:
- `python3-openssl`