feat: extend certificate pinning to all TLS protocols and add SSH
host-key pinning
This commit is contained in:
+19
-2
@@ -12,13 +12,30 @@ goget implements multiple security features to protect both the client and serve
|
||||
|
||||
### Certificate Pinning
|
||||
|
||||
Pin a specific certificate by its SHA-256 hash:
|
||||
Pin a specific certificate by its SHA-256 hash. This works across every
|
||||
TLS-bearing protocol goget supports: HTTPS, FTPS, Gemini, and WebDAVS.
|
||||
|
||||
```bash
|
||||
goget --pinned-cert "a1b2c3d4e5f6..." --url https://example.com
|
||||
goget --pinned-cert "a1b2c3d4e5f6..." --url ftps://ftp.example.com/file
|
||||
goget --pinned-cert "a1b2c3d4e5f6..." --url gemini://geminiprotocol.net
|
||||
goget --pinned-cert "a1b2c3d4e5f6..." --url webdavs://dav.example.com/file
|
||||
```
|
||||
|
||||
If the server certificate's SHA-256 doesn't match, the connection is aborted.
|
||||
If the leaf certificate's SHA-256 doesn't match, the connection is aborted.
|
||||
|
||||
### SSH Host-Key Pinning (SFTP)
|
||||
|
||||
Pin the SSH host key for SFTP by its OpenSSH fingerprint (the same value
|
||||
printed by `ssh-keygen -lf ~/.ssh/known_hosts`). Pinning takes precedence
|
||||
over `--ssh-insecure` and the `known_hosts` file.
|
||||
|
||||
```bash
|
||||
goget --pinned-host-key "SHA256:AAAAC3NzaC1lZDI1NTE5AAAAIE+HHi0MtRj4VPl8mdP8gniGZDRb0SZTdI2TPxRyCm1H" \
|
||||
--url sftp://example.com/file
|
||||
```
|
||||
|
||||
The raw lowercase-hex SHA-256 of the key wire format is also accepted.
|
||||
|
||||
### Client Certificates (mTLS)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user