<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.fnord.greeley.co.us/mediawiki/index.php?action=history&amp;feed=atom&amp;title=SNOWMAN_PKI</id>
	<title>SNOWMAN PKI - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.fnord.greeley.co.us/mediawiki/index.php?action=history&amp;feed=atom&amp;title=SNOWMAN_PKI"/>
	<link rel="alternate" type="text/html" href="https://wiki.fnord.greeley.co.us/mediawiki/index.php?title=SNOWMAN_PKI&amp;action=history"/>
	<updated>2026-05-06T15:29:39Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.17</generator>
	<entry>
		<id>https://wiki.fnord.greeley.co.us/mediawiki/index.php?title=SNOWMAN_PKI&amp;diff=809&amp;oldid=prev</id>
		<title>Adj: /* Certificate authority hierarchy */</title>
		<link rel="alternate" type="text/html" href="https://wiki.fnord.greeley.co.us/mediawiki/index.php?title=SNOWMAN_PKI&amp;diff=809&amp;oldid=prev"/>
		<updated>2015-07-20T14:14:11Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Certificate authority hierarchy&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 14:14, 20 July 2015&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 7:&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 7:&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Certificate authority hierarchy ==&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Certificate authority hierarchy ==&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;We&#039;ll be using the [https://openssl.org/ OpenSSL] suite of tools.  We&#039;ll actually have a number of certificate authorities: One root CA, which issues certificates for its intermediate certificate authorities, and maintains a certificate revocation list in case an subordinate&#039;s keys are compromised.  Two subordinate CAs, the first will issue certificates and the second is a standby, in case the first is compromised.&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;We&#039;ll be using the [https://openssl.org/ OpenSSL] suite of tools.  We&#039;ll actually have a number of certificate authorities: One root CA, which issues certificates for its intermediate certificate authorities, and maintains a certificate revocation list in case an subordinate&#039;s keys are compromised.  Two subordinate CAs, the first will issue certificates and the second is a standby, in case the first is compromised&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;.  Subordinate 1 will issue certificates to CAs dedicated to certificates for specific purposes: IPSEC, backup, internal web based services, and so on&lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Root CA key generation ===&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Root CA key generation ===&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;

&lt;!-- diff cache key wikidb:diff:wikidiff2:1.12:old-808:rev-809:1.13.0 --&gt;
&lt;/table&gt;</summary>
		<author><name>Adj</name></author>
	</entry>
	<entry>
		<id>https://wiki.fnord.greeley.co.us/mediawiki/index.php?title=SNOWMAN_PKI&amp;diff=808&amp;oldid=prev</id>
		<title>Adj: Created page with &quot;Wherein Aaron buys in to the long strings of bits cartel...  == What&#039;s the idea of a public key infrastructure? == Alice wants to talk to Bob.  Alice doesn&#039;t really know Bob, ...&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.fnord.greeley.co.us/mediawiki/index.php?title=SNOWMAN_PKI&amp;diff=808&amp;oldid=prev"/>
		<updated>2015-07-20T02:17:31Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;Wherein Aaron buys in to the long strings of bits cartel...  == What&amp;#039;s the idea of a public key infrastructure? == Alice wants to talk to Bob.  Alice doesn&amp;#039;t really know Bob, ...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Wherein Aaron buys in to the long strings of bits cartel...&lt;br /&gt;
&lt;br /&gt;
== What&amp;#039;s the idea of a public key infrastructure? ==&lt;br /&gt;
Alice wants to talk to Bob.  Alice doesn&amp;#039;t really know Bob, but her message is for Bob alone.  How does she do this without meeting Bob in a dark alley somewhere and doing DNA swabs?  One way is to have someone Alice trusts vouch for Bob.  We&amp;#039;ll call this vouching entity a certificate authority or CA.&lt;br /&gt;
&lt;br /&gt;
With a public key infrastructure in place, Alice will a list of certificate authorities.  When Alice contacts Bob, Bob presents some credentials that were issued by one of the CAs Alice trusts.  Alice thus gains some assurance that she actually is talking to Bob.  (There are a number of ways this trust can be subverted, though.  Someone may have stolen the keys Bob uses as identification.  Or someone may have tricked the certificate authority into issuing credentials that say &amp;quot;Bob&amp;quot; even though they are not Bob.)  Bob can also ask Alice for some credentials issued by a certificate authority that he trusts.  We wind up with all parties trusting the certificate authority&amp;#039;s vouches instead of needing a sort out another way of verifying identity.&lt;br /&gt;
&lt;br /&gt;
== Certificate authority hierarchy ==&lt;br /&gt;
We&amp;#039;ll be using the [https://openssl.org/ OpenSSL] suite of tools.  We&amp;#039;ll actually have a number of certificate authorities: One root CA, which issues certificates for its intermediate certificate authorities, and maintains a certificate revocation list in case an subordinate&amp;#039;s keys are compromised.  Two subordinate CAs, the first will issue certificates and the second is a standby, in case the first is compromised.&lt;br /&gt;
&lt;br /&gt;
=== Root CA key generation ===&lt;br /&gt;
Our root CA&amp;#039;s key will be quite large by 2015 standards.  We make it like so:&lt;br /&gt;
 $ &amp;#039;&amp;#039;&amp;#039;openssl genrsa -aes256 -out SNOWMAN-root-CA.pem 8192&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 Generating RSA private key, 8192 bit long modulus&lt;br /&gt;
 ........................................................................................................................&lt;br /&gt;
 ................................................++&lt;br /&gt;
 ........................................................................................................................&lt;br /&gt;
 ........................................................................................................................&lt;br /&gt;
 ........................................................................................................................&lt;br /&gt;
 ...................................................................++&lt;br /&gt;
 e is 65537 (0x10001)&lt;br /&gt;
 Enter pass phrase for SNOWMAN-root-CA.pem: &amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;a very secure passphrase goes here&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 Verifying - Enter pass phrase for SNOWMAN-root-CA.pem: &amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;a very secure passphrase goes here (again)&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 $&lt;br /&gt;
&lt;br /&gt;
So, we now have an encrypted version of an 8192 bit long RSA private key in a file called &amp;#039;&amp;#039;&amp;#039;&amp;lt;code&amp;gt;SNOWMAN-root-CA.pem&amp;lt;/code&amp;gt;&amp;#039;&amp;#039;&amp;#039;.  Do not lose the passphrase, or the whole CA hierarchy will be lost.  Next up, we&amp;#039;ll make a certificate from that key&lt;br /&gt;
&lt;br /&gt;
=== Root CA certificate ===&lt;/div&gt;</summary>
		<author><name>Adj</name></author>
	</entry>
</feed>