<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Secrets on Tom Meurs</title>
    <link>https://tommeurs.nl/en/tags/secrets/</link>
    <description>Recent content in Secrets on Tom Meurs</description>
    <generator>Hugo</generator>
    <language>en</language>
    <copyright>© Tom Meurs</copyright>
    <lastBuildDate>Tue, 13 Jan 2026 17:00:00 +0100</lastBuildDate>
    <atom:link href="https://tommeurs.nl/en/tags/secrets/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>YubiKey &#43; Pass &#43; GPG &#43; SSH: One Key to Rule Them All</title>
      <link>https://tommeurs.nl/en/posts/yubikey-pass-gpg-ssh/</link>
      <pubDate>Tue, 13 Jan 2026 17:00:00 +0100</pubDate>
      <guid>https://tommeurs.nl/en/posts/yubikey-pass-gpg-ssh/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;strong&gt;TL;DR&lt;/strong&gt; One YubiKey carries a GPG key with a signing, an encryption and an authentication subkey. gpg-agent hands the authentication subkey to SSH, git signs with the signing subkey and pass decrypts with the encryption subkey, so one PIN in the morning and a touch per action replace every password I used to type. The SSH part alone is three steps and worth doing on its own.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;Every morning I plug in my YubiKey, type one PIN, and that&amp;rsquo;s the last secret I type until I pull it out again. SSH to a server, no password. Sign a commit, no passphrase. Pull a secret out of pass, touch the key. One thing in a USB port, and the rest of the day my authentication happens without me.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Pass: the Unix password manager that just works</title>
      <link>https://tommeurs.nl/en/posts/pass-password-manager/</link>
      <pubDate>Sat, 10 Jan 2026 12:00:00 +0100</pubDate>
      <guid>https://tommeurs.nl/en/posts/pass-password-manager/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;strong&gt;TL;DR&lt;/strong&gt; pass keeps each password as a GPG-encrypted file in a directory, and the directory is the whole data model. &lt;code&gt;pass -c email/gmail&lt;/code&gt; puts a password in your clipboard from any terminal, &lt;code&gt;pass git push&lt;/code&gt; backs the store up, and the fzf script further down is how I look up every password I have. The price is GPG key management, and it&amp;rsquo;s a real price.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;I used KeePass for years. Then 1Password. Then Bitwarden. All decent tools, and every one of them was too much for what I asked of it. Too much UI, too many features, and a password always lived on the other side of an app I had to alt-tab into. A small interruption, and they added up.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Vault for Beginners: Secrets Management in Kubernetes</title>
      <link>https://tommeurs.nl/en/posts/vault-beginners-kubernetes/</link>
      <pubDate>Wed, 02 Jul 2025 10:00:00 +0200</pubDate>
      <guid>https://tommeurs.nl/en/posts/vault-beginners-kubernetes/</guid>
      <description>&lt;p&gt;The first time I ran &lt;code&gt;kubectl get secret myapp -o yaml&lt;/code&gt; and base64-decoded the value, I felt my stomach drop. There was my database password, sitting in etcd, readable by anyone who could reach the API with the right RBAC. Kubernetes Secrets are not secrets. They&amp;rsquo;re base64-encoded plain text with a fancy name. That&amp;rsquo;s the default, and it&amp;rsquo;s the thing nobody warns you about on day one.&lt;/p&gt;&#xA;&lt;p&gt;Every cloud provider has a fix for sale. AWS has Secrets Manager, Google has Secret Manager, Azure has Key Vault. They work. The catch shows up later: the day you need to migrate, the day you want to know exactly what happens to a secret after you write it, the day you realise your most sensitive data lives in a system you can&amp;rsquo;t inspect.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
