@ -16,6 +16,7 @@
# export PANOS_TEMPLATE="" # Template Name of panorama managed devices
# export PANOS_TEMPLATE_STACK="" # set a Template Stack if certificate should also be pushed automatically
# export PANOS_VSYS="Shared" # name of the vsys to import the certificate
# export PANOS_CERTNAME="" # use a custom certificate name to work around Panorama's 31-character limit
#
# The script will automatically generate a new API key if
# no key is found, or if a saved key has expired or is invalid.
@ -89,7 +90,7 @@ deployer() {
if [ " $type " = 'cert' ] ; then
panos_url = " ${ panos_url } ?type=import "
content = " -- $delim ${ nl } Content-Disposition: form-data; name=\"category\"\r\n\r\ncertificate "
content = " $content ${ nl } -- $delim ${ nl } Content-Disposition: form-data; name=\"certificate-name\"\r\n\r\n $_cdomain "
content = " $content ${ nl } -- $delim ${ nl } Content-Disposition: form-data; name=\"certificate-name\"\r\n\r\n $_panos_certname "
content = " $content ${ nl } -- $delim ${ nl } Content-Disposition: form-data; name=\"key\"\r\n\r\n $_panos_key "
content = " $content ${ nl } -- $delim ${ nl } Content-Disposition: form-data; name=\"format\"\r\n\r\npem "
content = " $content ${ nl } -- $delim ${ nl } Content-Disposition: form-data; name=\"file\"; filename=\" $( basename " $_cfullchain " ) \" ${ nl } Content-Type: application/octet-stream ${ nl } ${ nl } $( cat " $_cfullchain " ) "
@ -103,11 +104,11 @@ deployer() {
if [ " $type " = 'key' ] ; then
panos_url = " ${ panos_url } ?type=import "
content = " -- $delim ${ nl } Content-Disposition: form-data; name=\"category\"\r\n\r\nprivate-key "
content = " $content ${ nl } -- $delim ${ nl } Content-Disposition: form-data; name=\"certificate-name\"\r\n\r\n $_cdomain "
content = " $content ${ nl } -- $delim ${ nl } Content-Disposition: form-data; name=\"certificate-name\"\r\n\r\n $_panos_certname "
content = " $content ${ nl } -- $delim ${ nl } Content-Disposition: form-data; name=\"key\"\r\n\r\n $_panos_key "
content = " $content ${ nl } -- $delim ${ nl } Content-Disposition: form-data; name=\"format\"\r\n\r\npem "
content = " $content ${ nl } -- $delim ${ nl } Content-Disposition: form-data; name=\"passphrase\"\r\n\r\n123456 "
content = " $content ${ nl } -- $delim ${ nl } Content-Disposition: form-data; name=\"file\"; filename=\" $( basename " $_cdomain .key " ) \" ${ nl } Content-Type: application/octet-stream ${ nl } ${ nl } $( cat " $_ckey " ) "
content = " $content ${ nl } -- $delim ${ nl } Content-Disposition: form-data; name=\"file\"; filename=\" $( basename " $_panos_certname .key " ) \" ${ nl } Content-Type: application/octet-stream ${ nl } ${ nl } $( cat " $_ckey " ) "
if [ " $_panos_template " ] ; then
content = " $content ${ nl } -- $delim ${ nl } Content-Disposition: form-data; name=\"target-tpl\"\r\n\r\n $_panos_template "
fi
@ -242,6 +243,15 @@ panos_deploy() {
_getdeployconf PANOS_VSYS
fi
# PANOS_CERTNAME
if [ " $PANOS_CERTNAME " ] ; then
_debug "Detected ENV variable PANOS_CERTNAME. Saving to file."
_savedeployconf PANOS_CERTNAME " $PANOS_CERTNAME " 1
else
_debug "Attempting to load variable PANOS_CERTNAME from file."
_getdeployconf PANOS_CERTNAME
fi
#Store variables
_panos_host = $PANOS_HOST
_panos_user = $PANOS_USER
@ -249,6 +259,7 @@ panos_deploy() {
_panos_template = $PANOS_TEMPLATE
_panos_template_stack = $PANOS_TEMPLATE_STACK
_panos_vsys = $PANOS_VSYS
_panos_certname = $PANOS_CERTNAME
#Test API Key if found. If the key is invalid, the variable _panos_key will be unset.
if [ " $_panos_host " ] && [ " $_panos_key " ] ; then
@ -267,6 +278,12 @@ panos_deploy() {
_err "No password found. If this is your first time deploying, please set PANOS_PASS in ENV variables. You can delete it after you have successfully deployed the certs."
return 1
else
# Use certificate name based on the first domain on the certificate if no custom certificate name is set
if [ -z " $_panos_certname " ] ; then
_panos_certname = " $_cdomain "
_savedeployconf PANOS_CERTNAME " $_panos_certname " 1
fi
# Generate a new API key if no valid API key is found
if [ -z " $_panos_key " ] ; then
_debug "**** Generating new PANOS API KEY ****"