GUIDES

Security Researcher Details SSH Certificate Implementation for Git Signing

M megaone_admin Mar 22, 2026 2 min read
Engine Score 7/10 — Important

This story offers actionable guidance on securing Git workflows with SSH certificates, significantly impacting developers and organizations focused on software supply chain security. While the underlying technologies are established, the practical implementation details are highly relevant for improving secure development practices.

Editorial illustration for: Security Researcher Details SSH Certificate Implementation for Git Signing

Security researcher Matthew Garrett has published a detailed guide on implementing SSH certificates for git commit signing, addressing supply chain security concerns in software development. The blog post outlines how SSH certificates can provide better authentication than traditional methods when validating code authorship.

Git supports cryptographic signing of commits and tags using OpenPGP keys, X.509 certificates, or SSH keys. However, Garrett notes that “bare cryptographic keys aren’t terribly helpful in isolation – you need some way to make a determination about which keys you trust.” He dismisses OpenPGP due to web of trust issues and calls X.509 certificates “an absolute nightmare.”

SSH certificates offer a solution by providing public keys signed by trusted parties, with metadata including “Principals” – a list of identities and potentially group membership information. The implementation requires setting two main git configuration parameters: git config set gpg.format ssh and either configuring user.signingkey to the certificate path or gpg.ssh.defaultKeyCommand to communicate with an SSH agent.

Garrett has developed a tool that “will talk to an SSH agent, find a certificate signed with the key provided with the -ca argument, and then pass that back to git.” This enables developers to use the -S flag with git commit commands for signing. The approach supports SSH agent forwarding, allowing developers to keep keys on local systems while accessing them on remote development environments.

Signature validation proves more complex, requiring ssh-keygen to validate against an authorized-keys format file. Garrett recommends adding entries like * cert-authority ssh-rsa AAAA… which “will match all principals (the wildcard) and succeed if the signature is made with a certificate that’s signed by the key following cert-authority.” The researcher warns against examining git’s implementation code for this functionality, though he doesn’t specify the reasons for this recommendation.

Share

Enjoyed this story?

Get articles like this delivered daily. The Engine Room — free AI intelligence newsletter.

Join 500+ AI professionals · No spam · Unsubscribe anytime

M
MegaOne AI Editorial Team

MegaOne AI monitors 200+ sources daily to identify and score the most important AI developments. Our editorial team reviews 200+ sources with rigorous oversight to deliver accurate, scored coverage of the AI industry. Every story is fact-checked, linked to primary sources, and rated using our six-factor Engine Score methodology.

About Us Editorial Policy