vab_13
ServiceNow Employee
ServiceNow Employee

Play With Edge Encryption: Step#1: Set Up Your Test Edge Encryption Server

This Document articulates steps for setting up your own Edge EnCryption Server on top of your personal dev ServiceNow instance.

=> Get a brand new EC2 Remote Machine(Wintel/Unix). In this Document, I'll be writing commands for Ubuntu 64 bit being my Proxy's Host OS.

=> ssh to the box and perform following:

1) Install Java and other dependencies

sudo apt-get install python-software-properties

sudo add-apt-repository ppa:webupd8team/java

sudo apt-get update

sudo apt-get install oracle-java8-installer

2) Install MySQL   Server, not older than 5.5

sudo   apt-add-repository ppa:ondrej/mysql-5.6

sudo apt-get update

sudo apt-get install mysql-server

For this being a dry run, I kept id & password = "root".

3) Install Edge Encryption Plugin on your ServiceNow Instance

4) Login with Admin account, unlock high-Security rights and navigate to

Edge Encryption Configuration => Installation & Downloads => Download

find_real_file.png

5) Download the relevant installer, in this example: Linux 64 bit.

6) FTP this installer to your Proxy Server. In this example, we saved the installer at: /home/ubuntu/EDGE/edgeencryption-dist-2.1.1-linux-x86-64.zip

7) Execute below to understand your command:

java -jar edgeencryption-dist-2.1.1-linux-x86-64.zip

😎 above command gives below:

ubuntu@ip-172-31-28-4:~/EDGE$ java -jar edgeencryption-dist-2.1.1-linux-x86-64.zip

option: [--mode] MODE required

--help

    -m|--mode                                                     MODE                                     [required, modes: install, upgrade]

    -s|--dst-dir                                               DESTINATION DIRECTORY   [optional for mode: install: default: $(PROXY_NAME)_$(PORT)]

    -d|--proxy-dir                                           PROXY DIRECTORY               [required for mode: upgrade]

    -n|--proxy-name                                         PROXY NAME                         [required for mode: install]

    -h|--host                                                     INSTANCE HOST                   [required for mode: install]

    -p|--port                                                     INSTANCE PORT                   [required for mode: install]

    -proto|--protocol                                     INSTANCE PROTOCOL           [required for mode: install]

Examples:

a) Install EdgeEncryption proxy into directory test_16001:

    java -jar edgeencryption-dist-2.1.1-linux-x86-64.zip -m install -n test -h 1.2.3.4 -p 16001 -proto http

b) Install EdgeEncryption proxy into SecureProxy directory, and configure to use secure HTTPS connection:

    java -jar edgeencryption-dist-2.1.1-linux-x86-64.zip -m install -n test -s SecureProxy -h 1.2.3.4 -p 443 -proto https

c) Upgrade EdgeEncryption proxy installed in directory test_16001:

  java -jar edgeencryption-dist-2.1.1-linux-x86-64.zip -m upgrade -d test_16001

9) We are installing with below: (update parameters as per your details)

java -jar edgeencryption-dist-2.1.1-linux-x86-64.zip -m install -n VabEdgeUbuntu1 -h instance_name.service-now.com -p 443 -proto https

10) Logs from a successfull execution:

ubuntu@ip-172-31-28-4:~/EDGE$ java -jar edgeencryption-dist-2.1.1-linux-x86-64.zip -m install -n VabEdgeUbuntu1 -h instance_name.service-now.com -p 443 -proto https

Feb 22, 2017 5:32:53 AM com.snc.cloudedge_zip.CommandProcessor buildCommand

INFO: option: dist-file: file:/home/ubuntu/EDGE/edgeencryption-dist-2.1.1-linux-x86-64.zip

Feb 22, 2017 5:32:53 AM com.snc.cloudedge_zip.CommandProcessor buildCommand

INFO: option: dst-dir: /home/ubuntu/EDGE/VabEdgeUbuntu1_443

Feb 22, 2017 5:32:53 AM com.snc.cloudedge_zip.CommandProcessor buildCommand

INFO: option: proxy-name: VabEdgeUbuntu1

Feb 22, 2017 5:32:53 AM com.snc.cloudedge_zip.CommandProcessor buildCommand

INFO: option: port: 443

Feb 22, 2017 5:32:53 AM com.snc.cloudedge_zip.CommandProcessor buildCommand

INFO: option: protocol: https

Feb 22, 2017 5:32:53 AM com.snc.cloudedge_zip.CommandProcessor buildCommand

INFO: option: extra-properties: 0

Feb 22, 2017 5:32:53 AM com.snc.dist.upgrade.common.extract.ZipExtractor extract

INFO: extracting: file:/home/ubuntu/EDGE/edgeencryption-dist-2.1.1-linux-x86-64.zip => /home/ubuntu/EDGE/VabEdgeUbuntu1_443

Feb 22, 2017 5:32:54 AM com.snc.cloudedge_zip.CloudedgePermissions execute

INFO: setting permissions: /home/ubuntu/EDGE/VabEdgeUbuntu1_443

Feb 22, 2017 5:32:54 AM com.snc.dist.upgrade.common.extract.ZipExtractor extract

