{"id":15890561,"url":"https://github.com/dimfeld/remote-ssl-renewal","last_synced_at":"2025-09-06T09:48:51.895Z","repository":{"id":64113311,"uuid":"568943090","full_name":"dimfeld/remote-ssl-renewal","owner":"dimfeld","description":"Renew LetsEncrypt SSL Certificates for a CDN when the DNS is hosted elsewhere","archived":false,"fork":false,"pushed_at":"2024-03-01T07:33:04.000Z","size":44,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-09-06T09:48:50.036Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dimfeld.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-11-21T18:40:09.000Z","updated_at":"2022-11-26T05:13:34.000Z","dependencies_parsed_at":"2024-10-28T00:43:39.692Z","dependency_job_id":"9ca4ae62-b952-461f-9ec9-09cc5af4cd12","html_url":"https://github.com/dimfeld/remote-ssl-renewal","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/dimfeld/remote-ssl-renewal","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dimfeld%2Fremote-ssl-renewal","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dimfeld%2Fremote-ssl-renewal/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dimfeld%2Fremote-ssl-renewal/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dimfeld%2Fremote-ssl-renewal/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dimfeld","download_url":"https://codeload.github.com/dimfeld/remote-ssl-renewal/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dimfeld%2Fremote-ssl-renewal/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273886639,"owners_count":25185509,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-06T02:00:13.247Z","response_time":2576,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-06T07:06:45.120Z","updated_at":"2025-09-06T09:48:51.838Z","avatar_url":"https://github.com/dimfeld.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# remote-ssl-renewal\n\nA command-line utility to Renew LetsEncrypt SSL Certificates for a CDN when the DNS is hosted elsewhere.\n\nThis tool sets up a LetsEncrypt DNS challenge, adds the appropriate DNS entry to answer the challenge, and adds the\nresulting certificate to the CDN host.\n\nI'm currently using this to generate an SSL certificate for a DigitalOcean Spaces CDN, where the domain's DNS is managed\nthrough Vercel.\n\n## Installation\n\nAs of now, this can only be installed using the Rust toolchain's `cargo` command. You can use `cargo install remote-ssl-renewal`, or just clone this repository and build it yourself.\n\n## Concepts\n\nThis tool has four concepts which join together into a full SSL renewal workflow.\n\nAn **account** corresponds to a LetsEncrypt account, which is essentially just giving them an email address to contact.\n\nA **DNS provider** is the service that manages the DNS entries for your domain. The tool is designed to easily allow\nadding new providers, but currently it only supports Vercel.\n\nAn **endpoint** is the service that hosts your files, to which the SSL certificate should be uploaded. Currently the tool supports DigitalOcean Spaces CDN.\n\nFinally, a **subdomain** is your subdomain that the endpoint will serve the files from, and for which this tool should\ngenerate the SSL certificate. Each subdomain is linked to an account, DNS provider, and endpoint.\n\n## Usage\n\nTo get started the first time, you can run `remote-ssl-renewal init` to generate one of each of the above entities.\nAfter that, you can renew your certificates using `remote-ssl-renewal renew`. This command will only renew certificates\nthat are within 14 days of expiration, so it can be run daily without worrying about violating LetsEncrypt rate limits.\n\nThe full set of commands can be discovered by running `remote-ssl-renewal --help`.\n\n## Data Storage\n\nThe data is stored locally in an SQLite3 database in the standard configuration directory for your OS, at the path `remote-ssl-renewal/data.sqlite3`.\nThe specific directory used for your system can be found [in this documentation for the dirs crate](https://docs.rs/dirs/4.0.0/dirs/fn.config_dir.html).\n\nFor example, on MacOS the database will be stored at `$HOME/Library/Application Support/remote-ssl-renewal/data.sqlite3`.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdimfeld%2Fremote-ssl-renewal","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdimfeld%2Fremote-ssl-renewal","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdimfeld%2Fremote-ssl-renewal/lists"}