@ -20,10 +20,10 @@ author: "Yanis Guenane (@Spredzy)"
version_added : " 2.4 "
short_description : Generate OpenSSL Certificate Signing Request ( CSR )
description :
- " This module allows one to (re)generate s OpenSSL certificate signing requests.
- " This module allows one to (re)generate OpenSSL certificate signing requests.
It uses the pyOpenSSL python library to interact with openssl . This module supports
the subjectAltName as well as the keyUsage and extendedKeyUsage extensions .
Note : At least one of common Name or subjectAltN ame must be specified .
Note : At least one of common _name or subject_alt_n ame must be specified .
This module uses file common arguments to specify generated file permissions . "
requirements :
- " python-pyOpenSSL "
@ -47,7 +47,6 @@ options:
required : false
description :
- The passphrase for the privatekey .
version_added : " 2.4 "
version :
required : false
default : 3
@ -63,70 +62,74 @@ options:
required : true
description :
- Name of the folder in which the generated OpenSSL certificate signing request will be written
country N ame:
country _n ame:
required : false
aliases : [ ' C ' ]
aliases : [ ' C ' , ' countryName ' ]
description :
- countryName field of the certificate signing request subject
state OrProvinceN ame:
state _or_province_n ame:
required : false
aliases : [ ' ST ' ]
aliases : [ ' ST ' , ' stateOrProvinceName ' ]
description :
- stateOrProvinceName field of the certificate signing request subject
locality N ame:
locality _n ame:
required : false
aliases : [ ' L ' ]
aliases : [ ' L ' , ' localityName ' ]
description :
- localityName field of the certificate signing request subject
organization N ame:
organization _n ame:
required : false
aliases : [ ' O ' ]
aliases : [ ' O ' , ' organizationName ' ]
description :
- organizationName field of the certificate signing request subject
organizational UnitN ame:
organizational _unit_n ame:
required : false
aliases : [ ' OU ' ]
aliases : [ ' OU ' , ' organizationalUnitName ' ]
description :
- organizationalUnitName field of the certificate signing request subject
common N ame:
common _n ame:
required : false
aliases : [ ' CN ' ]
aliases : [ ' CN ' , ' commonName ' ]
description :
- commonName field of the certificate signing request subject
email A ddress:
email _a ddress:
required : false
aliases : [ ' E ' ]
aliases : [ ' E ' , ' emailAddress ' ]
description :
- emailAddress field of the certificate signing request subject
subject AltN ame:
subject _alt_n ame:
required : false
aliases : [ ' subjectAltName ' ]
description :
- SAN extension to attach to the certificate signing request
- This can either be a ' comma separated string ' or a YAML list .
subject AltN ame_critical:
subject _alt_n ame_critical:
required : false
aliases : [ ' subjectAltName_critical ' ]
description :
- Should the subjectAltName extension be considered as critical
key U sage:
key _u sage:
required : false
aliases : [ ' keyUsage ' ]
description :
- This defines the purpose ( e . g . encipherment , signature , certificate signing )
of the key contained in the certificate .
- This can either be a ' comma separated string ' or a YAML list .
key U sage_critical:
key _u sage_critical:
required : false
aliases : [ ' keyUsage_critical ' ]
description :
- Should the keyUsage extension be considered as critical
extended KeyU sage:
extended _key_u sage:
required : false
aliases : [ ' extKeyUsage ' ]
aliases : [ ' extKeyUsage ' , ' extendedKeyUsage ' ]
description :
- Additional restrictions ( e . g . client authentication , server authentication )
on the allowed purposes for which the public key may be used .
- This can either be a ' comma separated string ' or a YAML list .
extended KeyU sage_critical:
extended _key_u sage_critical:
required : false
aliases : [ ' extKeyUsage_critical ' ]
aliases : [ ' extKeyUsage_critical ' , ' extendedKeyUsage_critical ' ]
description :
- Should the extkeyUsage extension be considered as critical
@ -142,7 +145,7 @@ EXAMPLES = '''
- openssl_csr :
path : / etc / ssl / csr / www . ansible . com . csr
privatekey_path : / etc / ssl / private / ansible . com . pem
common N ame: www . ansible . com
common _n ame: www . ansible . com
# Generate an OpenSSL Certificate Signing Request with a
# passphrase protected private key
@ -150,39 +153,39 @@ EXAMPLES = '''
path : / etc / ssl / csr / www . ansible . com . csr
privatekey_path : / etc / ssl / private / ansible . com . pem
privatekey_passphrase : ansible
common N ame: www . ansible . com
common _n ame: www . ansible . com
# Generate an OpenSSL Certificate Signing Request with Subject information
- openssl_csr :
path : / etc / ssl / csr / www . ansible . com . csr
privatekey_path : / etc / ssl / private / ansible . com . pem
country N ame: FR
organization N ame: Ansible
email A ddress: jdoe @ansible.com
common N ame: www . ansible . com
country _n ame: FR
organization _n ame: Ansible
email _a ddress: jdoe @ansible.com
common _n ame: www . ansible . com
# Generate an OpenSSL Certificate Signing Request with subjectAltName extension
- openssl_csr :
path : / etc / ssl / csr / www . ansible . com . csr
privatekey_path : / etc / ssl / private / ansible . com . pem
subject AltN ame: ' DNS:www.ansible.com,DNS:m.ansible.com '
subject _alt_n ame: ' DNS:www.ansible.com,DNS:m.ansible.com '
# Force re-generate an OpenSSL Certificate Signing Request
- openssl_csr :
path : / etc / ssl / csr / www . ansible . com . csr
privatekey_path : / etc / ssl / private / ansible . com . pem
force : True
common N ame: www . ansible . com
common _n ame: www . ansible . com
# Generate an OpenSSL Certificate Signing Request with special key usages
- openssl_csr :
path : / etc / ssl / csr / www . ansible . com . csr
privatekey_path : / etc / ssl / private / ansible . com . pem
common N ame: www . ansible . com
key U sage:
common _n ame: www . ansible . com
key _u sage:
- digitlaSignature
- keyAgreement
ext KeyU sage:
ext ended_key_u sage:
- clientAuth
'''
@ -405,19 +408,19 @@ def main():
version = dict ( default = ' 3 ' , type = ' int ' ) ,
force = dict ( default = False , type = ' bool ' ) ,
path = dict ( required = True , type = ' path ' ) ,
countryName = dict ( aliases = [ ' C ' ], type = ' str ' ) ,
stateOrProvinceName = dict ( aliases = [ ' ST ' ], type = ' str ' ) ,
localityName = dict ( aliases = [ ' L ' ], type = ' str ' ) ,
organizationName = dict ( aliases = [ ' O ' ], type = ' str ' ) ,
organizationalUnitName = dict ( aliases = [ ' OU ' ], type = ' str ' ) ,
commonName = dict ( aliases = [ ' CN ' ], type = ' str ' ) ,
emailAddress = dict ( aliases = [ ' E ' ], type = ' str ' ) ,
subjectAltName = dict ( type = ' list ' ) ,
subjectAltName_critical = dict ( default= False , type = ' bool ' ) ,
keyUsage = dict ( type = ' list ' ) ,
keyUsage_critical = dict ( default= False , type = ' bool ' ) ,
extendedKeyUsage = dict ( aliases = [ ' extKeyUsage ' ], type = ' list ' ) ,
extendedKeyUsage_critical = dict ( default= False , aliases= [ ' extKeyUsage_critical ' ], type = ' bool ' ) ,
countryName = dict ( aliases = [ ' C ' , ' country_name ' ], type = ' str ' ) ,
stateOrProvinceName = dict ( aliases = [ ' ST ' , ' state_or_province_name ' ], type = ' str ' ) ,
localityName = dict ( aliases = [ ' L ' , ' locality_name ' ], type = ' str ' ) ,
organizationName = dict ( aliases = [ ' O ' , ' organization_name ' ], type = ' str ' ) ,
organizationalUnitName = dict ( aliases = [ ' OU ' , ' organizational_unit_name ' ], type = ' str ' ) ,
commonName = dict ( aliases = [ ' CN ' , ' common_name ' ], type = ' str ' ) ,
emailAddress = dict ( aliases = [ ' E ' , ' email_address ' ], type = ' str ' ) ,
subjectAltName = dict ( aliases = [ ' subject_alt_name ' ] , type = ' list ' ) ,
subjectAltName_critical = dict ( aliases= [ ' subject_alt_name_critical ' ] , default= False , type = ' bool ' ) ,
keyUsage = dict ( aliases = [ ' key_usage ' ] , type = ' list ' ) ,
keyUsage_critical = dict ( aliases= [ ' key_usage_critical ' ] , default= False , type = ' bool ' ) ,
extendedKeyUsage = dict ( aliases = [ ' extKeyUsage ' , ' extended_key_usage ' ], type = ' list ' ) ,
extendedKeyUsage_critical = dict ( aliases= [ ' extKeyUsage_critical ' , ' extended_key_usage_critical ' ], default = False , type = ' bool ' ) ,
) ,
add_file_common_args = True ,
supports_check_mode = True ,