|C H A P T E R 1|
When using SGD, client devices never connect directly to application servers. Instead they connect to SGD using Hypertext Transfer Protocol (HTTP) or HTTP over Secure Sockets Layer (HTTPS) and the SGD Adaptive Internet Protocol (AIP). SGD then connects to the application servers on the user’s behalf. The network connections required are shown in FIGURE 1-1.
To secure connections between client devices and SGD servers, configure the SGD web server to be a secure (HTTPS) web server, and enable SGD security services. See Securing Connections Between Client Devices and SGD Servers for details.
SGD security services enables SGD to use Transport Layer Security (TLS) or Secure Sockets Layer (SSL) to provide secure connections between an SGD Client and an SGD server. SGD supports TLS version 1.0 and SSL version 3.0.
The SGD Gateway can also be used to provide an increased level of security between client devices and SGD servers, see The SGD Gateway.
The connections between SGD servers and application servers are used to start applications on the application server, and to send and receive data from the application, such as key presses and display updates.
For secure connections to UNIX® or Linux system application servers, use Secure Shell (SSH). SSH encrypts all communications between SGD hosts and encrypts passwords before they are transmitted. See Securing Connections to Application Servers with SSH.
See Securing Connections Between SGD Servers for details on how to secure these connections.
The SGD Gateway is an optional SGD component. It is a proxy server designed to be deployed in front of an SGD array in a demilitarized zone (DMZ), and it enables an SGD array to be located on your internal network. Additionally, all connections can be authenticated in the DMZ before any connections are made to the SGD servers in the array.
Using the SGD Gateway is an alternative to running your SGD servers with firewall traversal, also called firewall forwarding. The SGD Gateway manages the load balancing of HTTP connections, so you do not need to use the JavaServer Pages (JSP) technology load balancing page included with SGD.
These two types of DNS names might be associated with the same network interface on the SGD host, or they might each use a different network interface. These DNS names must be fully-qualified DNS names.
After installation, you can configure each SGD server with one or more external DNS names. The external DNS name is used by the SGD Client when it connects to an SGD server. By default, the peer DNS name is also used as an external DNS name. If you use the SGD Gateway, external DNS names are only used for direct client connections that are not routed through an SGD Gateway, see The SGD Gateway for more information.
In a network containing a firewall, you might need to make some names usable outside the firewall, for example across the Internet, and others usable inside the firewall. For example, users outside the firewall might be able to use www.indigo‐insurance.com, but not boston.indigo‐insurance.com. Users inside the firewall might be able to use either name.
Caution - You do not have to make all your SGD servers available outside the firewall. However, if users log in to an SGD server from both inside and outside the firewall, they might not be able to resume some applications when logging in from outside the firewall.
If you are using mechanisms such as an external hardware load balancer or round‐robin DNS to control the SGD server that a user connects to, you must configure SGD to work with these mechanisms, see User Session Load Balancing.
When an SGD Client connects to an SGD server, it connects using the external DNS name provided by the SGD server. The actual DNS name used is determined using the Internet Protocol (IP) address of the client.
If you use the SGD Gateway, external DNS names are only used for direct client connections that are not routed through an SGD Gateway, see The SGD Gateway for more information.
Caution - If SGD is configured for firewall traversal, you cannot use multiple external DNS names because SGD cannot determine the IP address of the client device. In this situation, you can configure a single external DNS name, for example *:www.indigo-insurance.com, and then use split DNS so that clients can resolve the name to different IP addresses, depending on whether they are inside or outside the firewall. See Using Firewall Traversal.
The format of each filter is described in Configuring External DNS Names.
You can change the peer DNS name of an SGD server without having to reinstall the software, see How to Change the Peer DNS Name of an SGD Server.
After changing the DNS name, the /opt/tarantella/var/log/SERVER_RENAME.log file contains the details of the changes that were made. Your existing server security certificates are backed up in the /opt/tarantella/var/tsp.OLD.number directory.
Changing a peer DNS name of an SGD server might also affect your application servers, see Configuring Application Servers after Changing a Peer DNS Name.
# tarantella array detach --secondary serv
# tarantella serverrename --peerdns newname [ --extdns newname ]
Use the --extdns option to change the external DNS name of the server. This option only works if the SGD server has a single external DNS name. If the server has more than one external DNS name, you must manually update the external DNS names. See Configuring External DNS Names.
# tarantella security keystoregen
For details about secure intra‐array communication, see Securing Connections Between SGD Servers.
For details about server SSL certificates, see Securing Connections Between Client Devices and SGD Servers.
# tarantella array join --primary p-serv --secondary s-serv
If you have installed SGD printer queues on UNIX or Linux platform application servers, you might have to remove the printer queue that uses the old DNS name of the SGD server, and configure a new printer queue that uses the new DNS name of the SGD server. See Configuring UNIX and Linux Platform Application Servers for Printing.
If you use an SGD server as an application server, you must manually reconfigure the application server object by changing the DNS name for the application server and, optionally, renaming the object.
To be able to connect to SGD through a proxy server, client devices might need to be configured with the address and port number of the proxy servers. You might also need to configure SGD to give clients information about server-side proxy servers.
AIP connections are the connections between the SGD Client and the SGD server used to display applications. For these connections, the settings in the client profile control whether the SGD Client determines the proxy settings from a browser or from the client profile itself.
The SGD Client always stores the last proxy settings it used in the client profile cache. See About the Profile Cache for details.
Note - You can only configure a SOCKS proxy for the AIP connection by specifying an array route, see Configuring Server-Side Proxy Servers for details.
If the Use Default Web Browser Settings check box is selected in the client profile, the proxy server settings are determined from the user’s default browser. The SGD Client stores the proxy settings in the profile cache on the client device and uses these settings when it next starts.
If Establish Proxy Settings on Session Start is selected in the client profile, the SGD Client obtains the proxy settings from the browser every time it starts. The stored proxy settings are not used. If Automatic Client Login is selected in the client profile, the Establish Proxy Settings on Session Start setting is disabled.
To be able to determine the proxy settings from a browser, the browser must have Java technology enabled. If Java technology is not available, or it is disabled in the browser, the proxy settings must be manually specified in the client profile.
Proxy server automatic configuration scripts can specify a list of proxy servers to try. If the first proxy server in the list is unavailable, the browser tries the other proxy servers in turn until it finds one that is available.
If you are using Microsoft Internet Explorer with Sun Java Plugin tool version 1.5.0, only the first proxy server in the list is used. If that proxy server is not available, the connection fails. The solution is to use Sun Java Plugin tool version 1.6.0.
You can use proxy server exception lists to control the connections that are not proxied. Proxy exception lists can only be used if the proxy settings are determined from a browser. You cannot configure exception lists in the client profile. The exception list can be configured in the browser or Sun Java Plugin tool.
An exception list is a list of DNS host names. For Internet Explorer, the list is a semicolon-separated list. For Mozilla-based browsers, the list is a comma‐separated list. Exception lists can include the * wildcard.
There is no translation between DNS host names and IP addresses in exception lists. For example, with an exception list of *.example.com, connections to chicago.example.com and detroit.example.com do not use a proxy server, but connections that use the IP addresses for these hosts do use a proxy server.
$ tarantella config edit --sessions-aipkeepalive secs
SGD can be configured to “instruct” the SGD Client to connect through a server‐side SOCKS version 5 proxy server. The actual proxy server used is determined using the IP address of the client. This known as an array route.
If you use the SGD Gateway, array routes are only used for direct client connections that are not routed through an SGD Gateway, see The SGD Gateway for more information.
If you use an external SSL accelerator instead of SGD to handle SSL processing, append the array route with :ssl, see the following example. This instructs the SGD Client to use SSL on that connection before continuing with the SOCKS connection. See Using External SSL Accelerators for details.
Caution - If SGD is configured for firewall traversal, you cannot use multiple array routes because SGD cannot determine the IP address of the client device. You can configure a single array route, for example *:CTSOCKS:taurus.indigo‐insurance.com:8080. See Using Firewall Traversal.
"192.168.5.*:CTDIRECT:, \ 192.168.10.*.*:CTSOCKS:taurus.indigo‐insurance.com:8080, \ *:CTSOCKS:draco.indigo-insurance.com:8080:ssl"
$ tarantella config edit \ --tarantella-config-array-netservice-proxy-routes routes
The format of each filter is described in Configuring Server-Side Proxy Servers.
Firewalls can be used to protect various parts of a network. To use SGD you must configure your firewalls to allow packets to be sent between client devices and SGD servers, and between SGD servers and application servers, as shown in FIGURE 1-2.
Client devices must be able to make HTTP and AIP connections to any SGD server in the array. This is because a user’s SGD session and a user’s application sessions can be hosted on different SGD servers.
|Client||SGD web server||80||TCP||Standard, unencrypted HTTP requests and responses.|
|Client||SGD web server||443||TCP||Secure, encrypted HTTPS requests and responses.|
|Client||SGD server||3144||TCP||Standard, unencrypted AIP connections.|
|Client||SGD server||5307||TCP||SSL-based secure, encrypted AIP connections.|
Transmission Control Ports (TCP) 80 and 443 are the Internet-standard ports for HTTP and HTTPS. Port 443 is only used if HTTPS is enabled on the SGD web server. You can configure the SGD web server to use any port. If you use your own web server with SGD, you must still open the ports used by the SGD web server because this web server provides the web services needed to access SGD.
In a default installation, ports 3144 and 5307 must both be open in the firewall. The SGD Client initially makes a secure connection on port 5307, but once the user has authenticated, the connection is downgraded to a standard connection on port 3144.
The SGD Gateway – See The SGD Gateway for details
Firewall traversal – See Using Firewall Traversal for details
A network might contain firewalls between the SGD servers in an array, for example if you have multiple offices each containing an SGD server. The SGD servers in an array must be able to connect to any other member of the array.
|SGD server||Another SGD server||515||TCP||Used when moving print jobs from one SGD server to another using the tarantella print move command.|
|SGD server||Another SGD server||5427||TCP||Used for connections between SGD servers to allow array replication, and sharing of both static and dynamic data across the array.|
If you enable support for audio, smart cards, or serial ports for Windows applications that use the Microsoft RDP protocol, your firewall must allow connections between SGD servers on TCP port 1024 and above. If you do not use these features, it is best to disable support for them in SGD. See the following for more information:
The ports used for connections between SGD servers and application servers depends on the application type and the connection method used to log in to the application server. Other ports are needed to provide support while using applications.
|SGD server||Application server||22||TCP||Used to connect to X and character applications using SSH.|
|SGD server||Application server||23||TCP||Used to connect to Windows, X, and character applications using Telnet.|
|Application server||SGD server||137||UDP||Used for Windows Internet Name Service (WINS) services with client drive mapping. The server binds to this port at start‐up only if WINS services are enabled.|
|Application server||SGD server||139||TCP||Used for client drive mapping services. The server binds to this port at start-up, whether or not client drive mapping services are enabled.|
|SGD server||Application server||512||TCP||Used to connect to X applications using rexec.|
|Application server||SGD server||515||TCP||Used to send print jobs from the application server to an SGD server.|
|SGD server||Application server||3389||TCP||Used to connect to Windows applications configured to use the Microsoft RDP protocol.|
|SGD server||Application server||3579||TCP||Used for connections between the primary SGD server and the SGD load balancing service on an application server.|
|Application server||SGD server||3579||UDP||Used for connections between the SGD load balancing service on an application server and the primary SGD server.|
|SGD server||Application server||5999||TCP||Used to connect to Windows applications, if the application is configured to use the Wincenter protocol and the connection method is Telnet. The Wincenter protocol is no longer supported but might be used by legacy Windows application objects.|
|Application server||SGD server||6010 and above||TCP||Used to connect X applications to the protocol engines on the SGD server.|
User Datagram Protocol (UDP) port 137 and TCP port 139 might be used by products providing Windows file and print services, such as Samba. You only need to open these ports if you are using client drive mapping on Microsoft Windows application servers. See Client Drive Mapping for details.
For X applications, ports 6010 and above are only used if the connection method for X applications is Telnet or rexec. If the connection method is SSH, the connections use port 22. If you enable audio for X applications, all ports must be open between the application server and SGD. This is because the SGD audio daemon connects to the SGD server on random ports. This applies even if the connection method is SSH. See Audio for details.
Port 3579 is registered with IANA and is reserved for use only by SGD. You only need to open these ports if you are using SGD Advanced Load Management. See Application Load Balancing for details.
|SGD server||Windows server||88||TCP or UDP||Used to authenticate users from a Microsoft Windows domain.|
|SGD server||Windows server||137||UDP||Used to authenticate users from a Microsoft Windows domain.|
|SGD server||Windows server||139||TCP||Used to authenticate users from a Microsoft Windows domain.|
|SGD server||LDAP directory server||389||TCP||Used to authenticate users, or to assign applications to users, using a Lightweight Directory Access Protocol (LDAP) directory.|
|SGD server||Windows server||464||TCP or UDP||Used to enable users to change their password if it has expired.|
|SGD server||LDAP directory server||636||TCP||Used to authenticate users, or to assign applications to users, using a secure connection (LDAPS) to an LDAP directory.|
|SecurID Authentication Manager||SGD server||1024 to||UDP||Used to authenticate users using SecurID.|
|SGD server||Windows server||3268||TCP||Used to authenticate users from a Microsoft Windows domain.|
|SGD server||Windows server||3269||TCP||Used to authenticate users from a Microsoft Windows domain.|
|SGD server||SecurID Authentication Manager||5500||UDP||Used to authenticate users using SecurID.|
Ports 88, 464, 3268, 3269 are only required if you are using Active Directory authentication. Ports 88 and 464 can use either the TCP or UDP protocol depending on the packet size and your Kerberos configuration. See Configuring SGD for Kerberos Authentication for details.
Ports 137 and 139 are only required if you are using a domain controller for authentication. See Windows Domain Authentication for details.
Active Directory authentication, see Active Directory Authentication
LDAP authentication, see LDAP Authentication
Third-party or web server authentication using the LDAP repository search, see Third-Party and Web Server Authentication
Ports 1024 to 65535 are only required if you are using SecurID Authentication. For the RSA SecurID Authentication Manager to communicate with an SGD server acting as an Agent Host, all ports from 1024 to 65535 must be open from the IP addresses of the Master and Slave Authentication Managers to the IP addresses of all Agent Hosts. See SecurID Authentication for details.
Port 5500 is only required if you are using SecurID authentication. For the RSA SecurID Authentication Manager to communicate with an SGD server acting as an Agent Host, port 5500 must be open from the IP addresses of the Host Agents to the IP addresses of the Master and Slave Authentication Managers.
When SGD is first installed, connections to the SGD web server are not secure. The initial connection between an SGD Client and an SGD server is secure, but after the user is logged in, the connection is downgraded to a standard connection. This section describes how to secure the connections between client devices and SGD servers.
Automatic configuration uses the tarantella security enable command to configure secure connections to an SGD server. However, automatic configuration can be used only on a fresh installation of SGD when the server is not part of an array.
This step is optional if you obtain a server SSL certificate without using the tarantella security certrequest command to generate a CSR, or if you want to enable security using a self-signed SSL certificate.
-----BEGIN CERTIFICATE----- ...certificate... -----END CERTIFICATE-----
SGD supports the Subject Alternative Name (subjectAltName) extension for server SSL certificates. This enables you to associate more than one DNS name with a certificate. If the subjectAltName field is present in an SSL certificate, the subject field is ignored and only the subjectAltName is used. The SSL certificate is accepted by the SGD Client if any of the Subject Alternative Names match the name of the SGD server you are connecting to.
SGD includes support for a number of CA certificates by default. The /opt/tarantella/etc/data/cacerts.txt file contains the X.500 Distinguished Names (DNs) and MD5 signatures of all the CA certificates that SGD supports.
You can use a server SSL certificate that is signed by an unsupported CA. However, by default, all users are prompted to accept or decline these certificates because they cannot be validated by SGD. This is a potential security risk.
You can use an SSL certificate that was originally obtained for another product, such as a web server. To do this, you must have access to the private key for that certificate. If the private key is encrypted by a product that uses the SSLeay or OpenSSL certificate libraries, you can obtain the private key by decrypting it. See How to Install an SSL Certificate Obtained for Another Product for details.
If you do not have access to the private key, or the key is not encrypted by a product that uses SSLeay or OpenSSL certificate libraries, you must obtain and install a new server SSL certificate. See Obtaining and Installing a Server SSL Certificate.
SGD enables you to create self-signed server SSL certificates for test purposes, for example, while you are waiting to complete the registration requirements before the SSL certificate can be generated.
Only use self-signed SSL certificates in a test environment because self-signed SSL certificates are not truly secure. While a self-signed SSL certificate can be used to give users secure connections, users have no guarantee that the server they are connecting to is genuine.
If you already have an SSL certificate for another product, such as a web server, you might be able to use that certificate. See Using an SSL Certificate Obtained for Another Product.
When a CA receives a CSR, they check the validity of the request, and return a signed SSL certificate. You then install the SSL certificate on the SGD server, see How to Install a Server SSL Certificate.
To install an SSL certificate obtained for another product, see How to Install an SSL Certificate Obtained for Another Product.
Perform this step only if the server SSL certificate is signed by an unsupported CA, or an Intermediate CA, see Supported Certificate Authorities.
Unsupported CA. Import the CA or root certificate, see How to Install the CA Certificate for an Unsupported CA.
Intermediate CA. Import the CA certificate chain, see How to Install a CA Certificate Chain.
SGD supports the Subject Alternative Name (subjectAltName) extension for server SSL certificates. This enables you to associate more than one DNS name with an SSL certificate. See DNS Names for details.
In the following example, a CSR is generated for the SGD server boston.indigo‐insurance.com. This server also has an external DNS name of www.indigo‐insurance.com and so this name is added as a Subject Alternative Name.
# tarantella security certrequest \ --country US --state Massachusetts --orgname "Indigo Insurance" The certificate’s common name (CN) will be: boston.indigo‐insurance.com This hostname is included in the Certificate Signing Request (CSR) and corresponds to the name of the server that users will connect to. - If DNS names are used to connect to the server, the hostname above MUST be a fully qualified DNS name. - If clients are required to connect to the server using an IP address, the hostname above should be the IP address. A DNS record for this IP address SHOULD NOT exist. For clients to accept the certificate once it’s installed, a DNS lookup of the hostname followed by a reverse lookup of the result must return the original hostname. The hostname to be used in the certificate request is boston.indigo‐insurance.com. Do you want to use this hostname? [yes] y Do you want to add any additional hostnames? [no] y Type in the subject alternative names for the certificate, one per line. Enter a blank line to finish. subjectAltName: www.indigo-insurance.com subjectAltName: 2048 semi-random bytes loaded Generating RSA private key, 1024 bit long modulus ..++++++ ...........................................................++++++ e is 65537 (0x10001) -------------------------------------------------------------------------- Certificate Signing Request (CSR): Summary -------------------------------------------------------------------------- Subject: C=US ST=Massachusetts O=Indigo Insurance CN=boston.indigo‐insurance.com Subject Alternative Names: DNS:boston.indigo‐insurance.com, DNS:www.indigo-insurance.com The information above will be contained in the CSR. Create CSR now? [yes] y Send the following Certificate Signing Request (CSR) to a Certificate Authority, such as VeriSign (www.verisign.com). Check with your CA that you’re providing all the information they need. ------CUT HERE------ -----BEGIN CERTIFICATE REQUEST----- NhY2h1c2V0MIIB5TCCAU4CAQAwXDELMAkGA1UEBhMCVVMxFjAUBgNVBAgTDU1hc3 dpZS5VdHMxGTAXBgNVBAoTEEluZGlnbyBJbnN1cmFuY2UxGjAYBgNVBAMTEXJhZG sd+SmX7zz6Sy5TdW4uQ09NMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDbWM sMqBs7gQw8Q1Gk3NAypySP6aRiEItLrfSlZ8XgKXmjmlLtb03V9JonjLfhH3fBzk gnOG6EpTmJM4y3OOpEXZZ2yhtWgsQsXyLWbfTLWZPfHLPI5ztEEJ7Z0G6dpeG0xg wODA2ApAp6sIrmBqbZG2Aaf5poB+FQ4lsmQIDAQABoEkwRwYJKoZIhvcNAQkOMTo N1cmFuBgNVHREELzAtghFyYWRnaWUuVUsuU3VuLkNPTYIYd3d3LmluZGlnby1pbn V617E7oFKY2UuY29tMA0GCSqGSIb3DQEBBQUAA4GBAMsOieZzrGHN7fkW6LmYNHW sW1tmHeFjekpiUiTLYE+KUZXKKCH9f1eo+nfwFdi9VOomIdga4uehl+4acqqiGEe W4iIb9BC9b/V1pA/lGJwWN0aDDB3/d47UGAlli+spW37chg53Fp7eP2xIYWfJR6O 35eSPZm42dyp -----END CERTIFICATE REQUEST----- ------CUT HERE------ When you receive your certificate, use ’tarantella security certuse’ to install it.
See Supported Certificate Authorities for details of the CAs that SGD supports by default.
While you are waiting for the CA to return the server SSL certificate, you can use the tarantella security selfsign command to create and install a self-signed SSL certificate for test purposes. See Self-Signed SSL Certificates for more details.
If you are replacing a server SSL certificate, for example because the original SSL certificate is about to expire, the tarantella security certuse command prompts you for confirmation before overwriting the SSL certificate and private key.
# tarantella security certuse
# tarantella security certuse < /tmp/cert
# tarantella security certuse --certfile /opt/certs/cert.pem
Caution - This command creates a symbolic link to the SSL certificate file stored in the /opt/tarantella/var/tsp directory on the SGD server. Do not delete or move the SSL certificate file after running this command.
To install an SSL certificate obtained for another product, you must have the private key for that certificate. If the private key is encrypted by a product that uses the SSLeay or OpenSSL certificate libraries, you can obtain the private key by decrypting it.
# cp /etc/httpd/certs/boston‐indigo‐insurance.com.pem \ /opt/tarantella/var/tsp # cp /etc/httpd/certs/boston‐indigo‐insurance.com.key.pem \ /opt/tarantella/var/tsp
# tarantella security decryptkey \ --enckey /opt/tarantella/var/tsp/boston.indigo‐insurance.com.key.pem \ --deckey /opt/tarantella/var/tsp/boston.indigo‐insurance.com.key.out \ --format PEM
# tarantella security certuse \ --certfile /opt/tarantella/var/tsp/boston.indigo‐insurance.com.pem \ --keyfile /opt/tarantella/var/tsp/boston.indigo-insurance.com.key.out
Caution - This command creates symbolic links to the SSL certificate file and the key file in the /opt/tarantella/var/tsp directory on the SGD server. Do not delete or move the SSL certificate file or key file after running this command.
-----BEGIN CERTIFICATE----- ...Intermediate CA’s certificate... -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- ...CA root certificate... -----END CERTIFICATE-----
# tarantella security customca
# tarantella security customca --rootfile /tmp/chainedcerts.pem
See Obtaining and Installing a Server SSL Certificate for details.
# tarantella restart
If these conditions are not met, the tarantella security enable command fails and you must enable security by configuring it manually. See Setting Up Secure Client Connections (Manual Configuration).
See Using HTTPS Connections to the SGD Web Server for details.
See Using Firewall Traversal for details.
See Securing SOAP Connections to an SGD Server for details.
If you do not specify a server SSL certificate to install, the tarantella security enable command creates and installs a self-signed SSL certificate. If you want to install a server SSL certificate later, use the tarantella security disable command to restore the security settings to their previous state. You can then run the tarantella security enable command again and specify a server SSL certificate.
By default, the tarantella security enable command configures the SGD server for firewall traversal. Use the --firewalltraversal off option if you want to enable security without firewall traversal. You can enable firewall traversal later by doing either of the following:
Enable firewall traversal manually. See Using Firewall Traversal for details of how to do this.
If you used the tarantella security certrequest command to generate a CSR, you can omit the --keyfile option. The key stored in the /opt/tarantella/var/tsp/key.pending.pem file is used. When you install the server SSL certificate, the private key is moved to the /opt/tarantella/var/tsp/key.pem file.
Caution - If you use the --certfile option and the --keyfile option together, SGD creates symbolic links to the SSL certificate file and the key file in the /opt/tarantella/var/tsp directory on the SGD server. Do not delete or move the SSL certificate file or key file after running this command.
If you do not specify a server SSL certificate to install, the tarantella security enable command generates a CSR, and then creates and installs a self-signed SSL certificate. Only use a self-signed SSL certificate for test purposes.
SGD supports a number of CAs by default. Only use the --rootfile option if the server SSL certificate is signed by an unsupported CA, or by an Intermediate CA. See Supported Certificate Authorities for details.
If the server SSL certificate is signed by an Intermediate CA, combine all the certificates in the CA certificate chain into a file. The certificates must be in PEM format. The CA certificate used to sign the server SSL certificate must appear first, for example:
-----BEGIN CERTIFICATE----- ...Intermediate CA’s certificate... -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- ...CA root certificate... -----END CERTIFICATE-----
Caution - If you use the SGD Gateway, you must use the --firewalltraversal off option to enable security without firewall traversal. SGD servers configured for firewall traversal cannot be used with the SGD Gateway.
# tarantella security enable [ --firewalltraversal off ]\ --certfile certificate-path
# tarantella security enable [ --firewalltraversal off ]\ --certfile certificate-path --keyfile key-path
# tarantella security enable [ --firewalltraversal off ]\ --certfile certificate-path [--keyfile key-path] \ --rootfile CA-certificate-path
# tarantella security enable [ --firewalltraversal off ]
SGD security services only secure the connections between an SGD Client and an SGD server. To secure the connections between a browser and an SGD web server on the SGD host, HTTPS connections must be enabled on the web server.
The SGD web server is preconfigured to be a HTTPS web server and use the same SSL certificate as the SGD server. This is configured in the Apache configuration file, /opt/tarantella/webserver/apache/2.2.10_openssl‑0.9.8i_jk1.2.27/conf/httpd.conf.
Once a server SSL certificate is installed, you enable HTTPS connections by using the --https argument when you start the SGD server or the SGD web server. See Enabling SGD Security Services.
If you enable HTTPS connections, you must enable HTTPS connections for every SGD web server in the array. You must not mix HTTP and HTTPS web servers in the same SGD array. Every SGD web server in the array must use the same HTTPS port.
Once you enable secure connections to a web server, ensure that users have an HTTPS URL for the Login URL in their client profile. See Client Profiles.
For advice on securing the SGD web server, see Securing the SGD Web Server.
When SGD security services are enabled, the SGD Client connects to an SGD server on TCP port 5307. If it is not possible to open this port between client devices and SGD servers, you can use firewall traversal to give users access to SGD using a single port, usually port 443. With firewall traversal, you configure the SGD server to listen on port 443. The SGD server then forwards all traffic that is not AIP traffic to the SGD web server. For this reason, firewall traversal is sometimes called firewall forwarding.
By default, the tarantella security enable command configures an SGD server for firewall traversal, see Enabling SGD Security Services With Automatic Configuration. Use the information in this section if you want to enable firewall traversal manually.
The SGD Gateway – See The SGD Gateway
Multiple external DNS names – See Configuring External DNS Names
Multiple array routes – See Configuring Server-Side Proxy Servers
Connection definitions – See Using Connection Definitions
If you use firewall traversal, you can configure a single external DNS name, for example *:www.indigo-insurance.com, and then use split DNS so that clients can resolve the name to different IP addresses, depending on whether they are inside or outside the firewall.
<IfDefine SSL> Listen 127.0.0.1:443 </IfDefine>
# tarantella config edit --array-port-encrypted 443
# tarantella config edit --array \ --security-firewallurl https://127.0.0.1:443
# tarantella config list --server serv --security-firewallurl
To secure the SOAP connections, a client application, such as the SGD webtop, must be configured to use HTTPS. The client application must also be able to validate the server SSL certificate for any SGD server in the array. To do this, the client application’s truststore must contain the CA certificate, or the certificate chain, used to sign the server SSL certificate.
See The CA Certificate Truststore for details of how to check for supported CAs and how to import CA certificates.
# cd /opt/tarantella/webserver/tomcat/6.0.18_axis1.4 # cd shared/classes/com/tarantella/tta/webservices/client/apis
For each of the web services listed in the properties file, change the URL to an HTTPS URL and change the port number to port 443, for example, https://server.example.com:443/axis/services/document/print, where server.example.com is the name of the SGD server.
If you develop your own client applications without using the SGD com.tarantella.tta.webservices.client.views package, the information in this section contains the principles you need to follow to secure the SOAP connections to an SGD server.
On the remote host, you might have to import CA certificates into the Java Runtime Environment (JRE) software truststore for your JSP technology container. This truststore is used for the HTTPS connections from the client application to the SGD server, and enables the client application to validate the SSL certificate presented by an SGD server.
You must ensure that the JRE software truststore contains the CA certificate used to sign the certificate for any SGD server in the array. If a server SSL certificate was signed by an Intermediate CA, ensure that the truststore contains every certificate in the CA certificate chain.
If the tarantella security customca command is used to install a CA certificate or certificate chain on an SGD server, the /opt/tarantella/var/tsp/ca.pem file contains the CA certificate or certificate chain.
On the remote host, you must configure the client application to use HTTPS URLs to access SGD web services. The client application must also be configured to use the JRE software truststore for your JSP technology container.
For client applications that use the SGD package, the web services URLs are configured in the Resources.properties file in the shared library directory on the JSP technology container on the remote host. See Relocating the Webtop for details. For each of the web services listed, change the URL to an HTTPS URL, for example, https://server.example.com:443/axis/services/document/print.
On the SGD server, you might have to import CA certificates into the CA certificates truststore for the SGD server. This truststore is used for the HTTPS connections from the SGD server to the remote host. This connection is used to send events from the SGD server.
SGD supports a number of CAs by default. You only need to import CA certificates if the SSL certificate for the remote host is signed by an unsupported CA, or by an Intermediate CA. See The CA Certificate Truststore for details of how to check for supported CAs and how to import CA certificates.
If firewall traversal is enabled, you must start the SGD server before starting the SGD web server. If firewall traversal is not enabled, start the SGD web server before starting the SGD Server. If you use the tarantella start or tarantella restart commands without any command options, the SGD server and SGD web server are always started in the correct order depending on your firewall traversal configuration.
Connection definitions can be used to control whether a secure connection or a standard connection is used between an SGD Client and an SGD server. The connection type can depend on the following factors:
Caution - If SGD is configured for firewall traversal, do not use connection definitions. You always use secure connections with firewall traversal. See Using Firewall Traversal.
If you use the SGD Gateway, connection definitions are only used for direct client connections that are not routed through an SGD Gateway, see The SGD Gateway for more information.
When connection definition processing is enabled, you configure the connection definitions to determine which users receive standard or secure connections. You configure connection definitions at an organization level, which you can override at an organizational unit level or user profile level. By default, all users can receive secure connections if SGD security services are enabled.
Connection definitions use the IP address or DNS name of the client device and the SGD server to determine whether standard or secure connections are used. The order of the connection definitions is important as the first match is used. Connection definitions can include the * or ? wildcards to match more than one DNS name or IP address.
|Client Device Address||SGD Server Address||Connection Type|
If you have enabled secure connections (HTTPS) to the SGD web server, users see a warning if the CA or root certificate used to sign the web server SSL certificate is not available in the browser’s certificate store. To enable the web server SSL certificate to be validated without displaying a security warning, import the CA or root certificate into the user’s browser certificate store. Use the browser’s tools to do this.
If Java technology is enabled in the browser, the Java Plugin tool might also warn users about the web server’s SSL certificate. This depends on the configuration in the Java Control Panel. By default, the Java Plugin tool is configured to use the certificates in the browser certificate store. If the Plugin tool is not configured to do this, you might have to import the CA or root certificate using the Java Control Panel.
If there is a problem with a server SSL certificate, users see a security warning message. The security warning message enables users to view the SSL certificate details before deciding to accept the SSL certificate permanently or temporarily, or to reject it. FIGURE 1-3 shows an example security warning message.
If users accept the SSL certificate temporarily, and they agree to the initial connection, the SSL certificate details are cached for the lifetime of the user session. When users next log in, they are prompted about the SSL certificate again. If users accept the SSL certificate permanently, and they agree to the initial connection, they are not prompted about the SSL certificate again. For details about agreeing to the initial connection, see Untrusted Initial Connection Warnings.
For details about how to avoid issuer unknown security warnings, see Avoiding Issuer Unknown Security Warnings.
SGD requires users to authorize their connections to SGD so that they only connect to servers they trust. The first time a user connects to an SGD server, they see an Untrusted Initial Connection message advising that they are connecting to a server for the first time, as shown in FIGURE 1-4.
Users can check the SSL certificate details by clicking the View Certificate button and checking that the Validity and Subject details are correct. Users must do this before clicking Yes to agree to the connection. When a user agrees to a connection, the following files are updated on the client device:
The hostsvisited and certstore.pem files are stored in the same location as the user’s client profile cache. See About the Profile Cache for details.
When a user agrees to a connection to an SGD server, the hostsvisited file on the client device is updated with the name of the SGD server. If the server SSL certificate is signed by an unsupported CA, the fingerprint of the CA certificate is also added. The user is not prompted about the connection again, unless there is a problem.
If there is a problem with the server SSL certificate, for example because it is signed by an unsupported CA, users see a certificate security warning, as described in SGD Server SSL Certificate Security Warnings. If a user permanently accepts the SSL certificate, or the SSL certificate and its CA chain, and agrees to the connection to an SGD server, the SSL certificate is added to the certstore.pem file on the client device. When the user next logs in, they are not prompted about the SSL certificate. If a user accepts the SSL certificate temporarily, and they agree to the connection to an SGD server, the SSL certificate is not added to the certstore.pem file on the client device. When the user next logs in, they are prompted about the SSL certificate.
If there is a problem with the connection, for example because the server SSL certificate has changed, a Potentially Unsafe Connection message displays, as shown in FIGURE 1-5.
Provide users with a preconfigured hostsvisited file. See Using a Preconfigured hostsvisited File.
See also Avoiding Issuer Unknown Security Warnings for details of how to prevent users from seeing issuer unknown security warnings.
A preconfigured hostsvisited file can be used to prevent users from seeing a warning when the SGD Client first connects to an SGD server. You can also use it to restrict the SGD servers to which the SGD Client can connect.
To use a preconfigured hostsvisited file, first create a file containing the host names of all the SGD servers. If the server SSL certificate for an SGD server is signed by an unsupported CA, you must also add the fingerprint of the CA certificate. The easiest way to do this is to copy and edit an existing hostsvisited file, and then install it on client devices. You can also obtain the CA certificate fingerprint using the tarantella security fingerprint command.
You can manually add an <allowhostoverride> line to the hostsvisited file. If the value of <allowhostoverride> line is 0, the SGD Client can only connect to SGD servers that have entries in the hostsvisited file. If the value of <allowhostoverride> line is 1, or if the <allowhostoverride> line is missing, the SGD Client can connect to any SGD server. Users only see a warning when the SGD Client connects to an SGD server that is not listed in the hostsvisited file.The following is an example hostsvisited file.
<?xml version="1.0" encoding="UTF-8" ?> <array> <allowhostoverride>0</allowhostoverride> <server peername="boston.indigo‐insurance.com"> <certfingerprint>51:B7:6D:FA:6E:3B:BE:ED:37:73:D4:9D:5B:C5:71:F6 </certfingerprint> </server> </array>
The easiest way to avoid issuer unknown security warnings is to ensure that a server SSL certificate is signed by a supported CA. See Supported Certificate Authorities for details.
To enable the SSL certificate to be validated, you must install the CA certificate or certificate chain. However, even if you install the CA certificate, users see a security warning about the SLL certificate the first time they connect to the SGD server. The only way to prevent users from being warned about the certificate is add the server SSL certificate to the certstore.pem file on the client device. The server SSL certificate is stored in the /opt/tarantella/var/tsp/cert.pem file on each SGD server.
By default, the SSL Daemon listens on TCP port 5307 for AIP traffic that has been encrypted with SSL. However, if you are using firewall traversal, the SSL Daemon listens on port 443, and accepts AIP and HTTPS traffic. In this situation, the Daemon handles the AIP traffic but forwards the HTTPS traffic on to the SGD web server.
Sometimes the load on the SSL Daemon can affect performance. You can tune the SSL Daemon so that it starts new processes as the load increases. If you have a multi-processor server, tuning the number of SSL Daemon processes to the number of processors can also improve performance.
By default, one SSL Daemon process starts when SGD security services are started and, as the number of connections increases, no further processes are started. You can increase the maximum number of SSL Daemon processes. This enables the SSL Daemon to start new processes as the number of connections increases, up to the maximum number of processes. If you find you regularly need multiple SSL Daemon processes, you can increase the minimum number of SSL Daemon processes. This controls the minimum number of SSL Daemon processes that are started automatically when SGD security services are started. See How to Tune SSL Daemon Processes for detail of how to change the maximum and minimum number of SSL Daemon processes.
You can use log filters to monitor SSL Daemon processes. By default, all errors are logged. You can increase the amount of log output to assist with tuning or for troubleshooting, see How to Change SSL Daemon Log Filters. The log filters you use have the same format as the log filters used for the SGD server. See Using Log Filters to Troubleshoot Problems With an SGD Server. The same severity and destination file options can be used. By default, all errors are logged to the /opt/tarantella/var/log directory.
If the SSL Daemon exits unexpectedly, it makes 10 attempts to restart before failing completely. You can change the maximum number of restart attempts, see How to Change SSL Daemon Maximum Restart Attempts.
# tarantella config edit \ --tarantella‐config‐ssldaemon‐minprocesses num
# tarantella config edit \ --tarantella‐config‐ssldaemon‐maxprocesses num
# tarantella config edit \ --tarantella‐config‐ssldaemon‐logfilter filter ...
# tarantella config edit \ --tarantella‐config‐ssldaemon‐maxrestarts num
You can select the cipher suite that is used for secure connections between SGD Clients and SGD servers, see How to Change the Cipher Suite for Secure Client Connections for details.
A cipher suite specifies one algorithm for each of these tasks. For example, the RSA_WITH_RC4_128_MD5 cipher suite uses RSA for key exchange, RC4 with a 128‐bit key for bulk encryption, and MD5 for message authentication.
TABLE 1-1 lists the supported cipher suites.
|Supported Cipher Suite||Client Preference||OpenSSL Name|
When selecting a cipher suite, you use the OpenSSL Name of the cipher suite, as shown in TABLE 1-1. If you select more than one cipher suite, the SGD Client determines which suite is used, based on the client preference order shown in the table above.
# tarantella config edit \ --tarantella-config-security-ciphers cipher-suite ...
SGD supports the use of external SSL accelerators. Performance can be improved by off‐loading the processor‐intensive transactions required for SSL connections to an external SSL accelerator. External SSL accelerators can also be used to centralize server SSL certificates.
When you enable external SSL accelerator support, the SGD SSL Daemon can accept plain text traffic on the port configured for secure connections, and forward it to SGD as SSL traffic it had decrypted itself.
If you are using server‐side proxy servers, you might have to configure your array routes for external SSL accelerators. See Configuring Server-Side Proxy Servers.
In a standard installation, the data transmitted between the SGD servers in an array is not encrypted. SGD Administrators can secure the connections between array members using SSL. Using SSL for these connections ensures the integrity of the data as follows:
As the certificates used for secure intra-array communication are used only internally by SGD, the primary SGD server in the array acts as the CA. The primary SGD server has a self-signed CA certificate and a private key. All secondary SGD servers in the array have a copy of the primary SGD server’s CA certificate in a trusted certificate store, the truststore.
All SGD servers in the array, including the primary, have a peer SSL certificate and a private key. The peer SSL certificate is signed with the primary SGD server’s CA certificate and contains a common name (CN) which is the peer DNS name of the SGD server. As the peer SSL certificates are created using a self-signed CA certificate, they cannot be used to secure any other SGD-related connection. These certificates are referred to as peer SSL certificates to distinguish them from other types of SSL certificates.
When one SGD server in the array connects to another, including when using an administration tool, the SGD server being connected to presents its peer SSL certificate as part of the SSL negotiation. The connecting server evaluates the peer SSL certificate and checks the following:
Secure intra-array communication can only be enabled on an SGD server that is not joined with other SGD servers in an array. When secure intra-array communication is enabled for an array, an SGD server can only join the array if it also has secure intra-array communication enabled.
When you enable secure intra-array communication, SGD automatically generates and distributes the CA and peer SSL certificates to the members of the array. Whenever there is a change in the array structure, SGD automatically updates the CA and peer SSL certificates. The following table summarizes what happens.
|Server joins the array|
|Server leaves the array|
|New primary server appointed|
$ tarantella array detach --secondary server
# tarantella security peerca --show
# tarantella array join --secondary serv
Check that the certificate fingerprint matches the fingerprint displayed in Step . This is important as it verifies that the primary SGD server is communicating with the genuine secondary SGD server.
You can select the cipher suite that is used for secure connections between the SGD servers in the array, see How to Change the Cipher Suite for Secure Intra‐Array Communication for details.
A cipher suite specifies one algorithm for each of these tasks. For example, the RSA_WITH_RC4_128_MD5 cipher suite uses RSA for key exchange, RC4 with a 128‐bit key for bulk encryption, and MD5 for message authentication.
TABLE 1-2 lists the supported cipher suites.
|Supported Cipher Suite||JSSE Name|
When selecting a cipher suite, you use the Java Secure Socket Extension (JSSE) name of the cipher suite, as shown in TABLE 1-2. If you select more than one cipher suite, the first cipher suite listed is used.
# tarantella config edit \ --tarantella-config-security-peerssl-ciphers cipher-suite ...
If you want to run the SSH client from a different location, or you want to specify particular command-line arguments for the client, see Configuring the SSH Client for details.
To connect to an X application using SSH, you must enable X11 forwarding. See Enabling X11 Forwarding for details.
You configure the global options for the SSH client by setting the TTASSHCLIENT environment variable, see How to Set Global SSH Client Options for details. Use the global SSH client configuration in the following situations:
You configure the application options for the SSH client by configuring the SSH Arguments attribute for the application object, see How to Set Application SSH Client Options for details.
|Global Configuration||Application Configuration||SSH Command Used|
|[none]||[none]||ssh -l user@host|
|[none]||-X||ssh -X -l user@host|
|/usr/ssh -X||[none]||/usr/ssh -X -l user@host|
|/usr/ssh -X||-p port||/usr/ssh -p port -l user@host|
# TTASSHCLIENT="/usr/local/bin/ssh -q -X"; export TTASSHCLIENT
Note - If you only want to set command-line arguments for the SSH client, you have to include the full path to the SSH client program, even if the SSH program is in a location where SGD can detect it.
See Configuring the SSH Client for details.
SGD supports the X Security extension. The X Security extension only works with versions of SSH that support the -Y option. For OpenSSH, this is version 3.8 or later. You enable the X security extension by configuring the application objects individual applications as follows:
If SSH connections fail when X authorization is enabled, you might have to run the SSH daemon in IPv4-only mode because SGD might not support the X Security extension used on your server. You enable IP version 4 mode by editing your system SSH configuration file. For example:
Certain SSH functionality, such as client keys, requires that the SSH client process runs as a privileged user. However, for security reasons, the SGD server processes and the SSH client process run as a non‐privileged user.
# chown root /opt/tarantella/bin/bin/ttasshhelper # chmod 4510 /opt/tarantella/bin/bin/ttasshhelper
If you are using the SSH client keys functionality, users might be prompted for a user name and password when they start an application. Users are prompted because SGD needs to know the user name to use for the SSH connection. Although users are also prompted for a password, the password is not actually used. Users are only prompted for a user name and password if they do not have an entry in the password cache for the application server, or if the password cache is disabled. If users are prompted, they only need to provide a user name. The password field can be left blank.