# Gemini Trust Stores

Geminispace is (currently) small enough that we can afford to download all known capsules' TLS certificates and use them to generate trust stores for various Gemini clients.  If verified via multiple network perspectives, using a pre-generated trust store is a major improvement over blindly trusting-on-first-use.

This repo contains:

1. [All TLS certificates](certs/) of capsules listed on [geminispace.info](gemini://geminispace.info/known-hosts) and [Lupa](gemini://gemini.bortzmeyer.org/software/lupa/lupa-capsules.txt), updated about once per week.  This gives us a history of certificates in Geminispace, starting in 2021-04-27.
2. A table containing details about each certificate ([markdown](cert-details.md) and [CSV](cert-details.csv)).
3. Scripts to generate trust stores for various Gemini clients, currently:

* [Agunua](agunua/)
* [Amfora](amfora/)
* [Lagrange](lagrange/)

You can find instructions on how to use them in their respective directories.

All trust store generators accept certificate expiry boundaries as arguments.  Examples:

```
./generate.sh          # all certs
./generate.sh 90+      # certs that will expire in more than 90 days from now
./generate.sh 30-      # certs that have expired more than 30 days ago
./generate.sh 30- 90+  # both of the above; in other words, certs are excluded if:
                       # {30 days ago} < cert_expiry < {90 days from now}
```

This is to assist client developers who wish to bundle pre-generated trust stores with their clients, but only want to include long-lived (and long-expired) certificates.

All scripts used in this project are available in the [Trust Store Generators](https://tildegit.org/nervuri/trust-store-generators) repository.  The Tor option is used when running `get-certs.sh`, so [most](log-stderr) certificates herein are attested to from at least two network perspectives.

All commits are signed with [this GPG key](https://nervuri.net/keys/) (B769BD004A417E3A5A902DD1C4769EEA7BA61672).

You don't need to trust that I am publishing the correct certificates.  [The scripts](https://tildegit.org/nervuri/trust-store-generators) should be easy to understand; I encourage you to run them yourselves and generate these files from your own network perspectives.  If the results don't coincide with what I've published, please [let me know](https://nervuri.net/contact).

## How to contribute

The project is hosted [at tildegit.org](https://tildegit.org/nervuri/trust-stores).  If you don't want to make an account, just [shoot me an email](https://nervuri.net/contact) with your [patch](https://git-send-email.io/)/suggestion/bug report/whatever else.
