#!/bin/bash # # *** For DSM v7.x *** # # How to use this script: # 1. Get your 3 PEM files ready to copy over from your local machine/update server (privkey.pem, fullchain.pem, cert.pem) # and put into a directory (this will be $CERT_DIRECTORY). # Personally, I use this script (https://gist.github.com/catchdave/3f6f412bbf0f0cec32469fb0c9747295) to automate steps 1 & 4. # 2. Ensure you have a user setup on synology that has ssh access (and ssh access is setup). # This user will need to be able to sudo as root (i.e. add this line to sudoers, is the user you create): # ALL=(ALL) NOPASSWD: /var/services/homes//replace_certs.sh # 3. Copy this script to Synology: sudo scp replace_synology_ssl_certs.sh $USER@$SYNOLOGY_SERVER:~/ # 4. Call this script as follows: # sudo bash -c scp ${CERT_DIRECTORY}/{privkey,fullchain,cert}.pem $USER@$SYNOLOGY_SERVER:/tmp/ \ # && ssh $USER@$SYNOLOGY_SERVER 'sudo ./replace_synology_ssl_certs.sh' # Script start. DEBUG= # Set to any non-empty value to turn on debug mode error_exit() { echo "[ERROR] $1"; exit 1; } warn() { echo "[WARN ] $1"; } info() { echo "[INFO ] $1"; } debug() { [[ "${DEBUG}" ]] && echo "[DEBUG ] $1"; } # 1. Initialization # ================= [[ "$EUID" -ne 0 ]] && error_exit "Please run as root" # Script only works as root certs_src_dir="/usr/syno/etc/certificate/system/default" services_to_restart=("nmbd" "avahi" "ldap-server") packages_to_restart=("ScsiTarget" "SynologyDrive" "WebDAVServer" "ActiveBackup") target_cert_dirs=( "/usr/syno/etc/certificate/system/FQDN" "/usr/local/etc/certificate/ScsiTarget/pkg-scsi-plugin-server/" "/usr/local/etc/certificate/SynologyDrive/SynologyDrive/" "/usr/local/etc/certificate/WebDAVServer/webdav/" "/usr/local/etc/certificate/ActiveBackup/ActiveBackup/" "/usr/syno/etc/certificate/smbftpd/ftpd/") # Add the default directory default_dir_name=$(/dev/null && /usr/syno/bin/synopkg restart "$package" done # Restart nginx if ! /usr/syno/bin/synow3tool --gen-all && sudo /usr/syno/bin/synosystemctl restart nginx; then warn "nginx failed to restart" fi info "Completed"