INFO: extracting: file:/home/ubuntu/EDGE/VabEdgeUbuntu1_443/java/mid-jre-1.8.0_40-4-linux-x86-64.zip => /home/ubuntu/EDGE/VabEdgeUbuntu1_443/java

11) go to <proxy-installation-directory>/conf and open "edgeencryption.properties" to update

ubuntu@ip-----:~/EDGE$ cd VabEdgeUbuntu1_443/conf

ubuntu@ip-----:~/EDGE/VabEdgeUbuntu1_443/conf$ vi edgeencryption.properties

12) Update below Properties:

< edgeencryption.target.host = <Your_ServiceNow_Instance_Name>.service-now.com

---

< edgeencryption.target.username = User_Name_With_Edge_Role_In_Your_Instance

< edgeencryption.target.password = Password_Of_User_With_Edge_Role_In_Your_Instance

---

< edgeencryption.proxy.host = IP_Address_OF_Proxy_Host

---

< edgeencryption.proxy.https.keystore.password = default is "changeme" => set it to the password you want to create alias with.

< edgeencryption.proxy.https.cert.alias = alias1httscerti => set it to the value you want to create alias with.

---

< edgeencryption.db.user = root => This is the user of your sql db server installed earlier

< edgeencryption.db.password = root => Password you set while installing

---

< edgeencryption.proxy.signature.keystore.password = default is "changeme" => set it to the password you want to create alias with.

< edgeencryption.proxy.signature.keystore.keyalias = alias2proxysig => set it to the value you want to create alias with.

---

<# edgeencryption.encrypter.properties.password = <ChangeMe>   => Comment this out. This is for password for config encryption

---

< edgeencryption.keystore.path = keystore/keystore.jceks => Uncomment this

< edgeencryption.keystore.password = <ChangeMe> => Uncomment this and set it to default password "changeme" (the password of your encryption key)

13) Save "edgeencryption.properties" file.

14) Go to <proxy-installation-directory>/keystore

15) Execute below to generate 3 keys:

a) Generating the certificate for the Web server holding the proxy. This is the one you want sign with a CA authority =>

edgeencryption.proxy.https.cert.alias = alias1httscerti

../java/jre/bin/keytool -genkey -alias alias1httscerti -keyalg rsa -keystore keystore.jceks -storetype jceks  

b) This is another certificate, internal to edge: the signature =>

edgeencryption.proxy.signature.keystore.keyalias = alias2proxysig

../java/jre/bin/keytool -genkey -alias alias2proxysig -keyalg rsa -keystore keystore.jceks -storetype jceks  

c) Generate the encryption certificate on AES format so Edge can encrypt, 128 bit =>

../java/jre/bin/keytool -genseckey -alias jsaes128 -keyalg aes -keystore keystore.jceks -storetype jceks -keysize 128

16) List all certificates in this keystore, it will have 4 now, password for my example keystore is "changeme" =>

../java/jre/bin/keytool -list -v -keystore keystore.jceks -storepass changeme -storetype jceks

17) Login to ServiceNow with your admin account, and unlock high-Security rights and navigate to

Edge Encryption and Configuration => Encryption Key Configuration => Set Up Keys

find_real_file.png

find_real_file.png

18) Now, you are all set to start up your Edge Encryption Server.

19) Navigate to <proxy-installation-directory> and execute

./startup.sh

find_real_file.png

20) If you see This error:

    bin/./wrapper-linux-x86-32: not found

find_real_file.png

Execute below:

sudo apt-get install libc6-i386 libc6-dev-i386

21) Validate from logs, logs are located at:

<proxy-installation-directory>/logs

22) Validate if your proxy is up:

<Your_ServiceNow_Instance_Name>.service-now.com/xmlstats.do?include=edgeencryption

find_real_file.png

More updates are yet to come to this article.

Regards,

Vab Singhal

Comments
tals
Kilo Contributor

Thanks for the detailed steps Vab.


This helped us setting up our instance for testing.


Cheers


tonygresko
Tera Contributor

Are you able to use port 443 or does it redirect you to 8082? What does your edgeproxy.properties file look like? I am specifically talking about the connection from edge proxy to SN instance. We have a DNS entry in place but we can't use 443 when it gets to the edge proxy because the edge proxy just passes what it has to SN and from edge proxy to SN is port 8082. I tried to change the port to 443 but the edge proxy won't start up due to the port being under a certain number and its a security concern in linux?? I have read articles about how to bypass that block but I couldn't get anything working.


vab_13
ServiceNow Employee
ServiceNow Employee

port can be configured edgeproxy.properties file.


tonygresko
Tera Contributor

That is where you can change the port but the edge proxy won't start up on that port due to security concerns in Linux. I was able to get around it with using authbind when starting up the edge proxy.


vab_13
ServiceNow Employee
ServiceNow Employee

Thanks for the note Tony. I'll give it a try.


joeysmith
Kilo Contributor

Can I point it to my dev instance that I got from developer.servicenow.com ?


Sorry I am pretty new to ServiceNow, not 100% about license obligations.


Do not want to breach anything, so checking, thanks.



Joey


Version history
Last update:
‎02-21-2017 10:07 PM
Updated by: