本章说明如何使用 Netlet 在用户远程桌面与内联网中运行应用程序的服务器之间安全地运行应用程序。若要配置 Netlet,参见第 11 章,配置 Netlet。
本章包含以下各节:
Sun Java System Portal Server 软件用户可能希望在其远程桌面上以安全方式运行一些流行的或公司专用的应用程序。通过在您的平台上设置 Netlet,可提供对这些应用程序的安全访问。
Netlet 使得用户可以在不安全的网络(如 Internet)上安全地运行常用 TCP/IP 服务。您可以运行 TCP/IP 应用程序(如 Telnet 和 SMTP)、HTTP 应用程序和任何使用固定端口的应用程序。
如果应用程序基于 TCP/IP 或使用固定端口,则可以在 Netlet 上运行该应用程序。
仅当使用 FTP 时才支持动态端口。要使用 Microsoft Exchange,请使用 OWA (Outlook Web Access)。
请确保通知您的用户在使用 Netlet 时,必须禁用其浏览器中的弹出窗口阻止程序选项。
Netlet 使用的各种组件如 Netlet 组件中所示。
这是 Netlet applet 在其上进行侦听的客户机中的端口。客户机为 localhost。
Netlet applet 负责在远程客户机与内联网应用程序(如 Telnet、Graphon 或 Citrix)之间设置加密 TCP/IP 隧道。applet 将信息包加密,并将其发送至网关,然后解密来自网关的响应信息包,并将其发送至本地应用程序。
对于静态规则,当用户登录到门户时,将自动下载 Netlet applet。对于动态规则,当用户单击对应于动态规则的链接时,会下载 applet。有关静态和动态规则的详细信息,参见规则类型。
要在 Sun Ray 环境下运行 Netlet,参见在 Sun Ray 环境中运行 Netlet。
Netlet 规则会将需要在客户机上运行的应用程序映射到相应的目标主机中。这意味着 Netlet 仅适用于发送至在 Netlet 规则中所定义端口中的信息包。这将确保更高的安全性。
作为管理员,您需要为 Netlet 的运行配置特定规则。这些规则指定各种细节,如要使用的密码、要调用的 URL、要下载的 applet、目标端口以及目标主机。当客户机上的用户通过 Netlet 提出请求时,这些规则有助于确定建立连接必须采用的方式。有关详细信息,参见定义 Netlet 规则。
这是 Netlet 的 UI 组件。提供者允许用户从 Portal Server 桌面配置所需的应用程序。提供者中创建了一个链接,用户单击此链接可运行所需的应用程序。用户也可在 Netlet 提供者的桌面上指定动态规则的目标主机。参见定义 Netlet 规则。
网关可确保远程客户机与网关之间的隧道安全。Netlet 代理是可选的,在安装期间可以选择不安装此代理。有关 Netlet 代理的信息,参见使用 Netlet 代理。
Netlet 的使用涉及下列一系列事件:
远程用户登录至 Portal Server 桌面。
如果已为用户、角色或组织定义了静态 Netlet 规则,则自动将 Netlet applet 下载到远程客户机中。
如果已为用户、角色或组织定义了动态规则,则用户需要在 Netlet 提供者中配置所需的应用程序。当用户单击 Netlet 提供者中的应用程序链接时,将下载 Netlet applet。有关静态和动态规则的详细信息,参见定义 Netlet 规则。
Netlet 将侦听在 Netlet 规则中定义的本地端口。
Netlet 将在远程客户机与主机之间通过 Netlet 规则中指定的端口而设置一个频道。
为了使 Netlet 能够根据不同组织中各个用户的需要进行工作,您需要完成以下操作:
根据用户要求,确定需要创建静态规则还是动态规则。参见规则类型。
从 Portal Server 管理控制台配置 Netlet 服务的选项。有关配置 Netlet 的信息,参见第 11 章,配置 Netlet。
确定规则应基于组织、角色还是用户,并按要求在每一级别进行修改。有关组织、角色和用户的详细信息,参见《Portal Server 管理指南》。
请勿本地化 srapNetletServlet.properties 文件中框架集参数的值。
有时,URL 会返回一个页面,该页面包含需要从远程机器获取的嵌入式 applet。但是,Java 安全性只允许 applet 与从自己中下载的主机进行通信。要允许 applet 通过本地网络端口与网关进行通信,您需要检查 Access Manager 管理控制台上的“下载 Applet”字段,并指定以下语法:
local-port:server-host:server-port
其中
local-port 是 Netlet 侦听来自 applet 的通信量的本地端口
server-host 是下载 applet 之处
server-port 是用于下载 applet 的端口
Netlet 配置由 Netlet 规则定义,这些规则使用“Secure Remote Access”配置选项卡下的 Portal Server 管理控制台进行配置。可以为组织、角色或用户配置 Netlet 规则。如果为角色或用户配置 Netlet 规则,请在选择组织后选择所需的角色或用户。
Netlet 规则不支持多字节条目。请勿为 Netlet 规则中的任何字段指定多字节字符。
Netlet 规则不可包含任何高于 64000 的端口号。
定义 Netlet 规则列出了 Netlet 规则中的字段。
表 6–1 Netlet 规则中的字段
参数 |
描述 |
值 |
---|---|---|
规则名称 |
指定 Netlet 规则的名称。需要为每一规则指定一个唯一的名称。这在定义用户对指定规则的访问权限时是很有用的。 | |
加密密码 |
定义加密密码,或指定用户可从中进行选择的密码列表。 |
您所选择的密码会以列表形式出现在 Netlet 提供者中。用户可从选定列表中选择所需的密码。 默认值 - 使用在 Netlet 管理控制台中指定的“默认 VM 本地密码”和“默认 Java 插件密码”。 |
远程应用程序 URL |
指定当用户在 Netlet 提供者中单击相关链接时浏览器所打开的 URL。浏览器打开应用程序的窗口,并连接到本地端口号(稍后在规则中指定)处的 localhost。 您需要指定相关的 URL。 |
由 Netlet 规则所调用的应用程序的 URL。例如,telnet://localhost:30000。 如果应用程序使用 applet 调用应用程序,请指定一个 URL。 null– 如果应用程序不是由 URL 启动或由桌面控制,请设定此值。对于不基于网络的应用程序而言该项通常为 true。 |
启用下载 Applet |
指示是否有必要为本规则下载 applet。 |
|
启用扩展会话 |
当 Netlet 处于活动状态时,它控制 Portal Server 会话的空闲超时。 |
仅当 Netlet 处于活动状态而其余门户应用程序空闲时,才选中此复选框以保持门户会话处于活动状态。默认情况下,不会选择此选项。 |
将本地端口映射至目标服务器端口 |
本地端口 |
Netlet 进行侦听的客户机上的端口。 local-port 的值必须是唯一的。不能在一个以上的规则中指定特定端口号。 如果要为多个连接指定多台主机,需指定多个本地端口。有关语法,参见具有多个主机连接的静态规则。 对于 FTP 规则,本地端口值必须是 30021。 |
目标主机 |
Netlet 进行侦听的客户机上的端口。 Netlet 连接的收件人。 host - 接收 Netlet 连接的主机名。它用于静态规则中。使用简单主机名(如 siroe)或全限定 DNS 样式的主机名(如 siroe.mycompany.com)。由于以下原因,指定多个主机: local-port 的值必须是唯一的。不能在一个以上的规则中指定特定端口号。 如果要为多个连接指定多台主机,需指定多个本地端口。有关语法,参见具有多个主机连接的静态规则。 对于 FTP 规则,本地端口值必须是 30021。 与指定的每一台主机建立连接。需要为指定的每一台主机指定相应的客户机与目标端口。有关语法,参见具有多个主机连接的静态规则。 尝试连接到指定主机列表中的任何一台可用主机。有关语法,参见具有多主机选择的静态规则。 TARGET - 在语法中指定 TARGET 的规则为动态规则。TARGET 表示最终用户可在桌面 Netlet 提供者中指定一台或多台所需的目标主机。 单个规则中不能同时具有静态主机和 TARGET。 |
|
目标端口 |
目标主机上的端口 除主机与目标主机外,还必须要指定一个目标端口。 在有多台目标主机的情况下,可以指定多个目标端口。以 port1+port2+port3-port4+port5 格式指定多个端口。 端口号之间的加号 (+) 表示某单一目标主机的备选端口。 端口号之间的减号 (-) 是不同目标主机端口号之间的分隔符。 在此,Netlet 按顺序依次使用 port1、port2 和 port3,以尝试连接到指定的第一台目标主机。如果失败,Netlet 使用 port4 和 port5(按此顺序)以尝试连接到第二台主机。 只可为静态规则配置多个端口。 |
对于要从 Portal Server 获得会话通知的网关,将以下内容:
com.iplanet.am.jassproxy.trustAllServerCerts=true
添加到 Portal Server 上的以下属性文件中:
Portal Server 上的 /etc/opt/SUNWam/config/AMConfig.instance-name .properties
根据规则中目标主机的指定方式,将 Netlet 规则分为两种类型。
静态规则将目标主机指定为规则的一部分。如果创建静态规则,用户就无权指定所需的目标主机。在下面的示例中,sesta 是目标主机。
规则名称 |
加密密码 |
URL |
启用下载 Applet |
启用扩展会话 |
将本地端口映射至目标服务器端口 |
---|---|---|---|---|---|
ftpstatic |
SSL_RSA_WITH_RC 4_128_MD5 |
null |
false |
true |
|
可为静态规则配置多台目标主机和多个端口。有关示例,参见具有多个主机连接的静态规则。
在动态规则中,不会将目标主机指定为规则的一部分。用户可以在 Netlet 提供者中指定所需的目标主机。在下面的示例中,TARGET 是目标主机的占位符。
规则名称 |
加密密码 |
远程应用程序 URL |
启用下载 Applet |
启用扩展会话 |
将本地端口映射至目标服务器端口 |
---|---|---|---|---|---|
ftpdynamic |
SSL_RSA_WIT H_RC4_128_MD5 |
null |
选中复选框 |
选中复选框 |
|
根据加密密码,可将 Netlet 规则进一步分类如下:
用户可配置密码规则 - 在此规则中,您可以指定一个用户可从中进行选择的密码列表。这些可选密码以列表形式出现在 Netlet 提供者中。用户可从该列表中选择所需的密码。在下面的示例中,用户可从多个密码中进行选择。
规则名称 |
加密密码 |
远程应用程序 URL |
启用下载 Applet |
启用扩展会话 |
将本地端口映射至目标服务器端口 |
---|---|---|---|---|---|
Telnet |
SSL_RSA_WITH_RC4 _128_SHA |
null |
选中复选框 |
选中复选框 |
|
SSL_RSA_WITH_RC4 _128_MD5 |
尽管 Portal Server 主机可能启用了多个不同的密码,但用户可以只从作为 Netlet 规则一部分而配置的密码列表中进行选择。
有关 Netlet 所支持的密码列表,参见支持的密码。
规则名称 |
加密密码 |
远程应用程序 URL |
启用下载 Applet |
启用扩展会话 |
将本地端口映射至目标服务器端口 |
---|---|---|---|---|---|
Telnet |
SSL_RSA_WITH_RC4_128_MD5 |
null |
选中复选框 |
选中复选框 |
|
有关 Netlet 所支持的密码列表,参见支持的密码。
支持的密码列出了 Netlet 支持的密码。
表 6–2 支持密码的列表
密码 |
---|
本机 VM 密码 |
KSSL_SSL3_RSA_WITH_3DES_EDE_CBC_SHA |
KSSL_SSL3_RSA_WITH_RC4_128_MD5 |
KSSL_SSL3_RSA_WITH_RC4_128_SHA |
KSSL_SSL3_RSA_EXPORT_WITH_RC4_40_MD5 |
KSSL_SSL3_RSA_WITH_DES_CBC_SHA |
Java 插件密码 |
SSL_RSA_WITH_3DES_EDE_CBC_SHA |
SSL_RSA_WITH_RC4_128_MD5 |
SSL_RSA_WITH_RC4_128_SHA |
SSL_RSA_EXPORT_WITH_RC4_40_MD5 |
SSL_RSA_WITH_DES_CBC_SHA |
SSL_RSA_WITH_NULL_MD5 |
TLS_RSA_WITH_AES_128_CBC_SHA |
TLS_RSA_WITH_AES_256_CBC_SHA |
Portal Server 的早期版本不支持将密码作为 Netlet 规则的一部分。考虑到不带密码的现有规则的向后兼容性,这些规则将使用默认密码。不带密码的现有规则,如:
规则名称 |
加密密码 |
远程应用程序 URL |
启用下载 Applet |
启用扩展会话 |
将本地端口映射至目标服务器端口 |
---|---|---|---|---|---|
Telnet |
telnet://localhost:30000 |
请勿选中复选框 |
选中复选框 |
|
会被解释为:
规则名称 |
加密密码 |
远程应用程序 URL |
启用下载 Applet |
启用扩展会话 |
将本地端口映射至目标服务器端口 |
---|---|---|---|---|---|
Telnet |
默认密码 |
telnet://localhost:30000 |
请勿选中复选框 |
选中复选框 |
|
这与将“加密密码”字段选为“默认值”的“管理员配置规则”相似。
本部分包含 Netlet 规则的几个示例以说明 Netlet 语法的作用机理。
该规则支持客户机与 sesta 机器之间的 Telnet 连接。
规则名称 |
加密密码 |
远程应用程序 URL |
下载 Applet |
扩展会话 |
将本地端口映射至目标服务器端口 |
---|---|---|---|---|---|
myrule |
SSL_RSA_WITH_RC4_128_MD5 |
null |
请勿选中复选框 |
true |
|
其中
myrule 是规则名称。
SSL_RSA_WITH_RC4_128_MD5 表示要使用的密码。
null 表示该应用程序并非由 URL 调用或通过桌面运行。
false 表示客户机并不会下载 applet 以运行该应用程序。
true 表示当 Netlet 连接处于活动状态时 Portal Server 不应超时。
1111 是客户机上的端口,Netlet 在此侦听来自目标主机的连接请求。
sesta 是 Telnet 连接中的收件人主机名称。
23 是目标主机上用于连接的端口号,在本例中为众所周知的 Telnet 端口。
桌面 Netlet 提供者不显示链接,但 Netlet 会自动启动,并侦听指定端口 (1111)。指示用户启动客户机软件 - 此情况下为连接至端口 1111 上的 localhost 的 Telnet 会话。
例如,要启动 Telnet 会话,客户需要在终端的 UNIX 命令行中键入以下内容:
telnet localhost 1111 |
该规则支持从客户机到两台机器 sesta 和 siroe 的 Telnet 连接。
规则名称 |
加密密码 |
远程应用程序 URL |
启用下载 Applet |
启用扩展会话 |
将本地端口映射至目标服务器端口 |
---|---|---|---|---|---|
myrule |
SSL_RSA_WITH_RC4_128_MD5 |
null |
请选中复选框 |
选中复选框 |
|
其中
23 是目标主机上用于连接的端口号 – Telnet 的专用端口。
1111 是客户机上的端口,Netlet 在此侦听来自第一台目标主机 sesta 的连接请求。
1234 是客户机上的端口,Netlet 在此侦听来自第二台目标主机 siroe 的连接请求。
该规则中的前六个字段与基本静态规则中相同。区别在于标识第二台目标主机的另外三个字段。
在向规则中添加附加目标时,必须为每一台新目标主机添加三个字段,即本地端口、目标主机和目标端口。
您可以用多组三字段来描述与每一目标主机的连接。如果远程客户机是基于 UNIX 的,切不可使用小于 2048 的侦听端口号,因为编号较低的端口将受限制,而且您必须是根用户才能启动侦听器。
该规则与前一规则作用相同。Netlet 提供者不显示任何链接,但 Netlet 会自动启动,并侦听指定的两个端口(1111 和 1234)。用户需要启动客户机软件(在本例中为 Telnet 会话,它连接至端口 1111 上的 localhost 或端口 1234 上的 localhost)以连接到第二个示例中的主机。
使用该规则可指定多台备选主机。如果与规则中第一台主机的连接失败,Netlet 会尝试连接指定的第二台主机,依此类推。
规则名称 |
加密密码 |
远程应用程序 URL |
启用下载 Applet |
启用扩展会话 |
将本地端口映射至目标服务器端口 |
---|---|---|---|---|---|
gojoe |
SSL_RSA_WITH_RC4_128_MD5 |
/gojoe.html |
|
选中复选框 |
|
其中
10491 是客户机上的端口,Netlet 在此侦听来自目标主机的连接请求。
依据可用的端口,Netlet 将首先尝试与端口 35、端口 26 和端口 491 上的 siroe 建立连接(均按相同顺序)。
如果无法连接到 siroe,则 Netlet 会尝试连接到端口 35 和 491 上的 sesta(按相同顺序)。
主机之间的加号 (+) 表示备选主机。
端口号之间的加号 (+) 表示某单一目标主机的备选端口。
端口号之间的减号 (-) 是不同目标主机端口号之间的分隔符。
会尝试顺次连接到链条中提供的主机。例如,如果规则为 siroe+ sesta,则会首先尝试连接到 siroe。如果连接失败,则会尝试连接到 sesta。如果规则中首先列出的主机无法在活动的网络中实际使用,则连接到下一个可用主机所需花费的时间将会随着规则中不可用主机数的增加而增加。
该规则允许用户配置所需的目标主机,从而使用户可通过 Netlet 远程登录到各个主机上。
规则名称 |
加密密码 |
远程应用程序 URL |
启用下载 Applet |
启用扩展会话 |
将本地端口映射至目标服务器端口 |
---|---|---|---|---|---|
myrule |
SSL_RSA_WITH_RC4_128_MD5 |
telnet://localhost:30000 |
请勿选中复选框 |
选中复选框 |
|
其中
myrule 是规则名称。
SSL_RSA_WITH_RC4_128_MD5 表示要使用的密码。
telnet://localhost:30000 是由规则所调用的 URL。
false 表示将不会下载任何 applet。
Extend Session (true) 表示当 Netlet 连接处于活动状态时 Portal Server 不应超时。
30000 是客户机上的端口,Netlet 在此侦听针对此规则的连接请求。
TARGET 表示使用 Netlet 提供者的用户需要配置的目标主机。
23 是由 Netlet 打开的目标主机上的端口,在本例中为众所周知的 Telnet 端口。
添加该规则之后,用户必须要完成一些步骤才能使 Netlet 按照预期方式运行。用户需要在客户机端执行以下操作:
在标准 Portal Server 桌面的 Netlet 提供者部分单击“编辑”。
在“添加新目标”部分的“规则名称”下面会列出新的 Netlet 规则。
选择规则名称,并键入目标主机的名称。
保存更改。
用户返回桌面,同时在 Netlet 提供者部分会看到新的链接。
单击新链接。
将会启动一个新的浏览器,转至 Netlet 规则中给出的 URL。
通过重复以上步骤可以为同一规则添加多台目标主机。只有选定的最后一个链接是活动的。
此规则定义了从客户机到动态分配主机的连接。它会从 applet 所处的服务器上将 GO-Joe applet 下载到客户机中。
规则名称 |
加密密码 |
远程应用程序 URL |
启用下载 Applet |
扩展会话 |
将本地端口映射至目标服务器端口 |
---|---|---|---|---|---|
gojoe |
SSL_RSA_WITH_RC4_128_MD5 |
/gojoe.html |
|
选中复选框 |
|
其中
gojoe 是规则名称。
SSL_RSA_WITH_RC4_128_MD5 表示要使用的密码。
例如,/gojoe.html 是包含 applet 的 HTML 页的路径,该路径应相对于部署门户的 Web 容器文档根目录。
8000:server:8080 指明端口 8000 是客户机上用于接收 applet 的目标端口,gojoeserve 是提供 applet 的服务器的名称,8080 则是自其下载 applet 的服务器上的端口。
Extended Session (true) 表示当 Netlet 连接处于活动状态时 Portal Server 不应超时。
3399 是客户机上的端口,Netlet 在此侦听此类型的连接请求。
TARGET 表示使用 Netlet 提供者的用户需要配置的目标主机。
58 是由 Netlet 打开的目标主机上的端口,在本例中为 GoJoe 的端口。端口 58 是目标主机侦听其自身通信量的端口。Netlet 将信息从新 applet 传递至该端口。
Netlet 规则示例列出了一些常见应用程序的 Netlet 规则示例。
该表由 7 列组成,分别对应于 Netlet 规则中的以下字段:规则名称、URL、下载 Applet、本地端口、目标主机、目标端口。最后一列中包括对规则的描述。
Netlet 规则示例未列出 Netlet 规则的“密码”和“扩展会话”字段。对于所提供的示例,假定这两个字段分别为 "SSL_RSA_WITH_RC4_128_MD5" 和 "true"。
netlet applet 或 jws 的客户端日志会在客户端的 java 控制台上显示。
netlet 的服务器端日志在 /var/opt/SUNWportal/portals/<portal_ID>/logs/<INSTANCE_ID> 目录下的 portal.0.0.log 文件中显示。
如果您要在 Sun Ray 环境中运行需要将 applet 下载到客户机上的应用程序,就需要更改 HTML 文件。这里是一个示例文件,向您显示需要完成的必要修改。
<!-- @(#)citrix_start.html 2.1 98/08/17 Copyright (c) 1998 i-Planet, Inc., All rights reserved.--> <html> <script language="JavaScript"> var KEY_VALUES; // KEY_VALUES[\qkey\q] = \qvalue\q; function retrieveKeyValues() { KEY_VALUES = new Object(); var queryString = \q\q + this.location; queryString = unescape(queryString); queryString = queryString.substring((queryString.indexOf(\q?\q)) + 1); if (queryString.length < 1) { return false; } var keypairs = new Object(); var numKP = 0; while (queryString.indexOf(\q&\q) > -1) { keypairs[numKP] = queryString.substring(0,queryString.indexOf(\q&\q)); queryString = queryString.substring((queryString.indexOf(\q&\q)) + 1); numKP++; } // Store what\qs left in the query string as the final keypairs[] data. keypairs[numKP++] = queryString; var keyName; var keyValue; for (var i=0; i < numKP; ++i) { keyName = keypairs[i].substring(0,keypairs[i].indexOf(\q=\q)); keyValue = keypairs[i].substring((keypairs[i].indexOf(\q=\q)) + 1); while (keyValue.indexOf(\q+\q) > -1) { keyValue = keyValue.substring(0,keyValue.indexOf(\q+\q)) + \q \q + keyValue.substring(keyValue.indexOf(\q+\q) + 1); } keyValue = unescape(keyValue); // Unescape non-alphanumerics KEY_VALUES[keyName] = keyValue; } } function getClientPort(serverPort) { var keyName = "clientPort[\q" + serverPort +"\q]"; return KEY_VALUES[keyName]; } function generateContent() { retrieveKeyValues(); var newContent = "<html>\\n" + "<head></head>\\n" + "<body>\\n" + "<applet code=\\"com.citrix.JICA.class\\" archive=\\ "JICAEngN.jar\\" width=800 height=600>\\n" + "<param name=\\"cabbase\\" value=\\"JICAEngM.cab\\">\\n" + "<param name=\\"address\\" value=\\"localhost\\">\\n" + "<param name=ICAPortNumber value=" + getClientPort(\q1494\q) + ">\\n" + "</applet>\\n" + "</body>\\n" + "</html>\\n"; document.write(newContent); } </script> <body onLoad="generateContent();"> </body> </html>
<html> <body> <applet code="com.citrix.JICA.class" archive= "JICAEngN.jar" width=800 height=600> <param name="cabbase" value="JICAEngM.cab"> <param name="address" value="localhost"> <param name=ICAPortNumber value=1494> </applet> </body></html>