Ubiquiti removed keytool (and java) from recent releases of Unifi OS. This moves from keytool to openssl's native pkcs12.
Tested on Unifi Dream Machine which runs Unifi OS and a built-in Unifi controller.
Also added backup of existing files prior to change in case anything goes wrong, and update system configuration with compatible ciphers.
In the case where importing the cert and key removes the files from disk
the existing deploy will fail when it tries to remove those files. This
still attempts to remove the files but catches the error and moves on instead
of bombing like before.
Similarly, if the deploy had failed before, subsequent deploys would fail
because the script already existed, so it would not be able to create
the script. This first attempts to remove the script if it exists, and then
creates the script.
it is related to this bug report: opnsense/plugins#3525
FreeBSD's sed doesn't have the -z option, so empty certificates are delivered to vault when running the script on FreeBSD.
By default acme.sh uses the '*' character in the filename for wildcard.
That can be confusing within HAProxy since the * character in front of a
filename in the stat socket is used to specified an uncommitted
transaction.
This patch replace the '*' by a '_' in the filename.
This is only done when using the default filename, the name can still be
forced with an asterisk.