<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.frotmail.nl/index.php?action=history&amp;feed=atom&amp;title=OpenSSL_PKI</id>
	<title>OpenSSL PKI - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.frotmail.nl/index.php?action=history&amp;feed=atom&amp;title=OpenSSL_PKI"/>
	<link rel="alternate" type="text/html" href="https://wiki.frotmail.nl/index.php?title=OpenSSL_PKI&amp;action=history"/>
	<updated>2026-06-15T08:00:29Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.45.3</generator>
	<entry>
		<id>https://wiki.frotmail.nl/index.php?title=OpenSSL_PKI&amp;diff=94&amp;oldid=prev</id>
		<title>Eric: Created page with &quot;rootca.conf  [ default ]  ca                      = Frotmail.nl-ClientSSL # CA name  dir                     = .                     # Top dir  base_url                = http://ssl.frotmail.nl   # CA base URL  aia_url                 = $base_url/$ca.cer     # CA certificate URL  crl_url                 = $base_url/$ca.crl     # CRL distribution point  name_opt                = multiline,-esc_msb,utf8 # Display UTF-8 characters    # CA certificate request  [ req ]  defaul...&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.frotmail.nl/index.php?title=OpenSSL_PKI&amp;diff=94&amp;oldid=prev"/>
		<updated>2022-04-05T09:36:54Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;rootca.conf  [ default ]  ca                      = Frotmail.nl-ClientSSL # CA name  dir                     = .                     # Top dir  base_url                = http://ssl.frotmail.nl   # CA base URL  aia_url                 = $base_url/$ca.cer     # CA certificate URL  crl_url                 = $base_url/$ca.crl     # CRL distribution point  name_opt                = multiline,-esc_msb,utf8 # Display UTF-8 characters    # CA certificate request  [ req ]  defaul...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;rootca.conf&lt;br /&gt;
 [ default ]&lt;br /&gt;
 ca                      = Frotmail.nl-ClientSSL # CA name&lt;br /&gt;
 dir                     = .                     # Top dir&lt;br /&gt;
 base_url                = http://ssl.frotmail.nl   # CA base URL&lt;br /&gt;
 aia_url                 = $base_url/$ca.cer     # CA certificate URL&lt;br /&gt;
 crl_url                 = $base_url/$ca.crl     # CRL distribution point&lt;br /&gt;
 name_opt                = multiline,-esc_msb,utf8 # Display UTF-8 characters&lt;br /&gt;
 &lt;br /&gt;
 # CA certificate request&lt;br /&gt;
 [ req ]&lt;br /&gt;
 default_bits            = 2048                  # RSA key size&lt;br /&gt;
 encrypt_key             = no                   # Protect private key&lt;br /&gt;
 default_md              = sha256                # MD to use&lt;br /&gt;
 utf8                    = yes                   # Input is UTF-8&lt;br /&gt;
 string_mask             = utf8only              # Emit UTF-8 strings&lt;br /&gt;
 prompt                  = no                    # Don&amp;#039;t prompt for DN&lt;br /&gt;
 distinguished_name      = ca_dn                 # DN section&lt;br /&gt;
 req_extensions          = ca_reqext             # Desired extensions&lt;br /&gt;
 &lt;br /&gt;
 [ ca_dn ]&lt;br /&gt;
 countryName             = &amp;quot;NL&amp;quot;&lt;br /&gt;
 organizationName        = &amp;quot;Frotmail.nl&amp;quot;&lt;br /&gt;
 organizationalUnitName  = &amp;quot;ClientSSL&amp;quot;&lt;br /&gt;
 commonName              = &amp;quot;clients.frotmail.nl&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 [ ca_reqext ]&lt;br /&gt;
 keyUsage                = critical,keyCertSign,cRLSign&lt;br /&gt;
 basicConstraints        = critical,CA:true&lt;br /&gt;
 subjectKeyIdentifier    = hash&lt;br /&gt;
 &lt;br /&gt;
 # CA operational settings&lt;br /&gt;
 [ ca ]&lt;br /&gt;
 default_ca              = root_ca               # The default CA section&lt;br /&gt;
 &lt;br /&gt;
 [ root_ca ]&lt;br /&gt;
 certificate             = $dir/$ca.crt          # The CA cert&lt;br /&gt;
 private_key             = $dir/$ca.key          # CA private key&lt;br /&gt;
 new_certs_dir           = $dir/newcerts         # Certificate archive&lt;br /&gt;
 serial                  = $dir/$ca.crt.srl      # Serial number file&lt;br /&gt;
 crlnumber               = $dir/$ca.crl.srl      # CRL number file&lt;br /&gt;
 database                = $dir/$ca.db           # Index file&lt;br /&gt;
 unique_subject          = no                    # Require unique subject&lt;br /&gt;
 default_days            = 3652                  # How long to certify for&lt;br /&gt;
 default_md              = sha256                  # MD to use&lt;br /&gt;
 policy                  = match_pol             # Default naming policy&lt;br /&gt;
 email_in_dn             = no                    # Add email to cert DN&lt;br /&gt;
 preserve                = no                    # Keep passed DN ordering&lt;br /&gt;
 name_opt                = $name_opt             # Subject DN display options&lt;br /&gt;
 cert_opt                = ca_default            # Certificate display options&lt;br /&gt;
 copy_extensions         = none                  # Copy extensions from CSR&lt;br /&gt;
 x509_extensions         = ca_ext                # Default cert extensions&lt;br /&gt;
 default_crl_days        = 365                   # How long before next CRL&lt;br /&gt;
 crl_extensions          = crl_ext               # CRL extensions&lt;br /&gt;
 &lt;br /&gt;
 [ match_pol ]&lt;br /&gt;
 countryName             = match                 # Must match &amp;#039;NO&amp;#039;&lt;br /&gt;
 stateOrProvinceName     = optional              # Included if present&lt;br /&gt;
 localityName            = optional              # Included if present&lt;br /&gt;
 organizationName        = match                 # Must match &amp;#039;Green AS&amp;#039;&lt;br /&gt;
 organizationalUnitName  = optional              # Included if present&lt;br /&gt;
 commonName              = supplied              # Must be present&lt;br /&gt;
 &lt;br /&gt;
 [ any_pol ]&lt;br /&gt;
 domainComponent         = optional&lt;br /&gt;
 countryName             = optional&lt;br /&gt;
 stateOrProvinceName     = optional&lt;br /&gt;
 localityName            = optional&lt;br /&gt;
 organizationName        = optional&lt;br /&gt;
 organizationalUnitName  = optional&lt;br /&gt;
 commonName              = optional&lt;br /&gt;
 emailAddress            = optional&lt;br /&gt;
 &lt;br /&gt;
 # Extensions&lt;br /&gt;
 [ ca_ext ]&lt;br /&gt;
 keyUsage                = critical,keyCertSign,cRLSign&lt;br /&gt;
 basicConstraints        = critical,CA:true,pathlen:0&lt;br /&gt;
 subjectKeyIdentifier    = hash&lt;br /&gt;
 authorityKeyIdentifier  = keyid:always&lt;br /&gt;
 authorityInfoAccess     = @issuer_info&lt;br /&gt;
 crlDistributionPoints   = @crl_info&lt;br /&gt;
 &lt;br /&gt;
 [ client_ext ]&lt;br /&gt;
 keyUsage                = critical,digitalSignature&lt;br /&gt;
 basicConstraints        = CA:false&lt;br /&gt;
 extendedKeyUsage        = clientAuth&lt;br /&gt;
 subjectKeyIdentifier    = hash&lt;br /&gt;
 authorityKeyIdentifier  = keyid:always&lt;br /&gt;
 authorityInfoAccess     = @issuer_info&lt;br /&gt;
 crlDistributionPoints   = @crl_info&lt;br /&gt;
 &lt;br /&gt;
 [ crl_ext ]&lt;br /&gt;
 authorityKeyIdentifier  = keyid:always&lt;br /&gt;
 authorityInfoAccess     = @issuer_info&lt;br /&gt;
 &lt;br /&gt;
 [ issuer_info ]&lt;br /&gt;
 caIssuers;URI.0         = $aia_url&lt;br /&gt;
 &lt;br /&gt;
 [ crl_info ]&lt;br /&gt;
 URI.0                   = $crl_url&lt;br /&gt;
