<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>PKI on System Overlord</title><link>https://systemoverlord.com/tags/pki.html</link><description>Recent content in PKI on System Overlord</description><generator>Hugo</generator><language>en-us</language><managingEditor>david@systemoverlord.com (David Tomaschik)</managingEditor><webMaster>david@systemoverlord.com (David Tomaschik)</webMaster><lastBuildDate>Sun, 14 Jun 2020 00:00:00 +0000</lastBuildDate><atom:link href="https://systemoverlord.com/tags/pki/index.xml" rel="self" type="application/rss+xml"/><item><title>Private CA with X.509 Name Constraints</title><link>https://systemoverlord.com/2020/06/14/private-ca-with-x-509-name-constraints.html</link><pubDate>Sun, 14 Jun 2020 00:00:00 +0000</pubDate><author>david@systemoverlord.com (David Tomaschik)</author><guid>https://systemoverlord.com/2020/06/14/private-ca-with-x-509-name-constraints.html</guid><description>&lt;p&gt;I wanted to run a small private &lt;a href="https://en.wikipedia.org/wiki/Certificate_authority"&gt;Certificate
Authority&lt;/a&gt; for some of my
internal services. Since these aren&amp;rsquo;t reachable from the internet, and some of
them are on network segments without internet connectivity, using a public ACME
CA like &lt;a href="https://letsencrypt.org/"&gt;Let&amp;rsquo;s Encrypt&lt;/a&gt; was inconvenient. On the
other hand, if I run my own private CA and the keys get compromised, it could be
used to &lt;a href="https://en.wikipedia.org/wiki/Man-in-the-middle_attack"&gt;MITM&lt;/a&gt; all my
internet traffic. While that&amp;rsquo;s unlikely to happen, I decided to look for a
better option.&lt;/p&gt;
&lt;p&gt;It turns out that the idea of a &amp;ldquo;limited purpose&amp;rdquo; Certificate Authority is not
new. &lt;a href="https://tools.ietf.org/html/rfc5280"&gt;RFC 5280&lt;/a&gt; provides for something
called &amp;ldquo;Name Constraints&amp;rdquo;, which allow an X.509 CA to have a scope limited to
certain names, including the parent domains of the certificates issued by the
CA. For example, a host constraint of &lt;code&gt;.example.com&lt;/code&gt; allows the CA to issue
certificates for anything under &lt;code&gt;.example.com&lt;/code&gt;, but not any other host. For
other hosts, clients will fail to validate the chain.&lt;/p&gt;
&lt;p&gt;This hasn&amp;rsquo;t always been supported by TLS libraries and browsers, but all current
browsers do support Name Constraints. Consequently, this is an approach to
narrow the risks associated with a CA compromise for hosts other than those
covered by the constraints in the CA certificate.&lt;/p&gt;</description></item></channel></rss>