{"id":18643973,"url":"https://github.com/major/letsencrypt-rackspace-hook","last_synced_at":"2026-03-06T16:03:09.437Z","repository":{"id":6219917,"uuid":"55115352","full_name":"major/letsencrypt-rackspace-hook","owner":"major","description":"Rackspace DNS hooks for letsencrypt.sh","archived":false,"fork":false,"pushed_at":"2023-12-15T11:57:16.000Z","size":12,"stargazers_count":32,"open_issues_count":5,"forks_count":12,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-10-11T05:47:22.947Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/major.png","metadata":{"files":{"readme":"README.rst","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,"zenodo":null}},"created_at":"2016-03-31T02:56:34.000Z","updated_at":"2025-06-19T09:10:50.000Z","dependencies_parsed_at":"2025-04-11T17:39:39.290Z","dependency_job_id":"d9e7b16f-3f6a-4edc-b827-57041e85434e","html_url":"https://github.com/major/letsencrypt-rackspace-hook","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/major/letsencrypt-rackspace-hook","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/major%2Fletsencrypt-rackspace-hook","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/major%2Fletsencrypt-rackspace-hook/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/major%2Fletsencrypt-rackspace-hook/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/major%2Fletsencrypt-rackspace-hook/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/major","download_url":"https://codeload.github.com/major/letsencrypt-rackspace-hook/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/major%2Fletsencrypt-rackspace-hook/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30184884,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-06T14:42:24.748Z","status":"ssl_error","status_checked_at":"2026-03-06T14:42:14.925Z","response_time":250,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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-11-07T06:09:11.287Z","updated_at":"2026-03-06T16:03:09.417Z","avatar_url":"https://github.com/major.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"Rackspace DNS hook for letsencrypt.sh\n=====================================\n\nThis repository contains a hook for the `letsencrypt.sh`_ project that allows a\nuser to obtain a certificate from the `Let's Encrypt`_ API via a DNS challenge.\nThe hook will automatically create DNS records via the `Rackspace DNS API`_ and\nremove those records when the challenge process is complete.\n\nHave more questions?  Skip down to the FAQ section below.\n\n.. _letsencrypt.sh: https://github.com/lukas2511/letsencrypt.sh\n.. _Let's Encrypt: https://letsencrypt.org/\n.. _Rackspace DNS API: https://www.rackspace.com/en-us/cloud/dns\n\nUsage\n-----\n\nInstallation\n~~~~~~~~~~~~\n\nStart by cloning all of the files from GitHub:\n\n.. code-block:: console\n\n    $ git clone https://github.com/lukas2511/letsencrypt.sh.git\n    $ cd letsencrypt.sh\n    $ git clone https://github.com/major/letsencrypt-rackspace-hook.git hooks/rackspace\n\nInstall the python dependencies:\n\n.. code-block:: console\n\n    $ pip install -r hooks/rackspace/requirements.txt\n\nConfiguration\n~~~~~~~~~~~~~\n\nYou will need some basic configuration to get started.  First, create a\n``config.sh`` in the base of the letsencrypt.sh repository directory:\n\n.. code-block:: shell\n\n    # Use the staging API until we're sure everything is working\n    # (remove this later for production)\n    CA=\"https://acme-staging.api.letsencrypt.org/directory\"\n\nNow, we export the path to our pyrax credentials file as ``PYRAX_CREDS``:\n\n.. code-block:: shell\n\n    export PYRAX_CREDS=\"/home/myuser/.pyrax\"\n\nNot familiar with `pyrax`_?  Refer to the `documentation on authentication`_ to\nset up a pyrax configuration file with credentials.\n\nSpecify the domain you want to secure with an SSL certificate by creating a ``domains.txt`` in the same directory as ``config.sh``:\n\n.. code-block:: console\n\n    # Single domain\n    echo \"example.com\" \u003e domains.txt\n\n    # Separate multiple domains with spaces\n    echo \"example.com store.example.com backend.example.com\" \u003e domains.txt\n\nGetting certificates\n~~~~~~~~~~~~~~~~~~~~\n\nWe have enough configuration to obtain SSL certificates.  Let's run the main\nscript, specify our hook, and request a DNS challenge:\n\n.. code-block:: console\n\n    $ ./letsencrypt.sh --challenge dns-01 --cron --hook 'hooks/rackspace/hook.py'\n    # INFO: Using main config file /home/major/git/letsencrypt.sh/config.sh\n    Processing example.com\n     + Signing domains...\n     + Generating private key...\n     + Generating signing request...\n     + Requesting challenge for example.com...\n     + Rackspace hook executing: deploy_challenge\n     + TXT record created: _acme-challenge.example.com =\u003e YJUYJ5DcGmQv2GsrWI4yQRZz8gIFb1pZklbRGneqON4\n     + Waiting for challenge DNS record to appear on the DNS server (this usually takes 30-60 seconds)\n     + Challenge record found!\n     + Responding to challenge for example.com...\n     + Rackspace hook executing: clean_challenge\n     + Challenge is valid!\n     + Requesting certificate...\n     + Checking certificate...\n     + Done!\n     + Creating fullchain.pem...\n     + Rackspace hook executing: deploy_cert\n     + Certificate issued for example.com! Awesome!\n     + Private key: /home/major/git/letsencrypt.sh/certs/example.com/privkey.pem\n     + Certificate: /home/major/git/letsencrypt.sh/certs/example.com/cert.pem\n     + Certificate w/chain: /home/major/git/letsencrypt.sh/certs/example.com/fullchain.pem\n     + CA chain: /home/major/git/letsencrypt.sh/certs/example.com/chain.pem\n     + Done!\n\nLook in the ``certs`` directory to find your SSL certificates and keys!\n\n.. _pyrax: https://github.com/rackspace/pyrax\n.. _documentation on authentication: https://github.com/rackspace/pyrax/blob/master/docs/getting_started.md#set-up-authentication\n\nFAQ\n---\n\nCan't I just buy SSL certificates like I always have?\n  Absolutely!\n\n  However, Let's Encrypt allows you to obtain certificates for\n  free, which is a nice bonus.  The downside is that the certificates are only\n  valid for 90 days.  If you have a mission critical system that doesn't handle\n  SSL certificate updates well, you may want to purchase a longer duration\n  traditional SSL certificate.\n\nWhy not use the normal HTTP challenge for Let's Encrypt?\n  Some people find the HTTP challenge difficult, especially those that run many\n  servers. A DNS record usually only needs to be created in one location and it\n  is usually simple to add and remove.\n\n  It can also be helpful when a website hasn't launched yet and the website is\n  behind a firewall that limits HTTP access.\n\nHow do I get the certificates and keys deployed after I receive them?\n  There are **plenty** of options.  I prefer to use Ansible to run\n  letsencrypt.sh, pick up the files, and then copy them to remote locations.\n  I also have the option to restart my web servers via Ansible once the new\n  certificates are in place.\n\nYour code sucks. What's your deal? I need this written in COBOL.\n  Pull requests and issues are always welcomed on any of my repositories.\n\n----\n\nEnjoy! *-Major*\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmajor%2Fletsencrypt-rackspace-hook","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmajor%2Fletsencrypt-rackspace-hook","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmajor%2Fletsencrypt-rackspace-hook/lists"}