Create SSL certificate with OpenSSL

First you should create .key file like below. This key file is private therefore don’t share with anyone.

$ openssl genrsa -des3 -out /<your ssl folder>/private.key 2048

Then you have to create .csr file to get certificate file using your key file. It will ask you some questions.

$ openssl req -new -key /<your ssl folder>/private.key -out /<your ssl folder>/ssl.csr

Then upload csr file to certificate authority web page. You will get certificate and chain bundle files.

Add SSL certificate definations to the site config file in apache web server.

<VirtualHost *:443>
  ...
  ...
  SSLEngine on
  SSLCertificateFile /<your ssl folder>/certificate.crt
  SSLCertificateKeyFile /<your ssl folder>/private.key
  SSLCACertificateFile /<your ssl folder>/chain_bundle.pem
  ...
  ...
</VirtualHost>

If you get SSL sertificate from Comodo SSL. You have to create your chain bundle file like below.

$ cat AAACertificateServices.crt USERTrustRSAAAACA.crt SectigoRSADomainValidationSecureServerCA.crt > /<your ssl folder>/chain_bundle.pem

Uninstall GlobalProtect Vpn on MacOS Without İnstall File

You can uninstall GlobalProtect application with bash code. Firstly you should create uninstall_gp.sh in the home or another directory like this.

$ touch uninstall_gp.sh

Then open with vi editor and paste below code to the uninstall_gp.sh file.

#!/bin/sh
USER_ID=`id -u`
if [ "$USER_ID" -ne 0 ]; then
    echo "You must be root to run the script. Use sudo $0"
    exit
fi
install_dir=/Applications/GlobalProtect.app/Contents/Resources
app_log_dir=/Library/Logs/PaloAltoNetworks/GlobalProtect
mkdir -p "$app_log_dir"
((
    checkAndWaitProcess()
    {
        if [[ "$2" ]]; then
            T="$2"
        else
            T=5
        fi
        C=0
        while [[ C -lt $T ]] &&
              ( killall -s "$1" >/dev/null 2>/dev/null )
        do
            let C=C+1
            sleep 1
        done
        killall -s $1 >/dev/null 2>/dev/null
        return $?
    }
    pan_info()
    {
        curtime=`date`
        echo $curtime ' ' $1 >> ${app_log_dir}/PanGPInstall.log
    }
    curver=`defaults read ${install_dir}/../Info CFBundleShortVersionString`
    if [[ "$HOME" ]]; then
        USER=`stat -f "%Su" "$HOME"`
        pan_info "Uninstalling GlobalProtect version ${curver}, user ${USER}"
        pan_info "unload user gps, gpa"
        sudo -u"$USER" launchctl remove com.paloaltonetworks.gp.pangps
        sudo -u"$USER" launchctl remove com.paloaltonetworks.gp.pangpa
    else
        pan_info "Uninstalling GlobalProtect version ${curver}"
    fi
    pan_info "unload gps, gpsd and gpa"
    launchctl remove com.paloaltonetworks.gp.pangpa
    launchctl remove com.paloaltonetworks.gp.pangps
    launchctl remove com.paloaltonetworks.gp.pangpsd
    #wait for 15 sec. while PanGPS quits
    if checkAndWaitProcess "PanGPS" 5; then
        pan_info "PanGPS didn't quit within 5 sec. Killing"
        killall -15 PanGPS
        if checkAndWaitProcess "PanGPS" 5; then
            pan_info "PanGPS didn't quit after kill within 5 sec."
        fi
    fi
    #wait for 5 sec. while GlobalProtect quits
    if checkAndWaitProcess "GlobalProtect" 5; then
        pan_info "GlobalProtect didn't quit within 5 sec. Killing"
        killall -15 GlobalProtect
        if checkAndWaitProcess "GlobalProtect" 5; then
            pan_info "GlobalProtect didn't quit after kill within 5 sec."
        fi
    fi
    pan_info "Cleanup Dynamic Store"
    echo "remove State:/Network/Service/gpd.pan/IPv4" | scutil
    echo "remove State:/Network/Service/gpd.pan/DNS"  | scutil
    pan_info "rm all"
    rm -f "/Library/LaunchAgents/com.paloaltonetworks.gp.pangps.plist"
    rm -f "/Library/LaunchAgents/com.paloaltonetworks.gp.pangpa.plist"
    rm -f "/Library/LaunchDaemons/com.paloaltonetworks.gp.pangpsd.plist"
    rm -rf "/Library/Application Support/PaloAltoNetworks/GlobalProtect"
    rm -rf "/Applications/GlobalProtect.app"
    rm -rf "/Applications/GlobalProtect.app.bak"
    rm -rf "/System/Library/Extensions/gplock"*.kext
    rm -rf "/Library/Extensions/gplock"*.kext
    #Mercy kill if processes are stuck
    killall -9 GlobalProtect
    killall -9 PanGPS
    rm -rf /Library/Preferences/com.paloaltonetworks.GlobalProtect*
    rm -rf /Library/Preferences/PanGPS*
    if [[ "$HOME" ]]; then
        rm -rf "$HOME/Library/Application Support/PaloAltoNetworks/GlobalProtect"
        rm -rf "$HOME"/Library/Preferences/com.paloaltonetworks.GlobalProtect*
        rm -rf "$HOME"/Library/Preferences/PanGPS*
        #remove password entry from keychain
        security delete-generic-password -l GlobalProtect -s GlobalProtect
    fi
    pan_info "Unload driver"
    ifconfig gpd0 down
    kextunload -b com.paloaltonetworks.kext.pangpd
    pan_info "Unload gplock"
    kextunload -b com.paloaltonetworks.GlobalProtect.gplock
    #10.9 addition to clear system preferences cache
    killall -SIGTERM cfprefsd
    pan_info "uninstall packages from globalprotect"
    for pkg in `pkgutil --pkgs |grep com.paloaltonetworks.globalprotect`
    do
        pkgutil --forget "$pkg"
    done
    rm -rf /Library/Logs/PaloAltoNetworks/GlobalProtect/*
    echo "Uninstallation finished."
)  2>&1) >> ${app_log_dir}/PanGPInstall.log

Then you can run uninstall_gp.sh file via bash terminal like this:

$ sudo sh uninstall_gp.sh

Great! GlobalProtect application has removed.