forked from gitpel/letsencrypt-routeros
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
1 changed file
with
75 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,75 @@ | ||
#!/bin/bash | ||
CONFIG_FILE=letsencrypt-routeros.settings | ||
|
||
if [[ -z $1 ]] || [[ -z $2 ]] || [[ -z $3 ]] || [[ -z $4 ]] || [[ -z $5 ]]; then | ||
echo -e "Usage: $0 or $0 [RouterOS User] [RouterOS Host] [SSH Port] [SSH Private Key] [Domain]\n" | ||
source $CONFIG_FILE | ||
else | ||
ROUTEROS_USER=$1 | ||
ROUTEROS_HOST=$2 | ||
ROUTEROS_SSH_PORT=$3 | ||
ROUTEROS_PRIVATE_KEY=$4 | ||
DOMAIN=$5 | ||
fi | ||
|
||
if [[ -z $ROUTEROS_USER ]] || [[ -z $ROUTEROS_HOST ]] || [[ -z $ROUTEROS_SSH_PORT ]] || [[ -z $ROUTEROS_PRIVATE_KEY ]] || [[ -z $DOMAIN ]]; then | ||
echo "Check the config file $CONFIG_FILE or start with params: $0 [RouterOS User] [RouterOS Host] [SSH Port] [SSH Private Key] [Domain]" | ||
echo "Please avoid spaces" | ||
exit 1 | ||
fi | ||
|
||
CERTIFICATE=/etc/letsencrypt/live/$DOMAIN/cert.pem | ||
KEY=/etc/letsencrypt/live/$DOMAIN/privkey.pem | ||
|
||
#Create alias for RouterOS command | ||
routeros="ssh -i $ROUTEROS_PRIVATE_KEY $ROUTEROS_USER@$ROUTEROS_HOST -p $ROUTEROS_SSH_PORT" | ||
|
||
#Check connection to RouterOS | ||
$routeros /system resource print | ||
RESULT=$? | ||
|
||
if [[ ! $RESULT == 0 ]]; then | ||
echo -e "\nError in: $routeros" | ||
echo "More info: https://wiki.mikrotik.com/wiki/Use_SSH_to_execute_commands_(DSA_key_login)" | ||
exit 1 | ||
else | ||
echo -e "\nConnection to RouterOS Successful!\n" | ||
fi | ||
|
||
if [ ! -f $CERTIFICATE ] && [ ! -f $KEY ]; then | ||
echo -e "\nFile(s) not found:\n$CERTIFICATE\n$KEY\n" | ||
echo -e "Please use CertBot Let'sEncrypt:" | ||
echo "============================" | ||
echo "certbot certonly --preferred-challenges=dns --manual -d $DOMAIN --manual-public-ip-logging-ok" | ||
echo "===========================" | ||
echo -e "and follow instructions from CertBot\n" | ||
exit 1 | ||
fi | ||
|
||
# Remove previous certificate | ||
$routeros /certificate remove [find name=$DOMAIN.pem_0] | ||
# Create Certificate | ||
# Delete Certificate file if the file exist on RouterOS | ||
$routeros /file remove $DOMAIN.pem > /dev/null | ||
# Upload Certificate to RouterOS | ||
scp -q -P $ROUTEROS_SSH_PORT -i "$ROUTEROS_PRIVATE_KEY" "$CERTIFICATE" "$ROUTEROS_USER"@"$ROUTEROS_HOST":"$DOMAIN.pem" | ||
sleep 2 | ||
# Import Certificate file | ||
$routeros /certificate import file-name=$DOMAIN.pem passphrase=\"\" | ||
# Delete Certificate file after import | ||
$routeros /file remove $DOMAIN.pem | ||
|
||
# Create Key | ||
# Delete Certificate file if the file exist on RouterOS | ||
$routeros /file remove $KEY.key > /dev/null | ||
# Upload Key to RouterOS | ||
scp -q -P $ROUTEROS_SSH_PORT -i "$ROUTEROS_PRIVATE_KEY" "$KEY" "$ROUTEROS_USER"@"$ROUTEROS_HOST":"$DOMAIN.key" | ||
sleep 2 | ||
# Import Key file | ||
$routeros /certificate import file-name=$DOMAIN.key passphrase=\"\" | ||
# Delete Certificate file after import | ||
$routeros /file remove $DOMAIN.key | ||
# Setup Certificate to SSTP Server | ||
$routeros /interface sstp-server server set certificate=$DOMAIN.pem_0 | ||
|
||
exit 0 |