I really like using Amfora for browsing gemini but it doesn't support gopher, so I decided to try out solderpunk's `agena` - a python proxy for browsing gophher with a gemini client. I did the following: 1. `git clone https://tildegit.org/solderpunk/agena && cd agena` 2. Create certificates for agena, as gemini is TLS mandatory but does TOFU. For this I use https://github.com/smallstep/cli: `step-cli certificate create --profile=self-signed --subtle --san 127.0.0.1 --no-password --insecure --not-after 43800h localhost cert.pem key.pem` 3. **ENSURE THE KEY IS READABLE ONLY TO YOU ON A SHARED MACHINE** 4. Run agena with `./agena` 5. Modify your Amfora config to contain the following lines: ``` [proxies] gopher = "localhost:1965" ``` 6. Browse to your heart's content! In the example of the `step-cli` command there are a few unobvious things to point out: - `--subtle` and `--insecure` are mandatory gating flags to prevent misuse when you provide `--profile=self-signed` and `--no-password` respectively. - These are because step is designed to make the typical use case of TLS easier, and self-signed non-passworded certs are not that. We can use these however as we are only trusting a locally accessible proxy, and having a password prevents us from starting `agena` noninteractively. - `--san 127.0.0.1` is required as the original X509 spec doesn't allow for an IP address as a common name (the positional argument that we've used `localhost` for), so we have to put it in the SAN extension field for it to be respected. - `--non-after 43800h` means we expire after 5 years. This is bad practice if you're out there on the web, but with a local proxy you're just creating pain for yourself by issuing short amounts of time. I hope that's helpful - X509 is a pain in the ass and the gemini use case is made difficult by the assumption of the chain-of-trust model by most tools. ***UPDATE*** I've just submitted a PR that deletes about 5 lines of Amfora to enable bookmarking for non-gemini pages - I'm hoping that code was just vestigial and it will be accepted upstream. ***UPDATE*** It was merged within an hour :D