<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.chepkov.com/w/index.php?action=history&amp;feed=atom&amp;title=Managing_Certificate_Authority</id>
	<title>Managing Certificate Authority - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://www.chepkov.com/w/index.php?action=history&amp;feed=atom&amp;title=Managing_Certificate_Authority"/>
	<link rel="alternate" type="text/html" href="https://www.chepkov.com/w/index.php?title=Managing_Certificate_Authority&amp;action=history"/>
	<updated>2026-04-28T17:16:35Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>https://www.chepkov.com/w/index.php?title=Managing_Certificate_Authority&amp;diff=589&amp;oldid=prev</id>
		<title>Vvc at 14:04, 7 October 2018</title>
		<link rel="alternate" type="text/html" href="https://www.chepkov.com/w/index.php?title=Managing_Certificate_Authority&amp;diff=589&amp;oldid=prev"/>
		<updated>2018-10-07T14:04:40Z</updated>

		<summary type="html">&lt;p&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:04, 7 October 2018&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l30&quot;&gt;Line 30:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 30:&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;default_days    = 365&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;default_days    = 365&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;div&gt;default_crl_days= 35&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;default_crl_days= 35&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;default_md      = &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;sha1&lt;/del&gt;&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;default_md      = &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;sha256&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;div&gt;preserve        = no&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;preserve        = no&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;div&gt;policy          = policy_any&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;policy          = policy_any&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key vvcwiki:diff:1.41:old-206:rev-589:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>Vvc</name></author>
	</entry>
	<entry>
		<id>https://www.chepkov.com/w/index.php?title=Managing_Certificate_Authority&amp;diff=206&amp;oldid=prev</id>
		<title>Vvc: server</title>
		<link rel="alternate" type="text/html" href="https://www.chepkov.com/w/index.php?title=Managing_Certificate_Authority&amp;diff=206&amp;oldid=prev"/>
		<updated>2009-01-26T01:34:52Z</updated>

		<summary type="html">&lt;p&gt;server&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;This article should help you to run your own &amp;#039;&amp;#039;&amp;#039;certificate authority (CA)&amp;#039;&amp;#039;&amp;#039;. &lt;br /&gt;
