generate-self-signed-cert
Ansible Role: Generate Self Signed Certificate
This role help generate self signed certificate. It will create following combinations:
Case 1:
- ROOT CA
- Intermediate CA
- Server Cert (with SAN/without SAN)
Case 2:
- Root CA
- Server Cert (with SAN/without SAN)
Requirements
yum
Role Variables
Name | Default value | Requird | Description |
---|---|---|---|
cert_base_dir | /root/cert_base | no | Default Cert Base Directory |
root_cert_bit | 4096 | no | Default Root Cert Bit Size |
intermediate_cert_bit | 4096 | no | Default Intermediate Cert Bit Size |
server_cert_bit | 2048 | no | Default Server Cert Bit Size |
serial_number | 1000 | no | Cert Common Info - Serial Number |
countryName | CA | no | Cert Common Info - Country Name |
stateOrProvinceName | ON | no | Cert Common Info - Province Name |
localityName | MILTON | no | Cert Common Info - Locality Name |
organizationName | RED HAT | no | Cert Common Info - Org Name |
organizationalUnitName | SCE | no | Cert Common Info - Org Unit Name |
emailAddress | test@test.com | no | Cert Common Info - Email Address |
root_commonName | Root CA | no | Root Cert Info - Root CN |
intermediate_commonName | Intermediate CA | no | Intermediate Cert Info - Intermediate CN |
cert_commonName | lb.example.com | no | Server Cert Info - Server Cert CN |
use_intermediate_cert | yes | no | If no, it does not issue intermediate cert |
use_san | yes | no | If yes, SAN info will be added with CN name |
san_dns | no | Add several SAN DNS List | |
san_ip | no | Add several SAN IP List | |
overwrite_server_cert | yes | no | Delete server cert directory that is based on CN name |
clean_all | no | no | Recreate all certs |
Dependencies
None
Example Playbook
- name: Example Playbook
hosts: localhost
gather_facts: false
roles:
- { role: Jooho.generate-self-signed-cert }
Example Vars
Wildcard Certificate:
cert_commonName: *.cloudapps.example.com
SAN DNS LIST:
san_dns:
- { index: 1, dns: lb.example.com}
- { index: 2, dns: master-cluster.example.com}
SAN IP LIST:
san_ip:
- { index: 1, ip: 192.168.200.205}
NOTE
The private key & certificate permission should be 400/444 but this ansible role use 777/777 because these files will be copied to somewhere. After you copy them, it is recommended to change permissions.
Useful Commands
openssl x509 -in {{cert_base_dir}/{{server_cert_commomName}}/{{server_cert_commonName}.cert.pem -text
openssl x509 -in /root/cert_base/lb.example.com/lb.example.com.cert.pem -text
Reference Doc
License
BSD/MIT
Author Information
This role was created in 2017 by Jooho Lee.