&lt;br /&gt;
client.conf&lt;br /&gt;
 # TLS client certificate request&lt;br /&gt;
 &lt;br /&gt;
 [ req ]&lt;br /&gt;
 default_bits            = 2048                  # RSA key size&lt;br /&gt;
 #encrypt_key             = yes                   # Protect private key&lt;br /&gt;
 default_md              = sha1                  # MD to use&lt;br /&gt;
 utf8                    = yes                   # Input is UTF-8&lt;br /&gt;
 string_mask             = utf8only              # Emit UTF-8 strings&lt;br /&gt;
 prompt                  = yes                   # Prompt for DN&lt;br /&gt;
 distinguished_name      = client_dn             # DN template&lt;br /&gt;
 req_extensions          = client_reqext         # Desired extensions&lt;br /&gt;
 &lt;br /&gt;
 [ client_dn ]&lt;br /&gt;
 countryName             = &amp;quot;1. Country Name (2 letters)     &amp;quot;&lt;br /&gt;
 countryName_max         = 2&lt;br /&gt;
 countryName_default     = NL&lt;br /&gt;
 stateOrProvinceName     = &amp;quot;2. State or Province Name       &amp;quot;&lt;br /&gt;
 stateOrProvinceName_default = Oirschot&lt;br /&gt;
 localityName            = &amp;quot;3. Locality Name                &amp;quot;&lt;br /&gt;
 organizationName        = &amp;quot;4. Organization Name            &amp;quot;&lt;br /&gt;
 organizationName_default= Frotmail.nl&lt;br /&gt;
 organizationalUnitName  = &amp;quot;5. Organizational Unit Name     &amp;quot;&lt;br /&gt;
 organizationalUnitName_default = ClientSSL&lt;br /&gt;
 commonName              = &amp;quot;6. Common Name (Username)       &amp;quot;&lt;br /&gt;
 commonName_max          = 64&lt;br /&gt;
 #emailAddress            = &amp;quot;7. Email Address             (eg, name@fqdn)&amp;quot;&lt;br /&gt;
 #emailAddress_max        = 40&lt;br /&gt;
 &lt;br /&gt;
 [ client_reqext ]&lt;br /&gt;
 keyUsage                = critical,digitalSignature&lt;br /&gt;
 extendedKeyUsage        = clientAuth&lt;br /&gt;
 subjectKeyIdentifier    = hash&lt;br /&gt;
