<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://tech.uvoo.io/index.php?action=history&amp;feed=atom&amp;title=Openssl_ca_using_config_file</id>
	<title>Openssl ca using config file - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://tech.uvoo.io/index.php?action=history&amp;feed=atom&amp;title=Openssl_ca_using_config_file"/>
	<link rel="alternate" type="text/html" href="https://tech.uvoo.io/index.php?title=Openssl_ca_using_config_file&amp;action=history"/>
	<updated>2026-04-24T17:47:30Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.35.2</generator>
	<entry>
		<id>https://tech.uvoo.io/index.php?title=Openssl_ca_using_config_file&amp;diff=5264&amp;oldid=prev</id>
		<title>Busk: Busk moved page Openssl ca 2 to Openssl ca using config file without leaving a redirect
</title>
		<link rel="alternate" type="text/html" href="https://tech.uvoo.io/index.php?title=Openssl_ca_using_config_file&amp;diff=5264&amp;oldid=prev"/>
		<updated>2024-05-21T14:16:10Z</updated>

		<summary type="html">&lt;p&gt;Busk moved page &lt;a href=&quot;/index.php?title=Openssl_ca_2&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Openssl ca 2 (page does not exist)&quot;&gt;Openssl ca 2&lt;/a&gt; to &lt;a href=&quot;/index.php/Openssl_ca_using_config_file&quot; title=&quot;Openssl ca using config file&quot;&gt;Openssl ca using config file&lt;/a&gt; without leaving a redirect &lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left diff-editfont-monospace&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 14:16, 21 May 2024&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;en&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(No difference)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Busk</name></author>
	</entry>
	<entry>
		<id>https://tech.uvoo.io/index.php?title=Openssl_ca_using_config_file&amp;diff=5263&amp;oldid=prev</id>
		<title>Busk: Created page with &quot;# Openssl ca with config file  ## .env.secret ``` set -a ROOTCA1_PWD=ChangeMe ICA1a_PWD=ChangeThis ```  ## source ``` . .env.secret ```  ## init.sh.tpl ``` #!/bin/bash set -eu...&quot;</title>
		<link rel="alternate" type="text/html" href="https://tech.uvoo.io/index.php?title=Openssl_ca_using_config_file&amp;diff=5263&amp;oldid=prev"/>
		<updated>2024-05-21T14:15:49Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;# Openssl ca with config file  ## .env.secret ``` set -a ROOTCA1_PWD=ChangeMe ICA1a_PWD=ChangeThis ```  ## source ``` . .env.secret ```  ## init.sh.tpl ``` #!/bin/bash set -eu...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;# Openssl ca with config file&lt;br /&gt;
