Skip to content

v0.33.0 — SSH CA, Transit RSA/ECDSA, PKI SDK

Choose a tag to compare

@NAGenaev NAGenaev released this 12 Jun 19:39
· 78 commits to main since this release

SSH CA, Transit RSA/ECDSA, PKI SDK

Удостоверяющий центр SSH

Tuck выступает в роли SSH CA: выдаёт подписанные сертификаты пользователям и узлам — без необходимости копировать authorized_keys.

# Настройка CA
tuckcli ssh create-role users \
  --key-type=ca --allowed-users=* --ttl=24h

# Выдача сертификата пользователю (SSH подхватит автоматически)
tuckcli ssh sign users --public-key=~/.ssh/id_ed25519.pub --valid-for=8h

Интеграция с OpenSSH: добавить TrustedUserCAKeys /etc/ssh/tuck_ca.pub в sshd_config — все хосты начнут принимать сертификаты, подписанные Tuck.

Transit: RSA-PSS и ECDSA P-256

# Асимметричное подписание
tuckcli transit create-key signing-key --type=ecdsa-p256
tuckcli transit sign signing-key --input="$(echo -n 'data' | base64)"
tuckcli transit verify signing-key --input="..." --signature="..."

PKI SDK (pkg/client)

pki := c.PKI()
pki.SetupCA("pki", client.PKICARequest{CommonName: "My Root CA", TTL: "87600h"})
pki.CreateRole("pki", "web", client.PKIRole{AllowedDomains: []string{"example.com"}, MaxTTL: "8760h"})
cert, _ := pki.Issue("pki", "web", client.PKIIssueRequest{CommonName: "api.example.com", TTL: "720h"})

Состав изменений

  • internal/ssh: CAStore, обработчики sign и verify; типы: Role, SignRequest, SignResult
  • internal/transit: добавлены типы ключей ecdsa-p256 и rsa-2048/rsa-4096
  • pkg/client/ssh.go: SSHClientCreateRole, GetRole, DeleteRole, Sign, GetPublicKey, ListRoles
  • pkg/client/pki.go: PKIClientSetupCA, CreateRole, Issue, Revoke, GetCRL
  • pkg/client/transit.go: TransitClientSign, Verify; обновлено шифрование с base64
  • Новые тесты: SSH — 6/6, PKI — расширен до 8 тестов