You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

97 lines
2.4 KiB

#!@l_bash@
##
## sftpgo-cred -- SFTPgo credential generation
##
cd @l_prefix@/etc/sftpgo || exit $?
#
# ==== STEP 1: SSH/SFTP credentials =====
#
# initialize SSH host keys
@l_prefix@/bin/ssh-keygen -t rsa -b 2048 \
-f sftpgo.ssh.id_rsa -N '' -C "$1" >/dev/null 2>&1
@l_prefix@/bin/ssh-keygen -t ecdsa -b 521 \
-f sftpgo.ssh.id_ecdsa -N '' -C "$1" >/dev/null 2>&1
#
# ==== STEP 2: HTTPS/WebDAV credentials =====
#
# generate CA certificate/key pair
( echo "{"
echo " \"key\": {"
echo " \"algo\": \"rsa\","
echo " \"size\": 4096"
echo " },"
echo " \"ca\": {"
echo " \"expiry\": \"87600h\","
echo " \"pathlen\": 1"
echo " },"
echo " \"CN\": \"CA\","
echo " \"names\": ["
echo " {"
echo " \"OU\": \"Certificate Authority\""
echo " }"
echo " ]"
echo "}"
) | \
@l_prefix@/bin/cfssl genkey \
-loglevel=4 \
-initca - | \
@l_prefix@/bin/cfssl-json \
-bare sftpgo.tls-ca
rm -f sftpgo.tls-ca.csr
chmod 600 sftpgo.tls-ca.key
chmod 644 sftpgo.tls-ca.crt
( echo "{"
echo " \"signing\": {"
echo " \"profiles\": {"
echo " \"peer\": {"
echo " \"expiry\": \"87600h\","
echo " \"usages\": ["
echo " \"signing\","
echo " \"key encipherment\","
echo " \"server auth\","
echo " \"client auth\""
echo " ]"
echo " }"
echo " }"
echo " }"
echo "}"
) >sftpgo.tls-ca.json
chmod 644 sftpgo.tls-ca.json
# generate server certificate/key pair
( echo "{"
echo " \"key\": {"
echo " \"algo\": \"rsa\","
echo " \"size\": 4096"
echo " },"
echo " \"CN\": \"$1\","
echo " \"hosts\": ["
i=0
for host in "$@"; do
echo -n " \"$host\""
i=`expr $i + 1`
if [ $i -lt $# ]; then
echo -n ","
fi
echo ""
done
echo " ]"
echo "}"
) | \
@l_prefix@/bin/cfssl gencert \
-loglevel=4 \
-ca sftpgo.tls-ca.crt \
-ca-key sftpgo.tls-ca.key \
-config sftpgo.tls-ca.json \
-profile=peer - | \
@l_prefix@/bin/cfssl-json \
-bare sftpgo.tls-sv
rm -f sftpgo.tls-sv.csr
chmod 600 sftpgo.tls-sv.key
chmod 644 sftpgo.tls-sv.crt