C H A P T E R 1 |
This chapter describes how to integrate SGD into your network infrastructure and secure the network connections used by SGD.
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.
SGD servers can also join together as an array.
The following are the main network connections involved when using SGD:
In a default SGD installation, most network connections are not secure. The following sections describe how you can secure these network connections.
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.
Secure connections have the following benefits:
Assured identity – A server must prove its identity before communication can take place
Private connections – All data is encrypted before transmission
Reliable messages – Messages are checked to ensure they have not changed during transmission
Internet transactions are open to many forms of attack, for example packet-sniffing, Domain Name System (DNS) spoofing, replay attacks, and man-in-the-middle attacks. It is critical to recognize that even when SGD security is used, a connection is only secure if security is configured correctly.
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.
The level of security between SGD and your application servers depends on the types of application server and the protocols they use.
When connecting using the Telnet protocol or the rexec command, all communication and passwords are transmitted unencrypted.
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.
By default, SGD secures X displays using X authorization. This prevents users from accessing X displays they are not authorized to access.
The level of security depends on the protocol configured for the Windows application, as follows:
Microsoft Remote Desktop (RDP) protocol – All communication is encrypted
Citrix Independent Computing Architecture (ICA) protocol – All communication uses the Telnet protocol and is unencrypted
For secure connections to Microsoft Windows application servers, use the Microsoft RDP protocol.
Connections between SGD servers are used to share static and dynamic data across the array. This includes the following:
The configuration of objects in the organizational hierarchy
Configuration information, including array membership information
The token cache, used for automatic logins when the SGD Client is operating in Integrated mode
See Securing Connections Between SGD Servers for details on how to secure these connections.
The following are the main DNS requirements for SGD:
Hosts must have DNS entries that can be resolved by all clients.
DNS lookups and reverse lookups for a host must always succeed.
SGD servers can have multiple DNS names. Each SGD server has one peer DNS name, and one or more external DNS names.
A peer DNS name is the DNS name that the SGD servers in the array use to identify themselves to each other. For example, boston.indigo‐insurance.com.
An external DNS name is the DNS name that the SGD Client uses to connect to an SGD server. For example, www.indigo‐insurance.com.
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.
When you install SGD you are prompted for a DNS name for the SGD server. This must be the peer DNS name that is used inside the firewall. This is the DNS name that the SGD Web Server binds to.
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.
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.
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.
This section includes the following topics:
When an SGD Client connects to an SGD server, it connects using the DNS name provided by the SGD server. The actual DNS name used is determined using the Internet Protocol (IP) address of the client.
You configure external DNS names by setting one or more filters that match client IP addresses to DNS names. Each filter has the format Client-IP-Pattern:DNS-Name
The Client-IP-Pattern can be either of the following:
A regular expression matching one or more client device IP addresses, for example 192.168.10.*
A subnet mask expressed in the number of bits to match one or more client device IP addresses, for example 192.168.10.0/22
SGD servers can be configured with several filters. The order of the filters is important because SGD uses the first matching Client‐IP‐Pattern.
![]() | 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. You can configure a single external DNS name, for example *:www.indigo-insurance.com. See Using Firewall Traversal. |
The following is an example of external DNS names configuration:
"192.168.10.*:boston.indigo-insurance.com,*:www.indigo-insurance.com" |
With this configuration, the following applies:
If the order of the filters is reversed, all clients connect to www.indigo‐insurance.com.
Ensure that no users are logged in to the SGD server and that there are no running application sessions, including suspended application sessions.
In the Administration Console, go to the SGD Servers tab and select an SGD server.
In the External DNS Names field, type one or more filters for the external DNS names.
Each filter matches client IP addresses to DNS names.
Press the Return key after each filter.
The format of each filter is described in Configuring External DNS Names.
The order of the filters is important. The first match is used.
You must restart the SGD server for the external DNS names to take effect.
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.
You must detach an SGD server from an array and stop SGD before changing its peer DNS name.
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.
Ensure that no users are logged in to the SGD server and that there are no running application sessions, including suspended application sessions.
You can only change the peer DNS name from the command line.
Detach the SGD server from the array.
If you are changing the peer DNS name of the primary SGD server, first make another server the primary server and then detach the server.
# tarantella array detach --secondary serv |
Run the tarantella status command on the detached server to check that is detached from the array.
Ensure that the DNS name change for the SGD host has taken effect.
Check your DNS configuration and ensure that the other SGD servers can resolve the new DNS name. You might also have to edit the /etc/hosts and the /etc/resolve.cnf files on the SGD host.
Change the DNS name of the SGD server.
# 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.
Regenerate the server peer certificates used for secure intra‐array communication.
# tarantella security keystoregen |
For details about secure intra‐array communication, see Securing Connections Between SGD Servers.
Create and install new server certificates.
For details about server certificates, see Securing Connections Between Client Devices and SGD Servers.
Join the SGD server to the array.
# 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.
This section includes the following topics:
To use SGD with a proxy server, the proxy server must support tunneling. You can use HTTP, Secure (SSL) or SOCKS version 5 proxy servers.
For SOCKS version 5 proxy servers, SGD supports the Basic and No Authentication Required authentication methods. No server-side configuration is required.
To configure client proxy settings, you must configure proxy settings for both the HTTP connections and the AIP connections. How you do this is described in the following sections.
HTTP connections are the connections between the user’s browser and the SGD Web Server, for example to display a webtop. These connections always use the proxy settings configured for the browser.
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.
If the SGD Client is Integrated mode, and there are no proxy settings in the profile cache, the SGD Client attempts to make a direct connection.
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.
Note - If proxy server settings are defined in the Java Control Panel for the Sun Java Plug-in tool, these settings are used instead of the browser settings. |
Whenever client proxy server configuration is determined from a browser, you can use an automatic configuration script to automatically configure the proxy settings.
You specify the Uniform Resource Locator (URL) of the configuration script in the connection settings for the browser. The automatic configuration script must be written in JavaScript and have either a .pac file extension or no file extension. See Netscape Proxy Auto-Config File Format for details.
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 Plug-in 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 Plug-in 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 Plug-in 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.
Exception lists must always include the following entries:
localhost; 127.0.0.1
Proxy servers can drop a connection after a short period of time if there is no activity on the connection. By default, SGD sends AIP keepalive packets every 100 seconds to keep the connection open.
If you find that applications disappear after a short while, you might have to increase the frequency at which AIP keepalive packets are sent.
In the Administration Console, go to the Global Settings -> Communication tab and decrease the AIP Keepalive Frequency. Alternatively, use the following command:
$ 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.
You configure array routes by setting one or more filters that match client IP addresses to server-side proxy servers. Each filter has the format Client-IP-Pattern:type:host:port.
The Client-IP-Pattern can be either of the following:
A regular expression matching one or more client IP addresses, for example 192.168.10.*
A subnet mask expressed in the number of bits to match one or more client IP addresses, for example 192.168.10.0/22
The type is a connection type. Use CTSOCKS for a SOCKS version 5 connection. Use CTDIRECT to connect directly without using a proxy server.
The host and port are the DNS name, or IP address, and port of the proxy server to use for the connection.
SGD can be configured with several filters. The order of the filters is important because SGD uses the first matching Client‐IP‐Pattern.
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. |
The following is an example of array routes configuration:
"192.168.5.*:CTDIRECT:, \ 192.168.10.*.*:CTSOCKS:taurus.indigo‐insurance.com:8080, \ *:CTSOCKS:draco.indigo-insurance.com:8080:ssl" |
With this configuration, the following applies:
Clients with IP addresses beginning 192.168.5 have a direct connection.
Clients with IP addresses beginning 192.168.10 connect using the SOCKS proxy server taurus.indigo-insurance.com on port 8080.
All other clients connect using the SOCKS proxy server draco.indigo‐insurance.com on port 8080. These clients also connect using SSL before continuing with the SOCKS connection.
You can only configure array routes from the command line.
Ensure that no users are logged in to the SGD servers in the array and that there are no running application sessions, including suspended application sessions.
Configure the filters for array routes.
$ tarantella config edit \ --tarantella-config-array-netservice-proxy-routes routes |
Enclose routes in quotes, and separate each filter with a comma, for example:
The format of each filter is described in Configuring Server-Side Proxy Servers.
The order of the filters is important. The first match is used.
Restart every SGD server in the array.
You must restart every server in the array for array routes to take effect.
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.
This section includes the following topics:
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.
The following table lists the ports you might need to open to allow connections between client devices and SGD servers.
Source | Destination | Port | Protocol | Purpose |
---|---|---|---|---|
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.
If you enable SGD security services and use only HTTPS, only ports 443 and 5307 must be open in the firewall.
If it is not possible to open the required ports, you can use firewall traversal to direct all SGD traffic through a single port, usually port 443. See Using Firewall Traversal for details.
Ports 3144 and 5307 are registered with the Internet Assigned Numbers Authority (IANA) and are reserved for use only by SGD.
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.
The following table lists the ports you might need to open to allow connections between SGD Servers.
Source | Destination | Port | Protocol | Purpose |
---|---|---|---|---|
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. |
Port 5427 is registered with IANA and is reserved for use only by SGD.
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:
An SGD server must be able to connect to an application server in order to run applications.
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.
The following table lists the ports you might need to open to allow connections between SGD Servers and application servers.
Source | Destination | Port | Protocol | Purpose |
---|---|---|---|---|
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 needs to make connections to any authentication services and directory services you might be using.
The following table lists the ports you might need to open to allow connections between SGD Servers and other services.
Source | Destination | Port | Protocol | Purpose |
---|---|---|---|---|
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.
Ports 389 and 636 are only required if you are using an LDAP directory to establish a user’s identity or to assign applications to users. This applies to the following authentication mechanisms:
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 securing connections between client devices and SGD servers, the following connections must be considered:
HTTP connections. These are the connections between a browser and the SGD Web Server, used for authentication to SGD, and to display the webtop.
AIP connections. These are the connections between an SGD Client and an SGD server, used for displaying applications.
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.
This section includes the following topics:
You can set up secure client connections using automatic configuration or manual configuration.
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.
Setting up secure client connections with automatic configuration involves the following steps:
(Optional) Generate a Certificate Signing Request (CSR) and send it to a Certificate Authority (CA).
See How to Generate a Certificate Signing Request.
This step is optional if you obtain a server certificate without using the tarantella security certrequest command to generate a CSR, or if you want to enable security using a self-signed certificate.
Install a server certificate and enable security.
See Enabling SGD Security Services With Automatic Configuration.
(Optional) Configure connection definition processing.
Connection definitions enable you to determine which users receive secure connections.
Setting up secure client connections with manual configuration involves the following steps:
Obtain and install a certificate for each SGD server in the array.
To use secure connections, an SGD server must present a certificate to identify itself to an SGD Client.
Configure each SGD Web Server in the array to use HTTPS.
To secure the connections between a browser and an SGD Web Server, HTTPS connections must be enabled.
(Optional) Configure SGD for firewall traversal.
If it is not possible to open TCP port 5307 between client devices and SGD servers, use firewall traversal to give users access to SGD using a single port, usually port 443.
Configure the SOAP connections to use HTTPS.
Client applications, such as the SGD webtop, use the Simple Object Access Protocol (SOAP) protocol and HTTP to access the web services provided by an SGD server.
Enable SGD security services and restart SGD.
To enable secure connections, you must enable SGD security services and restart SGD.
(Optional) Configure connection definition processing.
Connection definitions enable you to determine which users receive secure connections.
A certificate is an encoded file that a secure service, such as a web server, uses to identify itself to a client. When security is enabled, an SGD server requires a certificate.
SGD supports Privacy Enhanced Mail (PEM) Base 64-encoded X.509 certificates. These certificates have the following structure:
-----BEGIN CERTIFICATE----- ...certificate... -----END CERTIFICATE-----
SGD supports the Subject Alternative Name (subjectAltName) extension for server certificates. This enables you to associate more than one DNS name with a certificate. If the subjectAltName field is present in a certificate, the subject field is ignored and only the subjectAltName is used. The 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.
A server certificate is issued by a CA. A CA is a trusted third party that digitally signs a server certificate using a CA, or root, certificate.
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 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.
SGD supports the use of certificate chains. With certificate chains, an Intermediate CA signs an certificate with a CA certificate that is issued by another CA.
If your server certificate is signed by an unsupported CA, or an Intermediate CA, you must install the CA certificate or certificate chain.
You can use a 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 a 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 certificate. See Obtaining and Installing a Server Certificate.
SGD enables you to create self-signed server certificates for test purposes, for example, while you are waiting to complete the registration requirements before the certificate can be generated.
Only use self-signed server certificates in a test environment because self-signed certificates are not truly secure. While a self-signed server certificate can be used to give users secure connections, users have no guarantee that the server they are connecting to is genuine.
You can create self-signed certificates with the following commands:
Obtaining and installing a certificate for an SGD server involves the following configuration steps:
(Optional) Generate a Certificate Signing Request (CSR) and send it to a CA.
See How to Generate a Certificate Signing Request.
If you already have a certificate for another product, such as a web server, you might be able to use that certificate. See Using a Certificate Obtained for Another Product.
Install the server certificate.
When a CA receives a CSR, they check the validity of the request, and return a signed certificate. You then install the certificate on the SGD server, see How to Install a Server Certificate.
To install a certificate obtained for another product, see How to Install a Certificate Obtained for Another Product.
(Optional) Install the CA certificate.
Perform this step only if the server certificate is signed by an unsupported CA, or an Intermediate CA, see Supported Certificate Authorities.
The certificates that must be installed are as follows:
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.
Use the tarantella security certrequest command to generate the CSR.
SGD supports the Subject Alternative Name (subjectAltName) extension for server certificates. This enables you to associate more than one DNS name with a certificate. See DNS Names for details.
SGD supports the use of the * wildcard for the first part of the domain name, for example *.indigo‐insurance.com.
Generating the CSR also creates the public and private key pair.
On the SGD server, the CSR is stored in the /opt/tarantella/var/tsp/csr.pem file, and the private key is stored in the /opt/tarantella/var/tsp/key.pending.pem file.
If you are replacing a server certificate, for example because it is about to expire, you can generate a CSR without affecting your current certificate.
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.
Either copy the CSR as output from the command line, or use the copy of the CSR that is stored in the /opt/tarantella/var/tsp/csr.pem file on the SGD server.
While you are waiting for the CA to return the server certificate, you can use the tarantella security selfsign command to create and install a self-signed certificate for test purposes. See Self-Signed Certificates for more details.
Use the following procedure to install a server certificate that was obtained by using the tarantella security certrequest command to generate a CSR.
Before you begin, ensure you have access to the server certificate. The certificate must be in PEM format.
Install the server certificate.
Use the tarantella security certuse command to install the certificate.
If you are replacing a server certificate, for example because the original certificate is about to expire, the tarantella security certuse command prompts you for confirmation before overwriting the certificate and private key.
When you install the server certificate, the private key stored in the /opt/tarantella/var/tsp/key.pending.pem file is moved to the /opt/tarantella/var/tsp/key.pem file.
If you specify the path to a file, you must specify the full path to the file.
The CSR, the certificate, and the private key are stored in the /opt/tarantella/var/tsp directory on the SGD server.
To install the certificate from standard input, use the following command:
# tarantella security certuse |
Paste the server certificate in to standard input and press Control+D.
To install the certificate from a temporary file, use the following command:
# tarantella security certuse < /tmp/cert |
To install the certificate from a permanent file, use the following command:
# tarantella security certuse --certfile /opt/certs/cert.pem |
Use the following procedure to install a certificate obtained without using the tarantella security certrequest command to generate a CSR.
To install a 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.
Copy the certificate and key file to a safe location on the SGD host that can only be accessed by superuser (root).
# 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 |
Decrypt the certificate’s private key.
Use the tarantella security decryptkey command.
# 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 |
Use the tarantella security certuse command to install the certificate.
When you specify the path to the certificate file and the key file, you must specify the full path.
# tarantella security certuse \ --certfile /opt/tarantella/var/tsp/boston.indigo‐insurance.com.pem \ --keyfile /opt/tarantella/var/tsp/boston.indigo-insurance.com.key.out |
Before you begin, ensure you have access to the CA certificate. The CA certificate must be in PEM format.
Before you begin, ensure that you have all the certificates in the CA certificate chain. The certificates must be in PEM format.
Combine all the certificates in the chain into a file.
For example, create a file called chainedcerts.pem.
The CA certificate used to sign the server certificate must appear first, for example:
-----BEGIN CERTIFICATE----- ...Intermediate CA’s certificate... -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- ...CA root certificate... -----END CERTIFICATE-----
Install the CA certificate chain.
Use the tarantella security customca command.
To install the CA certificate from standard input, use the following command:
# tarantella security customca |
Paste the CA certificate chain in to standard input and press Control+D.
To install the CA certificate from a file, use the following command:
# tarantella security certuse --rootfile /tmp/chainedcerts.pem |
Use the following procedure to replace the server certificate for an SGD server, for example because the original certificate is about to expire.
Obtain and install a new server certificate.
See Obtaining and Installing a Server Certificate for details.
Restart the SGD server and SGD Web Server.
You must restart the SGD server to ensure that the new server certificate is used for secure connections.
Ensure that no users are logged in to the SGD server and that there are no running application sessions, including suspended application sessions.
# tarantella restart |
The tarantella security enable command enables you to quickly configure and start SGD security services. You can only use this command if both of the following are true:
The SGD installation is a fresh installation and no attempt has been made to configure SGD security services.
The SGD server is not joined with other SGD servers in an array.
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).
The tarantella security enable command performs the following configuration:
Enables HTTPS connections to the SGD Web Server.
See Using HTTPS Connections to the SGD Web Server for details.
Configures the SGD server for firewall traversal.
See Using Firewall Traversal for details.
Secures the SOAP connections to the SGD server.
See Securing SOAP Connections to an SGD Server for details.
If you do not specify a server certificate to install, the tarantella security enable command creates and installs a self-signed certificate. If you want to install a server 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 certificate.
|
Before you begin, ensure you have access to the server certificate, and the private key and CA certificate, if needed. The certificates must be in PEM format.
Ensure that no users are logged in to the SGD server and that there are no running application sessions, including suspended application sessions.
Install a server certificate and enable SGD security services.
Use the tarantella security enable command to install a server certificate and enable SGD security services.
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 certificate, the private key is moved to the /opt/tarantella/var/tsp/key.pem file.
If you do not specify a server certificate to install, the tarantella security enable command generates a CSR, and then creates and installs a self-signed certificate. Only use a self-signed certificate for test purposes.
SGD supports a number of CAs by default. Only use the --rootfile option if the server certificate is signed by an unsupported CA, or by an Intermediate CA. See Supported Certificate Authorities for details.
If the server 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 certificate must appear first, for example:
-----BEGIN CERTIFICATE----- ...Intermediate CA’s certificate... -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- ...CA root certificate... -----END CERTIFICATE-----
If you specify the path to a certificate or key file, you must specify the full path to the file.
The CSR, the certificate, the private key, and the CA certificate are stored in the /opt/tarantella/var/tsp directory on the SGD server.
If the server certificate is signed by a supported CA, and the tarantella security certrequest command was used to generate a CSR, use the following command:
# tarantella security enable \ --certfile certificate-path |
If the server certificate is signed by a supported CA, and the tarantella security certrequest command was not used to generate a CSR, use the following command:
# tarantella security enable \ --certfile certificate-path --keyfile key-path |
If the server certificate is signed by an unsupported CA, or an Intermediate CA, use the following command:
# tarantella security enable \ --certfile certificate-path [--keyfile key-path] \ --rootfile CA-certificate-path |
To enable SGD security services with a self-signed certificate, use the following command:
# tarantella security enable |
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 certificate as the SGD server. This is configured in the Apache configuration file, /opt/tarantella/webserver/apache/2.2.8_openssl‑0.9.8g_jk1.2.25/conf/httpd.conf.
Note - You can use a separate certificate for the SGD Web Server if you prefer. |
Once a server 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. 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.
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.
If SGD is configured for firewall traversal, you cannot use any SGD features that depend on filtering the IP address of the client device. This means you cannot use the following features:
Multiple external DNS names – See Configuring External DNS Names
Multiple array routes – See Configuring Server-Side Proxy Servers
Connection definitions – See Using Connection Definitions
Configure each SGD Web Server in the array to bind to localhost and TCP port 443.
Log in as superuser (root) on the primary SGD server in the array.
Configure each SGD server in the array to use TCP port 443 for encrypted connections.
# tarantella config edit --array-port-encrypted 443 |
Tip - You can also configure the port in the Administration Console. Go to the Global Settings -> Communication tab. Type 443 in the Encrypted Connections Port field. |
Configure each SGD server in the array to forward HTTP traffic to the SGD Web Server.
# tarantella config edit --array \ --security-firewallurl https://127.0.0.1:443 |
Tip - You can also configure the port in the Administration Console. Select an SGD server and go to the Security tab. Type https://127.0.0.1:443 in the Firewall Forwarding URL field. |
Check that the firewall forwarding URL has taken effect for each SGD server in the array.
Use the following command to check each server:
# tarantella config list --server serv --security-firewallurl |
Client applications, such as the SGD webtop, use the SOAP protocol and HTTP to access the web services provided by an SGD server. You can use HTTPS to secure these connections.
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 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 certificate.
You must secure the SOAP connections to SGD in the following circumstances:
The client application is hosted on an SGD server that is configured for firewall traversal.
The client application is hosted on a different host to the SGD server.
Import CA certificates or certificate chains into the CA certificate truststore.
SGD supports a number of CAs by default. You only need to import CA certificates if the certificate for any SGD server in the array 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.
Configure the web services resources file for the client application.
Change to the shared resources directory.
# cd /opt/tarantella/webserver/tomcat/5.0.28_axis1.2 # cd shared/classes/com/tarantella/tta/webservices/client/apis |
Edit the Resources.properties file.
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.
This section contains information about securing SOAP connections to SGD from a client application that is hosted remotely. Typically this occurs in the following circumstances:
You relocate the SGD webtop to another JavaServer Pages (JSP) container
You develop your own client applications, using a relocated SGD com.tarantella.tta.webservices.client.views package
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.
To secure the SOAP connections from remote hosts, you configure the following:
On the remote host, you might have to import CA certificates into the Java Runtime Environment (JRE) truststore for your JSP container. This truststore used for the HTTPS connections from the client application to the SGD server, and enables the client application to validate the certificate presented by an SGD server.
You must ensure that the JRE truststore contains the CA certificate used to sign the certificate for any SGD server in the array. If a server 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.
How you import certificates, and the truststore used, depends on the JSP container.
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 truststore for your JSP 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 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.
Once you have added the certificates, add the details of the JRE truststore on the remote host to the Resources.properties file, by adding the following lines:
keystore=keystore-path keystorepass=password
After changing the Resources.properties file, you must restart your JSP container. You must also make sure the web server is configured to accept HTTPS connections and restart it.
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 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.
You enable SGD security services from the command line.
When you first enable security services, you must restart all the SGD servers and the SGD web servers in the array. Once security is enabled, security services are available whenever SGD restarts.
If you change your SGD configuration, for example by enabling firewall traversal or by installing a new server certificate, you must restart the SGD server and the SGD Web Server.
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:
If SGD security services are not enabled on an SGD server, secure connections to that server are not available regardless of the user’s connection definitions.
![]() | 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. |
To use connection definitions, you must do the following:
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.
For example, the user profile object for Elizabeth Blue has the following connection definitions:
Client Device Address | SGD Server Address | Connection Type |
---|---|---|
*.example.com | * | Standard |
* | * | Secure |
If Elizabeth logs in to SGD from her usual client device, sales1.example.com, the first connection definition in the list matches and Elizabeth receives a standard connection.
If Elizabeth logs in to SGD from a client device that is not part of example.com, the second connection definition in the list matches and Elizabeth receives a secure connection.
If Elizabeth had no connection definitions, the connection type is determined by the connection definitions of a parent object in the organizational hierarchy.
In the Administration Console, go to the User Profiles tab and select the object you want to configure.
It is best to configure connection definitions for organization and organizational unit objects as this configures connections definitions for many users at once and makes administration easier.
DNS names or IP addresses in a connection definition can include the * or ? wildcards.
In the Client Device Address field, type an IP address or DNS name.
In the Secure Global Desktop Server Address, type an IP address or DNS name.
The Add New Connection Definition window closes and the connection definition is added to the Connection Definitions table.
Add further connection definitions as needed.
The Connection Definitions table also shows the definitions that are inherited from parent objects in the organizational hierarchy.
Use the Move Up and Move Down buttons to change the order of the connection definitions.
The order of the connection definitions is important. The first matching entry is used. Make sure the most specific definitions appear before more general ones.
When using secure connections between client devices and SGD, users see some or all of the following security warnings:
Note - Users might see these warnings even if SGD security services are not enabled. This is because the initial connection between an SGD Client and an SGD server is always secure. |
This section describes why these warnings occur and what you can do about them.
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 certificate is not available in the browser’s certificate store. To enable the web server 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 Plug-in tool might also warn users about the web server’s certificate. This depends on the configuration in the Java Control Panel. By default, the Java Plug-in tool is configured to use the certificates in the browser certificate store. If the Plug-in tool is not configured to do this, you might have to import the CA or root certificate using the Java Control Panel.
When a user logs in to an SGD server that has a server certificate, the SGD Client validates the certificate before proceeding.
If there is a problem with a server certificate, users see a security warning message. The security warning message enables users to view the certificate details before deciding to accept the certificate permanently or temporarily, or to reject the certificate. FIGURE 1-3 shows an example security warning message.
If users reject the certificate, the connection to SGD is terminated.
If users accept the certificate temporarily, and they agree to the initial connection, the certificate details are cached for the lifetime of the user session. When users next log in, they are prompted about the certificate again. If users accept the certificate permanently, and they agree to the initial connection, they are not prompted about the certificate again. For details about agreeing to the initial connection, see Untrusted Initial Connection Warnings.
Users see security warnings about certificates in the following circumstances:
Invalid dates – The current date is earlier than the Not Before date in the certificate, or the current date is later than the Not After date in the certificate
Incorrect host name – The name of the host the SGD Client is connecting to does not match the Subject or Subject Alt Name in the certificate
Issuer unknown – The certificate is signed by an unsupported CA
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 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 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.
When a user agrees to a connection to an SGD server, and the server certificate is valid, the server certificate is added to the certstore.pem file on the client device.
If there is a problem with the server certificate, for example because it is signed by an unsupported CA, users see a certificate security warning, as described in SGD Server Certificate Security Warnings. If a user permanently accepts the certificate, or the certificate and its CA chain, and agrees to the connection to an SGD server, the certificate is added to the certstore.pem file on the client device. When the user next logs in, they are not prompted about the certificate. If a user accepts the certificate temporarily, and they agree to the connection to an SGD server, the certificate is not added to the certstore.pem file on the client device. When the user next logs in, they are prompted about the certificate.
If there is a problem with the connection, for example because the server certificate has changed, a Potentially Unsafe Connection message displays, as shown in FIGURE 1-5.
To ensure that users only connect to SGD servers that are trusted, SGD Administrators can do the following:
Explain to users the security implications of agreeing to a connection to an SGD server.
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 known 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 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> |
Issuer unknown security warnings occur when the server certificate for an SGD server is issued by an unsupported CA. The warning displays because the issuer of certificate cannot be validated.
The easiest way to avoid issuer unknown security warnings is to ensure that a server certificate is signed by a supported CA. See Supported Certificate Authorities for details.
To enable the 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 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 certificate to the certstore.pem file on the client device. The server certificate is stored in the /opt/tarantella/var/tsp/cert.pem file on each SGD server.
The SSL Daemon is the SGD component that handles secure connections between SGD Clients and SGD servers. On the SGD host, the SSL Daemon is listed as one or more ttassl processes.
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.
SSL Daemon tuning is specific to each SGD server. You have to tune each server individually.
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.
![]() | Caution - Once an SSL Daemon process is started, it continues to run even if the load reduces. |
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.
Ensure that no users are logged in to the SGD server and that there are no running application sessions, including suspended application sessions.
Change the minimum number of SSL Daemon processes.
# tarantella config edit \ --tarantella‐config‐ssldaemon‐minprocesses num |
Change the maximum number of SSL Daemon processes.
# tarantella config edit \ --tarantella‐config‐ssldaemon‐maxprocesses num |
You must restart the SGD server for the change to take effect.
Ensure that no users are logged in to the SGD server and that there are no running application sessions, including suspended application sessions.
Ensure that no users are logged in to the SGD server and that there are no running application sessions, including suspended application sessions.
Change the maximum number of SSL Daemon restart attempts.
# tarantella config edit \ --tarantella‐config‐ssldaemon‐maxrestarts num |
The default maximum number is 10. Setting the number of restart attempts to -1 means there is no limit on the number of restart attempts.
You must restart the SGD server for the change to take effect.
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 is a set of cryptographic algorithms used for the following:
Key exchange – Protects the information required to create shared keys
Bulk encryption – Encrypts messages exchanged between clients and servers
Message authentication – Generates message hashes and signatures to ensure the integrity of a message
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.
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.
By default, the SGD Client uses the RSA_WITH_AES_256_CBC_SHAcipher suite.
|
Ensure that no users are logged in to the SGD servers in the array and that there are no running application sessions, including suspended application sessions.
Log in as superuser (root) on the primary SGD server in the array.
# tarantella config edit \ --tarantella-config-security-ciphers cipher-suite ... |
where cipher-suite is the OpenSSL Name of a cipher suite.
If you specify more than one cipher-suite, use a colon-separated list.
Restart all the SGD servers in the array.
You must restart the SGD servers for the change to take effect.
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 certificates.
To use an external SSL accelerator with SGD, do the following:
Install the security certificate for each SGD server in the array on the external SSL accelerator
Configure the external SSL accelerator to decrypt SSL connections and forward them as unencrypted connections to SGD
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:
Communication only takes place between SGD servers that have authenticated to each other
Data can be checked to ensure that it has not changed during transmission
Using SSL in this way is known as secure intra-array communication.
Using secure intra-array communication means that each SGD server in the array has to have a valid server certificate that has been signed by a trusted certificate authority (CA).
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 server certificate and a private key. The server 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 these 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 server peer certificates to distinguish them from other types of server 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 server peer certificate as part of the SSL negotiation. The connecting server evaluates the certificate and checks the following:
The CN of the certificate matches the peer DNS name of the connecting server
The issuer of the certificate, which must be the CA certificate of the primary
If the certificate is valid, a secure connection is established.
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 server peer certificates to the members of the array. Whenever there is a change in the array structure, SGD automatically updates the CA and server peer certificates. The following table summarizes what happens.
Array Change | Action |
---|---|
Server joins the array | |
Server leaves the array | |
New primary server appointed |
SGD Administrators can use the tarantella security peerca --show command to view certificates in the truststore. The truststore contains the primary SGD server’s CA certificate.
Ensure that no users are logged in to the SGD servers in the array and that there are no running application sessions, including suspended application sessions.
You can only enable secure intra-array communication from the command line.
If secure intra-array communication is not enabled for an array, you must dismantle the array, enable secure intra-array communication on each SGD server, and then rebuild the array.
Enable secure intra-array communication.
Secure intra-array communication can only be enabled on an SGD server that is not joined with other SGD servers in an array.
You enable secure intra-array communication for an SGD server as follows.
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.
Only add one server to an array at a time.
When secure intra-array communication is enabled, you add an SGD server to an array as follows.
Log in as superuser (root) on the SGD server that you want to add to the array.
Display the fingerprint of the SGD server’s CA certificate.
# tarantella security peerca --show |
Make a note of the fingerprint of the SGD server’s CA certificate.
Log in as superuser (root) on the primary SGD server in the array.
Join the SGD server to the array as a secondary server.
Use the following command to add the SGD server.
# tarantella array join --secondary serv |
You are prompted to trust the secondary SGD server’s CA certificate, and the fingerprint of the certificate is displayed.
Check that the fingerprint is correct and complete the array join.
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.
If the fingerprints match, complete the array join by accepting the secondary SGD server’s CA certificate.
Check the status of the array.
Use the tarantella status command to check the status of the array.
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 is a set of cryptographic algorithms used for the following:
Key exchange – Protects the information required to create shared keys
Bulk encryption – Encrypts messages exchanged between clients and servers
Message authentication – Generates message hashes and signatures to ensure the integrity of a message
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.
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.
By default, the SGD uses the RSA_WITH_AES_256_CBC_SHA cipher suite.
|
Ensure that no users are logged in to the SGD servers in the array and that there are no running application sessions, including suspended application sessions.
SGD can use SSH to provide secure connections between SGD servers and application servers. SSH provides the following benefits:
All communication between application servers and SGD servers using SSH is encrypted, including the X protocol if you are running X applications
User names and passwords are always encrypted before being transmitted over the network
This section includes the following topics:
SGD works with SSH version 2.x or later. Because of SSH version compatibility problems, use the same major version of SSH, either version 2 or version 3, on all SGD hosts and application servers.
SGD can automatically detect that SSH is installed on the SGD host if SSH is installed in one of the following directories:
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 application server using SSH, the following must be true:
SSH must be installed on the SGD host and on the application server
The application object’s Connection Method attribute must be ssh
To connect to an X application using SSH, you must enable X11 forwarding. See Enabling X11 Forwarding for details.
When using SSH with SGD, you can configure the command-line arguments used by the SSH client. The arguments can be configured globally, for individual applications, or a combination of both.
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.
You can combine the global and application SSH client configuration to set the path to the SSH client and set the command-line arguments.
Note - If you do this, any global command-line arguments are ignored. |
The following table shows the effect of global and application configuration on the ssh command used.
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 |
Ensure that no users are logged in to the SGD server and that there are no running application sessions, including suspended application sessions.
Set the TTASSHCLIENT environment variable.
Include the full path to the SSH client program and any required command‐line arguments. For example:
# TTASSHCLIENT="/usr/local/bin/ssh -q -X"; export TTASSHCLIENT |
To display X applications using SGD using an SSH connection, you must enable X11 forwarding.
Configure the SSH client to use the -X command-line argument.
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 xsecurity extension used on your server. You enable IP version 4 mode by editing your system SSH configuration file. For example:
On SUSE Linux, edit the /etc/sysconfig/ssh file and add the following line:
SSHD_OPTS="-4"
On Red Hat Enterprise Linux, edit the /etc/sysconfig/sshd file and add the following line:
OPTIONS="-4"
Note - If the SSH configuration file does not exist on your system, you can create it. |
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.
To use advanced SSH functions, you must make the SGD ttasshhelper application a setuid root process. You do this by running the following commands as superuser (root) on each SGD server in the array:
# chown root /opt/tarantella/bin/bin/ttasshhelper # chmod 4510 /opt/tarantella/bin/bin/ttasshhelper |
![]() | Caution - If you make these changes, you must protect your SGD servers from unauthorized access. |
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.
Copyright © 2008, Sun Microsystems, Inc. All rights reserved.