• @ShortFuse
    link
    English
    11
    edit-2
    1 month ago

    Just going to mention my zero-dependency ACME (Let’s Encrypt) library: https://github.com/clshortfuse/acmejs

    It runs on Chrome, Safari, FireFox, Deno, and NodeJS.

    I use it to spin up my wildcard and HTTP certificates. I’ve personally automated it by having the certificate upload to S3 buckets and AWS Certificates. I wrote a helper for Name.com for DNS validation. For HTTP validation, I use HTTP PUT.

    • @[email protected]
      link
      fedilink
      English
      71 month ago

      Why have this run in the browser? Why not just have it run on the server and renew in the background?

      • @ShortFuse
        link
        English
        11 month ago

        That’s what NodeJS and Deno are.

        The point of the browser support means it runs on modern Web technologies and doesn’t need external binaries (eg: OpenSSL). It can literally run on any JS, even a browser.

        • @[email protected]
          link
          fedilink
          English
          11 month ago

          I’m aware, but you led with Chrome, Safari, and Firefox, so it sounded like browser support was the point, so I was curious what the use-case was.

          That’s still cool though. I personally would’ve just use Python, since that’s generally available everywhere I’d want to run something like this (though Python’s built-in HTTP lib isn’t nearly as nice as JS’s fetch(), I’d want requests).

          • @ShortFuse
            link
            English
            11 month ago

            I have just dumped code into a Chrome console and saved a cert while in a pinch. It’s not best practices of course, but when you need something fast for one-time use, it’s nice to have something immediately available.

            You could make your own webpage that works in the browser (no backend) and make a cert. I haven’t published anything publicly because you really shouldn’t dump private keys in unknown websites, but nothing is stopping you from making your own.