&lt;br /&gt;
=Commands=&lt;br /&gt;
Create directories&lt;br /&gt;
 mkdir -p newcerts&lt;br /&gt;
&lt;br /&gt;
Create database&lt;br /&gt;
 touch $ca.db&lt;br /&gt;
 touch $ca.db.attr&lt;br /&gt;
 echo 01 &amp;gt; $ca.crt.srl&lt;br /&gt;
 echo 01 &amp;gt; $ca.crl.srl&lt;br /&gt;
&lt;br /&gt;
Create CA request&lt;br /&gt;
 openssl req -new \&lt;br /&gt;
 -config rootca.conf \&lt;br /&gt;
 -out $ca.csr \&lt;br /&gt;
 -keyout $ca.key&lt;br /&gt;
We create a private key and a CSR for the TLS CA. The configuration is taken from the [req] section of the TLS CA&lt;br /&gt;
configuration file.&lt;br /&gt;
&lt;br /&gt;
Create CA certificate&lt;br /&gt;
 openssl ca -selfsign \&lt;br /&gt;
 -config rootca.conf \&lt;br /&gt;
 -in $ca.csr \&lt;br /&gt;
 -out $ca.crt \&lt;br /&gt;
 -extensions signing_ca_ext&lt;br /&gt;
We use the root CA to issue the TLS CA certificate.&lt;br /&gt;
&lt;br /&gt;
Create initial CRL&lt;br /&gt;
 openssl ca -gencrl \&lt;br /&gt;
 -config ca.conf \&lt;br /&gt;
 -out $ca.crl&lt;br /&gt;
We create an empty CRL.&lt;br /&gt;
&lt;br /&gt;
=client=&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 if [ -z &amp;quot;$1&amp;quot; ]&lt;br /&gt;
 then&lt;br /&gt;
   echo &amp;quot;Usage: $0 [username]&amp;quot;&lt;br /&gt;
 else&lt;br /&gt;
   rm $1.*&lt;br /&gt;
   openssl genrsa -out $1.key 2048&lt;br /&gt;
   openssl req -new -config client.conf -out $1.csr -key $1.key&lt;br /&gt;
   openssl ca -config rootca.conf -in $1.csr -out $1.crt -extensions client_ext&lt;br /&gt;
   openssl pkcs12 -export -inkey $1.key -in $1.crt -out $1.pfx&lt;br /&gt;
   rm $1.csr&lt;br /&gt;
   rm $1.key&lt;br /&gt;
   rm $1.crt&lt;br /&gt;
 fi&lt;/div&gt;</summary>
		<author><name>Eric</name></author>
	</entry>
</feed>