首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何编码Citrix网站以使用安全网关(CSG)?

如何编码Citrix网站以使用安全网关(CSG)?
EN

Stack Overflow用户
提问于 2009-03-02 19:41:37
回答 3查看 3.7K关注 0票数 2

我使用Citrix的示例代码作为基础,并试图让它生成ICA文件,指导客户端使用他们的安全网关(CSG)提供程序。我的配置是将ICA文件的服务器地址替换为CSG票证,并强制将流量转到CSG。

挑战在于Citrix App (在1494年提供ICA会话)和CSG必须通过安全票证管理局(STA)进行协调。这意味着我的代码在创建ICA文件时需要与STA对话,因为STA持有CSG需要嵌入ICA文件的票证。令人困惑?好的!但它更安全。

前CSG代码如下所示:

代码语言:javascript
复制
AppLaunchInfo launchInfo = (AppLaunchInfo)userContext.launchApp(appID, new AppLaunchParams(ClientType.ICA_30));
ICAFile icaFile = userContext.convertToICAFile(launchInfo, null, null);

我试着向国际协力事业团提供SSLEnabled信息,但这还不够。这是密码:

代码语言:javascript
复制
launchInfo.setSSLEnabled(true);
launchInfo.setSSLAddress(new ServiceAddress("CSG URL", 443));

现在,在配置我的农场时,我似乎需要注册STA:

代码语言:javascript
复制
ConnectionRoutingPolicy policy = config.getDMZRoutingPolicy();
policy.getRules().clear();

//Set the Secure Ticketing Authorities (STAs).
STAGroup STAgr = new STAGroup();
STAgr.addSTAURL(@"http://CitrixAppServerURL/scripts/ctxsta.dll");

//creat Secure Gateway conenction
SGConnectionRoute SGRoute = new SGConnectionRoute(@"https://CSGURL");
SGRoute.setUseSessionReliability(false);
SGRoute.setGatewayPort(80);
SGRoute.setTicketAuthorities(STAgr);
// add the SGRoute to the policy
policy.setDefault(SGRoute);

这是基于我在Citrix论坛上找到的代码;然而,它破坏了我与农场连接并获取应用程序列表的能力!

有人能给我举一个代码的例子吗?还是一份参考文件?

EN

回答 3

Stack Overflow用户

发布于 2009-03-30 21:08:17

问题中的代码基本上是正确的,但我试图将配置注入启动ICA生成器。

注意:使用WebInterface.conf文件作为指导是确定正确配置设置的好方法。即使代码是正确的,配置也是非常敏感的!

大多数Citrix安全网关(CSG) /安全票证管理局(STA)魔术发生在建立到农场的初始连接策略时。具体来说,在Global.asax.cs中,必须有以下代码块:

1)您必须有一个有效的STAGroup:

代码语言:javascript
复制
//Set the Secure Ticketing Authorities (STAs).
STAGroup STAgr = new STAGroup();
STAgr.addSTAURL(@"http://[STA URL]/scripts/ctxsta.dll");

2)您必须创建一个CSG连接(映射了STA ):

代码语言:javascript
复制
 //create Secure Gateway conenction
 SGConnectionRoute SGRoute = new SGConnectionRoute(@"[CSG FQDN without HTTPS]");
 SGRoute.setUseSessionReliability(false);
 SGRoute.setGatewayPort(443);
 SGRoute.setTicketAuthorities(STAgr);

3)需要设置策略默认值

代码语言:javascript
复制
 // Create a DMZ routing policy
 ConnectionRoutingPolicy policy = config.getDMZRoutingPolicy();
 policy.getRules().clear();
 policy.setDefault(SGRoute);

4)您需要告诉launchInfo您希望启用CGP:

代码语言:javascript
复制
launchInfo.setCGPEnabled(true);

警告: SSL已启用为红鲱鱼。

票数 1
EN

Stack Overflow用户

发布于 2009-04-03 18:19:04

还有一种更干净、更可配置的方法。可以设置代码以使用默认使用的webinterface.conf文件。

下面的代码应该替换上面示例中的所有farmConfig、STAGroup、ConnectionRoutinePolcy、mess。

代码语言:javascript
复制
InputStream inputStream = new FileInputStream(@"C:\temp\WebInterface.conf");
CtxConfig configInput = new CtxConfig(inputStream);
Map settingsMap = configInput.getSettingsMap();
WIConfiguration wiConfiguration = ConfigurationParser.buildWIConfiguration(settingsMap);

com.citrix.wing.config.Configuration config = new com.citrix.wing.config.Configuration();
config.setGlobalConfig(wiConfiguration.getGlobalConfig());
config.setMPSFarmConfigs(wiConfiguration.getMPSFarmConfigs());
config.setDMZRoutingPolicy(wiConfiguration.getDMZRoutingPolicy());
config.setClientProxyPolicy(wiConfiguration.getClientProxyPolicy());

// Create a StaticEnvironmentAdaptor instance.
WIASPNetStaticAdaptor staticEnvAdaptor = new WIASPNetStaticAdaptor(this);

// Create a WebPNBuilder instance.
WebPNBuilder builder = WebPNBuilder.getInstance();
Application["WebPNBuilder"] = builder;

// Create a WebPN instance from the configuration.
WebPN webPN = builder.createWebPN(config, staticEnvAdaptor);
Application["WebPN"] = webPN;
票数 0
EN

Stack Overflow用户

发布于 2009-04-09 16:19:36

关于此问题的另一个注意事项是使用带有内部证书的JICA客户端(不受信任的根)。

JICA客户端不允许您接受来自不受信任的根的证书,因此需要将证书添加到Java存储区。把它添加到Windows商店没有任何好处!

获取dev根CA,然后导航到最新Java安装的bin目录(通常在c:\program \java\jre*下)

执行以下命令:

代码语言:javascript
复制
keytool -import -trustcacerts -keystore "..\lib\security\cacerts" -file "c:\temp\root.cer" -alias myroot 

我会让你谷歌的密码,因为你应该改变它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/603682

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档