== Creating CA ==&lt;br /&gt;
We will keep all files related to our CA in directory &amp;#039;&amp;#039;&amp;#039;/root/CA&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
=== openssl.conf ===&lt;br /&gt;
First, we will create OpenSSL configuration file. It can be stored anywere and referenced by environment variable&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
export OPENSSL_CONF=/root/CA/openssl.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here is my file&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[ ca ]&lt;br /&gt;
default_ca      = CA_default&lt;br /&gt;
&lt;br /&gt;
[ CA_default ]&lt;br /&gt;
dir             = /root/CA&lt;br /&gt;
new_certs_dir   = $dir/certs&lt;br /&gt;
database        = $dir/index.txt&lt;br /&gt;
unique_subject  = no&lt;br /&gt;
certificate     = $dir/cacert.pem&lt;br /&gt;
private_key     = $dir/private/cakey.pem&lt;br /&gt;
serial          = $dir/serial&lt;br /&gt;
crl             = $dir/crl.pem&lt;br /&gt;
RANDFILE        = $dir/private/.rand&lt;br /&gt;
x509_extensions = usr_cert&lt;br /&gt;
name_opt        = ca_default&lt;br /&gt;
cert_opt        = ca_default&lt;br /&gt;
copy_extensions = copy&lt;br /&gt;
default_days    = 365&lt;br /&gt;
default_crl_days= 35&lt;br /&gt;
default_md      = sha1&lt;br /&gt;
preserve        = no&lt;br /&gt;
policy          = policy_any&lt;br /&gt;
&lt;br /&gt;
[ policy_any ]&lt;br /&gt;
countryName             = supplied&lt;br /&gt;
stateOrProvinceName     = supplied&lt;br /&gt;
localityName            = supplied&lt;br /&gt;
organizationName        = optional&lt;br /&gt;
organizationalUnitName  = optional&lt;br /&gt;
commonName              = supplied&lt;br /&gt;
emailAddress            = supplied&lt;br /&gt;
&lt;br /&gt;
[ req ]&lt;br /&gt;
default_bits            = 1024&lt;br /&gt;
default_md              = sha1&lt;br /&gt;
distinguished_name      = req_distinguished_name&lt;br /&gt;
prompt                  = no&lt;br /&gt;
x509_extensions         = v3_ca&lt;br /&gt;
&lt;br /&gt;
[ req_distinguished_name ]&lt;br /&gt;
countryName             = US&lt;br /&gt;
stateOrProvinceName     = Virginia&lt;br /&gt;
localityName            = Leesburg&lt;br /&gt;
organizationName        = Vadym Chepkov&lt;br /&gt;
organizationalUnitName  = Vadym Chepkov CA&lt;br /&gt;
commonName              = Vadym Chepkov CA&lt;br /&gt;
emailAddress            = vvc@chepkov.com&lt;br /&gt;
&lt;br /&gt;
[ v3_ca ]&lt;br /&gt;
subjectKeyIdentifier=hash&lt;br /&gt;
authorityKeyIdentifier=keyid:always,issuer:always&lt;br /&gt;
keyUsage = critical,keyCertSign,cRLSign&lt;br /&gt;
basicConstraints = critical,CA:TRUE,pathlen:1&lt;br /&gt;
subjectAltName=email:copy&lt;br /&gt;
issuerAltName=issuer:copy&lt;br /&gt;
authorityInfoAccess = caIssuers;URI:http://www.chepkov.com/ca.html&lt;br /&gt;
crlDistributionPoints=URI:http://www.chepkov.com/vvc-ca.crl&lt;br /&gt;
&lt;br /&gt;
[ intermediate_ca ]&lt;br /&gt;
subjectKeyIdentifier=hash&lt;br /&gt;
authorityKeyIdentifier=keyid:always,issuer:always&lt;br /&gt;
keyUsage = critical,keyCertSign,cRLSign&lt;br /&gt;
basicConstraints = critical,CA:TRUE,pathlen:0&lt;br /&gt;
subjectAltName=email:copy&lt;br /&gt;
issuerAltName=issuer:copy&lt;br /&gt;
authorityInfoAccess = caIssuers;URI:http://www.chepkov.com/ca.html&lt;br /&gt;
crlDistributionPoints=URI:http://www.chepkov.com/vvc-ca.crl&lt;br /&gt;
&lt;br /&gt;
[ usr_cert ]&lt;br /&gt;
basicConstraints = critical,CA:FALSE&lt;br /&gt;
keyUsage  = critical,digitalSignature,keyAgreement&lt;br /&gt;
subjectKeyIdentifier=hash&lt;br /&gt;
authorityKeyIdentifier=keyid,issuer&lt;br /&gt;
issuerAltName=issuer:copy&lt;br /&gt;
authorityInfoAccess = caIssuers;URI:http://www.chepkov.com/ca.html&lt;br /&gt;
crlDistributionPoints=URI:http://www.chepkov.com/vvc-ca.crl&lt;br /&gt;
&lt;br /&gt;
[ server ]&lt;br /&gt;
basicConstraints = critical,CA:FALSE&lt;br /&gt;
subjectKeyIdentifier=hash&lt;br /&gt;
authorityKeyIdentifier=keyid,issuer:always&lt;br /&gt;
extendedKeyUsage=serverAuth&lt;br /&gt;
keyUsage = critical,digitalSignature, keyEncipherment&lt;br /&gt;
authorityInfoAccess = caIssuers;URI:http://www.chepkov.com/ca.html&lt;br /&gt;
crlDistributionPoints=URI:http://www.chepkov.com/vvc-ca.crl&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Creating initial database ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /root/CA&lt;br /&gt;
mkdir certs private&lt;br /&gt;
chmod 700 private&lt;br /&gt;
echo 01 &amp;gt; serial&lt;br /&gt;
touch index.txt index.txt.attr&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Creating CA private key ===&lt;br /&gt;
 openssl genrsa -out private/cakey.pem 2048&lt;br /&gt;
&lt;br /&gt;
=== Creating CA certificate request ===&lt;br /&gt;
 openssl req -new -key private/cakey.pem -out ca.csr&lt;br /&gt;
&lt;br /&gt;
=== Self-signing CA certificate ===&lt;br /&gt;
 openssl ca -selfsign -in ca.csr -keyfile private/cakey.pem -out cacert.pem -extensions v3_ca -verbose -enddate 361231235959Z&lt;br /&gt;
&lt;br /&gt;
=== Signing Certificate Request ===&lt;br /&gt;
 openssl ca -days 730 -in server.csr -out server.crt -extensions server&lt;br /&gt;
&lt;br /&gt;
Make sure expiration day of the certificate does not exceed expiration day of your certificate authority. You don&amp;#039;t have to specify &amp;#039;&amp;#039;&amp;#039;days&amp;#039;&amp;#039;&amp;#039; argument if you want to use default from openssl.conf&lt;br /&gt;
&lt;br /&gt;
=== Revoking a certificate ===&lt;br /&gt;
 openssl ca -revoke cert.pem&lt;br /&gt;
&lt;br /&gt;
=== Generating  Certificate Revocation List (CRL) ===&lt;br /&gt;
 openssl ca -gencrl -out crl.pem&lt;br /&gt;
 openssl crl -in crl.pem -out crl.crl -outform DER&lt;br /&gt;
&lt;br /&gt;
[[Category:OpenSSL]]&lt;/div&gt;</summary>
		<author><name>Vvc</name></author>
	</entry>
</feed>