&lt;br /&gt;
## .env.secret&lt;br /&gt;
```&lt;br /&gt;
set -a&lt;br /&gt;
ROOTCA1_PWD=ChangeMe&lt;br /&gt;
ICA1a_PWD=ChangeThis&lt;br /&gt;
```&lt;br /&gt;
&lt;br /&gt;
## source&lt;br /&gt;
```&lt;br /&gt;
. .env.secret&lt;br /&gt;
```&lt;br /&gt;
&lt;br /&gt;
## init.sh.tpl&lt;br /&gt;
```&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
set -eu&lt;br /&gt;
# . .env.secrets&lt;br /&gt;
&lt;br /&gt;
cd ${PWD}&lt;br /&gt;
openssl rand -writerand .rnd&lt;br /&gt;
OPENSSL_CA_DIR=&amp;quot;openssl_ca&amp;quot;&lt;br /&gt;
mkdir -p ${OPENSSL_CA_DIR}&lt;br /&gt;
mkdir -p ${OPENSSL_CA_DIR}/certs&lt;br /&gt;
mkdir -p ${OPENSSL_CA_DIR}/crl&lt;br /&gt;
mkdir -p ${OPENSSL_CA_DIR}/private&lt;br /&gt;
if [ ! -e ${OPENSSL_CA_DIR}/serial ]; then&lt;br /&gt;
  echo 0100 &amp;gt; ${OPENSSL_CA_DIR}/serial&lt;br /&gt;
fi&lt;br /&gt;
if [ ! -e ${OPENSSL_CA_DIR}/index ]; then&lt;br /&gt;
  touch ${OPENSSL_CA_DIR}/index&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
# cat &amp;lt;&amp;lt; 'EOF' &amp;gt; ${OPENSSL_CA_DIR}/openssl.cnf&lt;br /&gt;
# cat &amp;lt;&amp;lt; 'EOF' &amp;gt; /home/busk/openssl_ca/openssl.cnf&lt;br /&gt;
cat &amp;lt;&amp;lt; 'EOF' &amp;gt; ./openssl_ca/openssl.cnf&lt;br /&gt;
HOME                      = .&lt;br /&gt;
RANDFILE                  = $ENV::HOME/.rnd&lt;br /&gt;
&lt;br /&gt;
[ ca ]&lt;br /&gt;
default_ca                = CA_default&lt;br /&gt;
&lt;br /&gt;
[ CA_default ]&lt;br /&gt;
# dir                       = /opt/openssl_ca&lt;br /&gt;
dir                       = /home/busk/sandbox/ca/openssl_ca&lt;br /&gt;
crl_dir                   = $dir/crl&lt;br /&gt;
database                  = $dir/index&lt;br /&gt;
new_certs_dir             = $dir/certs&lt;br /&gt;
serial                    = $dir/serial&lt;br /&gt;
# certificate               = $dir/issuer.crt&lt;br /&gt;
certificate               = $dir/RootCA1.crt&lt;br /&gt;
private_key               = $dir/RootCA1.key&lt;br /&gt;
# certificate               = $dir/ICA1a.crt&lt;br /&gt;
# private_key               = $dir/ICA1a.key&lt;br /&gt;
# private_key               = $dir/private/issuer.key&lt;br /&gt;
# private_key               = $dir/private/ICA1a.key&lt;br /&gt;
policy                    = policy_match&lt;br /&gt;
default_days              = 365           # 1 year&lt;br /&gt;
default_crl_days          = 7             # 7 days&lt;br /&gt;
default_md                = sha1&lt;br /&gt;
default_bits              = 2048&lt;br /&gt;
preserve                  = no&lt;br /&gt;
unique_subject            = no&lt;br /&gt;
x509_extensions           = v3_req&lt;br /&gt;
copy_extensions           = copy          # to enable SubjectAltName&lt;br /&gt;
&lt;br /&gt;
[ policy_match ]&lt;br /&gt;
countryName               = optional&lt;br /&gt;
stateOrProvinceName       = optional&lt;br /&gt;
localityName              = optional&lt;br /&gt;
organizationName          = supplied&lt;br /&gt;
organizationalUnitName    = optional&lt;br /&gt;
commonName                = optional&lt;br /&gt;
&lt;br /&gt;
[ req ]&lt;br /&gt;
distinguished_name        = req_distinguished_name&lt;br /&gt;
&lt;br /&gt;
[ req_distinguished_name ]&lt;br /&gt;
countryName               = Country (2 letter code)&lt;br /&gt;
countryName_min           = 2&lt;br /&gt;
countryName_max           = 2&lt;br /&gt;
stateOrProvinceName       = State or Province (spelled out)&lt;br /&gt;
localityName              = City or Locality&lt;br /&gt;
organizationName          = Organization&lt;br /&gt;
organizationalUnitName    = Organizational Unit&lt;br /&gt;
commonName                = Common Name (FQDN)&lt;br /&gt;
commonName_max            = 64&lt;br /&gt;
&lt;br /&gt;
[ v3_req ]&lt;br /&gt;
basicConstraints          = CA:FALSE&lt;br /&gt;
subjectKeyIdentifier      = hash&lt;br /&gt;
authorityKeyIdentifier    = keyid,issuer&lt;br /&gt;
keyUsage                  = digitalSignature,keyEncipherment&lt;br /&gt;
extendedKeyUsage          = serverAuth,clientAuth&lt;br /&gt;
crlDistributionPoints     = URI:http://pki.foo.example/issuer.crl&lt;br /&gt;
&lt;br /&gt;
[ v3_ca ]&lt;br /&gt;
basicConstraints          = CA:TRUE&lt;br /&gt;
subjectKeyIdentifier      = hash&lt;br /&gt;
authorityKeyIdentifier    = keyid:always,issuer:always&lt;br /&gt;
keyUsage                  = cRLSign,keyCertSign&lt;br /&gt;
&lt;br /&gt;
[ v3_intermediate_ca ]&lt;br /&gt;
basicConstraints          = CA:TRUE&lt;br /&gt;
subjectKeyIdentifier      = hash&lt;br /&gt;
authorityKeyIdentifier    = keyid:always,issuer:always&lt;br /&gt;
keyUsage                  = cRLSign,keyCertSign&lt;br /&gt;
EOF&lt;br /&gt;
&lt;br /&gt;
cd ${OPENSSL_CA_DIR}&lt;br /&gt;
&lt;br /&gt;
# RootCA1&lt;br /&gt;
openssl genrsa -passout env:ROOTCA1_PWD -aes256 -out RootCA1.key 4096&lt;br /&gt;
openssl req -passin env:ROOTCA1_PWD -config openssl.cnf \&lt;br /&gt;
            -extensions v3_ca \&lt;br /&gt;
            -key RootCA1.key \&lt;br /&gt;
            -new -x509 -days 3653 -sha256 -extensions v3_ca \&lt;br /&gt;
            -out RootCA1.crt -subj &amp;quot;/C=US/ST=Utah/L=SLC/O=ExampleCorp/OU=Testing/CN=RootCA1&amp;quot;&lt;br /&gt;
openssl x509 -noout -text -in RootCA1.crt&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# IntermediateCA ICA1a&lt;br /&gt;
openssl genrsa -passout env:ICA1a_PWD -aes256 -out ICA1a.key 4096&lt;br /&gt;
openssl req -passin env:ICA1a_PWD -config openssl.cnf \&lt;br /&gt;
            -new -sha256 \&lt;br /&gt;
            -key ICA1a.key \&lt;br /&gt;
            -out ICA1a.csr -subj &amp;quot;/C=US/ST=Utah/L=SLC/O=ExampleCorp/OU=Testing/CN=ICA1a&amp;quot;&lt;br /&gt;
yes | openssl ca -passin env:ROOTCA1_PWD -config openssl.cnf \&lt;br /&gt;
           -extensions v3_intermediate_ca \&lt;br /&gt;
           -days 1826 -notext -md sha256 \&lt;br /&gt;
           -in ICA1a.csr \&lt;br /&gt;
           -out ICA1a.crt&lt;br /&gt;
openssl x509 -text -in ICA1a.crt&lt;br /&gt;
openssl x509 -text -in certs/0100.pem&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Completed successfully!&amp;quot;&lt;br /&gt;
cd ../&lt;br /&gt;
```&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
## main.sh&lt;br /&gt;
```&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
set -aeu&lt;br /&gt;
. .env.secrets&lt;br /&gt;
export START_DIR=$(pwd)&lt;br /&gt;
envtpl --keep-template init.sh.tpl&lt;br /&gt;
bash -eu init.sh&lt;br /&gt;
```&lt;br /&gt;
&lt;br /&gt;
## run main.sh&lt;br /&gt;
```&lt;br /&gt;
./main.sh&lt;br /&gt;
```&lt;/div&gt;</summary>
		<author><name>Busk</name></author>
	</entry>
</feed>