<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>SPIFFE Archives - Linuxcent</title>
	<atom:link href="https://linuxcent.com/tag/spiffe/feed/" rel="self" type="application/rss+xml" />
	<link>https://linuxcent.com/tag/spiffe/</link>
	<description>Infrastructure security, from the kernel up.</description>
	<lastBuildDate>Sat, 09 May 2026 18:39:03 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0.4</generator>

<image>
	<url>https://linuxcent.com/wp-content/uploads/2026/04/favicon-512x512-1-150x150.png</url>
	<title>SPIFFE Archives - Linuxcent</title>
	<link>https://linuxcent.com/tag/spiffe/</link>
	<width>32</width>
	<height>32</height>
</image> 
<site xmlns="com-wordpress:feed-additions:1">211632295</site>	<item>
		<title>Zero Trust Identity: SPIFFE, SPIRE, mTLS, and Continuous Verification</title>
		<link>https://linuxcent.com/zero-trust-identity-spiffe-spire/</link>
					<comments>https://linuxcent.com/zero-trust-identity-spiffe-spire/#respond</comments>
		
		<dc:creator><![CDATA[Vamshi Krishna Santhapuri]]></dc:creator>
		<pubDate>Sat, 09 May 2026 05:00:00 +0000</pubDate>
				<category><![CDATA[Identity & Authentication]]></category>
		<category><![CDATA[Cloud Security]]></category>
		<category><![CDATA[Identity Management]]></category>
		<category><![CDATA[Kubernetes]]></category>
		<category><![CDATA[mTLS]]></category>
		<category><![CDATA[SPIFFE]]></category>
		<category><![CDATA[SPIRE]]></category>
		<category><![CDATA[Zero Trust]]></category>
		<guid isPermaLink="false">https://linuxcent.com/?p=1808</guid>

					<description><![CDATA[<p><span class="span-reading-time rt-reading-time" style="display: block;"><span class="rt-label rt-prefix">Reading Time: </span> <span class="rt-time"> 7</span> <span class="rt-label rt-postfix">minutes</span></span>Zero Trust identity: SPIFFE workload identity, SPIRE attestation, mTLS service mesh, PAM tools, and continuous verification — from /etc/passwd to cryptographic trust.</p>
<p>The post <a href="https://linuxcent.com/zero-trust-identity-spiffe-spire/">Zero Trust Identity: SPIFFE, SPIRE, mTLS, and Continuous Verification</a> appeared first on <a href="https://linuxcent.com">Linuxcent</a>.</p>
]]></description>
										<content:encoded><![CDATA[<span class="span-reading-time rt-reading-time" style="display: block;"><span class="rt-label rt-prefix">Reading Time: </span> <span class="rt-time"> 7</span> <span class="rt-label rt-postfix">minutes</span></span><style>
pre{position:relative;background:#1e1e1e;color:#d4d4d4;
    padding:16px 16px 16px 20px;border-radius:6px;overflow-x:auto;
    font-family:'JetBrains Mono','Fira Code','Cascadia Code',Consolas,'Courier New',monospace;
    font-size:.88em;line-height:1.6;border-left:4px solid #555}
code{background:#f4f4f4;padding:2px 5px;border-radius:3px;font-size:.9em}
pre code{background:transparent;padding:0;color:inherit}
pre[data-lang="bash"],pre[data-lang="sh"],
pre[data-lang="shell"],pre[data-lang="zsh"]{border-left-color:#4ec9b0}
pre[data-lang="yaml"],pre[data-lang="json"],
pre[data-lang="toml"],pre[data-lang="xml"]{border-left-color:#569cd6}
pre[data-lang="python"],pre[data-lang="go"],pre[data-lang="rust"],
pre[data-lang="java"],pre[data-lang="c"],pre[data-lang="cpp"]{border-left-color:#c586c0}
pre[data-lang="text"],pre[data-lang="output"],
pre[data-lang="console"]{border-left-color:#888}
.lc-copy-btn{position:absolute;top:8px;right:8px;background:#2d2d2d;color:#ccc;
    border:1px solid #444;border-radius:4px;padding:3px 9px;font-size:.75em;
    font-family:system-ui,sans-serif;cursor:pointer;opacity:0;
    transition:opacity .15s,background .15s;line-height:1.6}
pre:hover .lc-copy-btn{opacity:1}
.lc-copy-btn:hover{background:#3a3a3a;color:#fff}
.lc-copy-btn.copied{color:#4ec9b0;border-color:#4ec9b0}
.lc-lang-badge{position:absolute;top:8px;left:20px;font-family:system-ui,sans-serif;
    font-size:.7em;color:#666;text-transform:uppercase;letter-spacing:.04em;
    line-height:1;pointer-events:none;opacity:0;transition:opacity .15s}
pre:hover .lc-lang-badge{opacity:1}
table{border-collapse:collapse;width:100%;margin:16px 0}
th,td{border:1px solid #ddd;padding:10px 14px;text-align:left}
th{background:#f0f0f0;font-weight:600}
tr:nth-child(even){background:#fafafa}
</style>
<p><script>
(function(){
  if(window.__lcCodeEnhanced)return;
  window.__lcCodeEnhanced=true;
  function enhance(){
    document.querySelectorAll('pre').forEach(function(pre){
      var code=pre.querySelector('code');
      var lang='';
      if(code){var m=(code.className||'').match(/language-(\S+)/);if(m)lang=m[1].toLowerCase();}
      if(lang)pre.setAttribute('data-lang',lang);
      if(lang){var badge=document.createElement('span');badge.className='lc-lang-badge';badge.textContent=lang;pre.insertBefore(badge,pre.firstChild);}
      var btn=document.createElement('button');
      btn.className='lc-copy-btn';btn.textContent='Copy';btn.setAttribute('aria-label','Copy code to clipboard');
      pre.appendChild(btn);
      btn.addEventListener('click',function(){
        var text=code?code.innerText:pre.innerText;
        if(navigator.clipboard&&window.isSecureContext){
          navigator.clipboard.writeText(text).then(function(){ok(btn);}).catch(function(){fb(text,btn);});
        }else{fb(text,btn);}
      });
    });
  }
  function ok(btn){btn.textContent='Copied!';btn.classList.add('copied');setTimeout(function(){btn.textContent='Copy';btn.classList.remove('copied');},2000);}
  function fb(text,btn){
    try{var ta=document.createElement('textarea');ta.value=text;ta.style.cssText='position:fixed;left:-9999px;top:-9999px;opacity:0';document.body.appendChild(ta);ta.select();document.execCommand('copy');document.body.removeChild(ta);ok(btn);}
    catch(e){btn.textContent='✗ Failed';setTimeout(function(){btn.textContent='Copy';},2000);}
  }
  if(document.readyState==='loading'){document.addEventListener('DOMContentLoaded',enhance);}else{enhance();}
})();
</script></p>
<p><em>The Identity Stack, Episode 13</em><br />
<a href="/entra-id-linux-login/">EP12: Entra ID + Linux</a> → <strong>EP13</strong></p>
<hr />
<h2 id="tldr">TL;DR</h2>
<ul>
<li>Zero Trust means &#8220;never trust, always verify&#8221; — identity is verified continuously, not just at login time; network location provides no implicit trust</li>
<li>Human identity (users) and workload identity (services, pods, jobs) are separate problems — LDAP/Kerberos/OIDC solve the human side; SPIFFE/SPIRE solve the workload side</li>
<li>SPIFFE (Secure Production Identity Framework For Everyone) defines a standard for workload identity — a SPIFFE ID is a URI like <code class="" data-line="">spiffe://corp.com/ns/prod/sa/payments-svc</code></li>
<li>SPIRE (SPIFFE Runtime Environment) issues short-lived X.509 SVIDs (SPIFFE Verifiable Identity Documents) to workloads — certificates that rotate automatically, every hour</li>
<li>mTLS (mutual TLS) is how workloads prove identity to each other — both sides present certificates; no passwords, no API keys</li>
<li>The evolution: <code class="" data-line="">/etc/passwd</code> (1970) → NIS → LDAP → Kerberos → SAML → OIDC → SPIFFE/SPIRE — the problem has always been the same; the trust boundary keeps moving outward</li>
</ul>
<hr />
<h2 id="the-big-picture-from-etcpasswd-to-zero-trust">The Big Picture: From /etc/passwd to Zero Trust</h2>
<pre><code class="" data-line="">1970s  /etc/passwd              ← trust: the local machine
       One machine, one user list

1984   NIS / Yellow Pages       ← trust: the local network
       Centralized, but cleartext, flat

1993   LDAP                     ← trust: the directory server
       Hierarchical, scalable, encrypted (eventually)

1988   Kerberos                 ← trust: the KDC
       Tickets instead of passwords, network-wide

2002   SAML                     ← trust: the IdP assertion
       Identity crosses the internet

2014   OIDC / OAuth2            ← trust: the JWT signature
       API-native, mobile-native, developer-native

2017   SPIFFE / SPIRE           ← trust: the workload certificate
       Automated identity for services, not humans

2026   Zero Trust               ← trust: nothing, verify everything
       Continuous verification, short-lived credentials,
       device posture, behavioral signals
</code></pre>
<p>EP01 of this series started with the chaos of per-machine <code class="" data-line="">/etc/passwd</code>. This episode — EP13 — closes the loop: from that chaos to a model where identity is verified continuously, credentials expire in hours not years, and the network provides no implicit trust.</p>
<hr />
<h2 id="the-assumption-that-zero-trust-rejects">The Assumption That Zero Trust Rejects</h2>
<p>Traditional security assumed: if you&#8217;re on the internal network, you&#8217;re trusted. A VPN user was treated as equivalent to someone at a desk in the office. A service running on the same Kubernetes node as another service was implicitly trusted.</p>
<p>That assumption broke in practice:</p>
<ul>
<li>Compromised VPN credentials gave attackers full internal access</li>
<li>Lateral movement after initial compromise was easy — once inside, everything trusted you</li>
<li>Perimeter-based security had no visibility into east-west traffic (service-to-service)</li>
</ul>
<p>Zero Trust inverts the model: <strong>the network provides no trust.</strong> Every access request is verified — user or service, internal or external, first request or hundredth. Trust is dynamic, contextual, and short-lived.</p>
<hr />
<h2 id="human-zero-trust-continuous-verification">Human Zero Trust: Continuous Verification</h2>
<p>For human users, Zero Trust extends OIDC and Conditional Access:</p>
<p><strong>Short-lived tokens.</strong> Access tokens expire in 1 hour (OIDC standard). Refresh tokens are revocable. A user who is terminated can have their refresh tokens revoked in Entra ID — the next time their app tries to use the refresh token, it fails. The maximum blast radius of a stolen token is bounded by its lifetime.</p>
<p><strong>Device posture.</strong> The device the user authenticates from is part of the identity assertion. Conditional Access can require: device is managed (Intune-enrolled), device is compliant (no malware, full-disk encryption enabled, OS patched). A valid user credential from an unmanaged device is denied.</p>
<p><strong>Behavioral signals.</strong> Entra ID Identity Protection and similar systems analyze login patterns — unusual location, impossible travel (login from Mumbai, then New York 5 minutes later), unfamiliar device. High-risk sign-ins trigger step-up authentication or are blocked automatically.</p>
<p><strong>Privileged Access Management (PAM).</strong> For privileged operations (production shell access, AD admin), Zero Trust adds time-bounded just-in-time access:</p>
<pre><code class="" data-line="">Request:  &quot;I need admin access to db01.corp.com for 2 hours to investigate an incident&quot;
Approval: Manager approves via Slack/email/ticketing system
Grant:    Temporary role assignment or password checkout from the PAM vault
Access:   User SSHes with a one-time or time-limited credential
Expire:   Credential automatically revoked after 2 hours
Audit:    Full session recording available for review
</code></pre>
<p>CyberArk, BeyondTrust, and HashiCorp Vault implement this model. Vault&#8217;s SSH Secrets Engine issues short-lived SSH certificates:</p>
<pre><code class="" data-line=""># Request a signed SSH certificate (valid 30 minutes)
vault ssh \
  -role=prod-admin \
  -mode=ca \
  -mount-point=ssh-client-signer \
  vamshi@db01.corp.com

# Vault issues a certificate signed by the server&#039;s trusted CA
# sshd on db01 trusts that CA — no authorized_keys needed
# Certificate expires in 30 minutes — no cleanup required
</code></pre>
<hr />
<h2 id="workload-identity-the-non-human-problem">Workload Identity: The Non-Human Problem</h2>
<p>Services don&#8217;t have passwords they can type. A microservice calling another microservice needs to prove its identity — but you can&#8217;t give a Kubernetes pod a static API key (it&#8217;ll be in a config file, in a git repo, or in a crash dump within 6 months).</p>
<p>Workload identity solves this with <strong>short-lived, automatically rotated certificates</strong> — the service&#8217;s identity is its certificate, issued by a trusted CA, expiring in minutes to hours.</p>
<pre><code class="" data-line="">Traditional:                     Zero Trust:
  payments-svc → orders-svc        payments-svc → orders-svc
  Authentication: API key           Authentication: mTLS (X.509 cert)
  &quot;Bearer sk_live_abc123&quot;           cert: spiffe://corp.com/ns/prod/sa/payments-svc
  Rotation: manual (rarely done)    Rotation: automatic, every hour
  Revocation: change the key        Revocation: cert expires; new cert issued
  Audit: &quot;API key was used&quot;         Audit: &quot;spiffe://payments-svc → spiffe://orders-svc&quot;
</code></pre>
<hr />
<h2 id="spiffe-the-standard">SPIFFE: The Standard</h2>
<p>SPIFFE (Secure Production Identity Framework For Everyone) defines what a workload identity looks like. The core concept is the SPIFFE ID — a URI in the format:</p>
<pre><code class="" data-line="">spiffe://&lt;trust-domain&gt;/&lt;workload-path&gt;

Examples:
  spiffe://corp.com/ns/prod/sa/payments-svc
  spiffe://corp.com/region/us-east/service/auth-api
  spiffe://corp.com/k8s/cluster-prod/namespace/payments/pod/payments-svc-abc123
</code></pre>
<p>The trust domain (<code class="" data-line="">corp.com</code>) is the organizational boundary. The path is the workload identifier — typically encoding namespace, service account, or cluster information.</p>
<p>A SPIFFE ID is embedded in an SVID (SPIFFE Verifiable Identity Document) — either an X.509 certificate (X.509-SVID) or a JWT (JWT-SVID). The X.509-SVID is the standard form: the SPIFFE ID appears in the certificate&#8217;s Subject Alternative Name (SAN) field.</p>
<pre><code class="" data-line="">X.509 Certificate (SVID):
  Subject: CN=payments-svc
  SAN: URI=spiffe://corp.com/ns/prod/sa/payments-svc
  Validity: 1 hour
  Issuer: SPIRE Intermediate CA
  Signed by: corp.com trust bundle
</code></pre>
<p>Any service that has the <code class="" data-line="">corp.com</code> trust bundle (the CA certificate chain) can verify that a certificate with <code class="" data-line="">spiffe://corp.com/...</code> in the SAN was issued by the authorized CA for that trust domain.</p>
<hr />
<h2 id="spire-the-runtime">SPIRE: The Runtime</h2>
<p>SPIRE (SPIFFE Runtime Environment) is the reference implementation that issues SVIDs to workloads.</p>
<pre><code class="" data-line="">SPIRE Server
  ├── Node attestation: verifies the identity of the node/VM
  │   (AWS instance identity document, GCP service account, k8s node SA)
  └── Workload attestation: verifies the identity of the process
      (Kubernetes SA, Unix UID/GID, Docker container labels)
         │
         │ issues X.509 SVIDs (short-lived, auto-rotated)
         ▼
SPIRE Agent (runs on every node)
         │
         │ SPIFFE Workload API (Unix socket)
         ▼
Workload (your service)
  → gets its own certificate
  → gets the trust bundle (CA certs of trusted domains)
  → uses cert for mTLS with other services
</code></pre>
<p>The workload fetches its identity via the Workload API socket — no environment variables, no file mounts. The SPIRE Agent pushes new certificates before the old ones expire. Rotation is transparent to the workload.</p>
<pre><code class="" data-line=""># On a node with SPIRE Agent running:
# Fetch the SVID for the current workload
spire-agent api fetch x509 \
  -socketPath /run/spire/sockets/agent.sock

# Output shows:
# SPIFFE ID: spiffe://corp.com/ns/prod/sa/payments-svc
# Certificate: (PEM)
# Trust bundle: (PEM of issuing CA chain)
# Expires: 2026-04-27T02:00:00Z (1 hour from now)
</code></pre>
<hr />
<h2 id="mtls-both-sides-show-id">mTLS: Both Sides Show ID</h2>
<p>Mutual TLS (mTLS) is what makes SPIFFE useful operationally. In standard TLS, only the server presents a certificate — the client just verifies it. In mTLS, both sides present certificates. Both sides verify the other&#8217;s certificate against the trust bundle.</p>
<pre><code class="" data-line="">payments-svc → orders-svc connection:

TLS handshake:
  payments-svc presents: spiffe://corp.com/ns/prod/sa/payments-svc cert
  orders-svc presents:   spiffe://corp.com/ns/prod/sa/orders-svc cert

  Both verify:
    • cert signed by trusted CA (the corp.com SPIRE CA)
    • cert not expired
    • SPIFFE ID in SAN matches what&#039;s expected

  After handshake: encrypted channel, both sides verified
  Authorization: orders-svc checks its policy:
    &quot;is spiffe://corp.com/ns/prod/sa/payments-svc allowed to call /api/orders?&quot;
</code></pre>
<p>Service meshes (Istio, Linkerd, Consul Connect) implement mTLS transparently — the application doesn&#8217;t handle certificates; the sidecar proxy does. In Istio&#8217;s case, Citadel (now istiod) acts as the SPIFFE-compatible CA, issuing certificates to envoy sidecars. The application code doesn&#8217;t change.</p>
<hr />
<h2 id="open-policy-agent-authorization-after-identity">Open Policy Agent: Authorization After Identity</h2>
<p>Zero Trust separates identity from authorization. Once you know who the caller is (SPIFFE ID, OIDC token, user cert), a policy engine decides what they can do.</p>
<p>OPA (Open Policy Agent) is the standard for this:</p>
<pre><code class="" data-line=""># opa-policy.rego
package authz

# payments-svc can read orders; nothing else can write orders
allow {
  input.caller == &quot;spiffe://corp.com/ns/prod/sa/payments-svc&quot;
  input.method == &quot;GET&quot;
  startswith(input.path, &quot;/api/orders&quot;)
}

default allow = false
</code></pre>
<p>The service checks OPA on each request: &#8220;caller=X wants to do Y to Z — allowed?&#8221; OPA evaluates the policy and returns a decision. The policy is version-controlled, tested, and deployed independently of the service.</p>
<hr />
<h2 id="common-misconceptions"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/26a0.png" alt="⚠" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Common Misconceptions</h2>
<p><strong>&#8220;Zero Trust means no trust.&#8221;</strong> Zero Trust means trust is earned dynamically through verification, not granted by network location. A verified user with a valid, compliant device and MFA is trusted — for the scope and duration of the verified session. The &#8220;zero&#8221; refers to implicit trust, not trust itself.</p>
<p><strong>&#8220;SPIFFE replaces OIDC.&#8221;</strong> SPIFFE is for workload (service) identity. OIDC is for human (user) identity. They complement each other — a service has a SPIFFE identity; a user has an OIDC identity; the authorization layer accepts both.</p>
<p><strong>&#8220;mTLS is complex to implement.&#8221;</strong> With a service mesh (Istio, Linkerd), mTLS is transparent — the sidecar handles it. Without a service mesh, the application needs to use the SPIFFE Workload API. The complexity is real but manageable, especially compared to the alternative of static API keys.</p>
<hr />
<h2 id="framework-alignment">Framework Alignment</h2>
<table>
<thead>
<tr>
<th>Domain</th>
<th>Relevance</th>
</tr>
</thead>
<tbody>
<tr>
<td>CISSP Domain 5: Identity and Access Management</td>
<td>Zero Trust extends IAM to workloads (SPIFFE) and continuous verification (short-lived tokens, device posture) — it&#8217;s the current frontier of identity architecture</td>
</tr>
<tr>
<td>CISSP Domain 3: Security Architecture and Engineering</td>
<td>The separation of identity (SPIFFE ID), authentication (mTLS), and authorization (OPA) is a clean architectural decomposition that scales to complex multi-service environments</td>
</tr>
<tr>
<td>CISSP Domain 4: Communications and Network Security</td>
<td>mTLS encrypts and authenticates every service-to-service connection — it eliminates the assumption that east-west traffic on the internal network is safe</td>
</tr>
<tr>
<td>CISSP Domain 1: Security and Risk Management</td>
<td>Zero Trust is a risk management posture — it accepts that perimeter breach is inevitable and limits blast radius through continuous verification and least-privilege</td>
</tr>
</tbody>
</table>
<hr />
<h2 id="key-takeaways">Key Takeaways</h2>
<ul>
<li>Zero Trust rejects network-based implicit trust — every request is verified regardless of source</li>
<li>Human identity: short-lived OIDC tokens, device posture checks, Conditional Access, JIT privileged access (Vault, CyberArk)</li>
<li>Workload identity: SPIFFE IDs in X.509 certificates, issued by SPIRE, rotated automatically every hour — no static API keys</li>
<li>mTLS lets services verify each other&#8217;s identity at the TLS layer — service meshes (Istio, Linkerd) implement it transparently</li>
<li>OPA handles authorization after identity is established — who you are ≠ what you can do</li>
<li>The series arc: <code class="" data-line="">/etc/passwd</code> → NIS → LDAP → Kerberos → SAML → OIDC → SPIFFE/SPIRE — the problem has always been &#8220;how do you know who someone is, at scale, without trusting the network?&#8221; The answer keeps getting better.</li>
</ul>
<hr />
<p>What does identity look like at your organization — still static API keys and shared service accounts, or moving toward SPIFFE and short-lived credentials? <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f447.png" alt="👇" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<hr />
<p><em>The Identity Stack: From LDAP to Zero Trust — 13 episodes complete.</em></p>
<p><a href="/what-is-ldap/">Start from EP01: What Is LDAP →</a></p>
<p><a class="a2a_button_mastodon" href="https://www.addtoany.com/add_to/mastodon?linkurl=https%3A%2F%2Flinuxcent.com%2Fzero-trust-identity-spiffe-spire%2F&amp;linkname=Zero%20Trust%20Identity%3A%20SPIFFE%2C%20SPIRE%2C%20mTLS%2C%20and%20Continuous%20Verification" title="Mastodon" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_email" href="https://www.addtoany.com/add_to/email?linkurl=https%3A%2F%2Flinuxcent.com%2Fzero-trust-identity-spiffe-spire%2F&amp;linkname=Zero%20Trust%20Identity%3A%20SPIFFE%2C%20SPIRE%2C%20mTLS%2C%20and%20Continuous%20Verification" title="Email" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_whatsapp" href="https://www.addtoany.com/add_to/whatsapp?linkurl=https%3A%2F%2Flinuxcent.com%2Fzero-trust-identity-spiffe-spire%2F&amp;linkname=Zero%20Trust%20Identity%3A%20SPIFFE%2C%20SPIRE%2C%20mTLS%2C%20and%20Continuous%20Verification" title="WhatsApp" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_reddit" href="https://www.addtoany.com/add_to/reddit?linkurl=https%3A%2F%2Flinuxcent.com%2Fzero-trust-identity-spiffe-spire%2F&amp;linkname=Zero%20Trust%20Identity%3A%20SPIFFE%2C%20SPIRE%2C%20mTLS%2C%20and%20Continuous%20Verification" title="Reddit" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_x" href="https://www.addtoany.com/add_to/x?linkurl=https%3A%2F%2Flinuxcent.com%2Fzero-trust-identity-spiffe-spire%2F&amp;linkname=Zero%20Trust%20Identity%3A%20SPIFFE%2C%20SPIRE%2C%20mTLS%2C%20and%20Continuous%20Verification" title="X" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_linkedin" href="https://www.addtoany.com/add_to/linkedin?linkurl=https%3A%2F%2Flinuxcent.com%2Fzero-trust-identity-spiffe-spire%2F&amp;linkname=Zero%20Trust%20Identity%3A%20SPIFFE%2C%20SPIRE%2C%20mTLS%2C%20and%20Continuous%20Verification" title="LinkedIn" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_copy_link" href="https://www.addtoany.com/add_to/copy_link?linkurl=https%3A%2F%2Flinuxcent.com%2Fzero-trust-identity-spiffe-spire%2F&amp;linkname=Zero%20Trust%20Identity%3A%20SPIFFE%2C%20SPIRE%2C%20mTLS%2C%20and%20Continuous%20Verification" title="Copy Link" rel="nofollow noopener" target="_blank"></a><a class="a2a_dd addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=https%3A%2F%2Flinuxcent.com%2Fzero-trust-identity-spiffe-spire%2F&#038;title=Zero%20Trust%20Identity%3A%20SPIFFE%2C%20SPIRE%2C%20mTLS%2C%20and%20Continuous%20Verification" data-a2a-url="https://linuxcent.com/zero-trust-identity-spiffe-spire/" data-a2a-title="Zero Trust Identity: SPIFFE, SPIRE, mTLS, and Continuous Verification"></a></p><p>The post <a href="https://linuxcent.com/zero-trust-identity-spiffe-spire/">Zero Trust Identity: SPIFFE, SPIRE, mTLS, and Continuous Verification</a> appeared first on <a href="https://linuxcent.com">Linuxcent</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://linuxcent.com/zero-trust-identity-spiffe-spire/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1808</post-id>	</item>
	</channel>
</rss>

<!--
Performance optimized by W3 Total Cache. Learn more: https://www.boldgrid.com/w3-total-cache/?utm_source=w3tc&utm_medium=footer_comment&utm_campaign=free_plugin

Page Caching using Disk: Enhanced 

Served from: linuxcent.com @ 2026-08-22 13:48:35 by W3 Total Cache
-->