Как мне кодировать веб-сайты Citrix для использования Secure Gateway (CSG)? - PullRequest
2 голосов
/ 02 марта 2009

Я использую пример кода Citrix в качестве основы и пытаюсь получить его для создания ICA-файлов, которые предписывают клиенту использовать своего поставщика Secure Gateway (CSG). Моя конфигурация состоит в том, что адрес сервера файла ICA заменяется билетом CSG, и трафик вынужден идти в CSG.

Проблема заключается в том, что и Citrix App Server (который предоставляет сеанс ICA на 1494), и CSG должны координировать свои действия через Secure Ticket Authority (STA). Это означает, что мой код должен общаться с STA, поскольку он создает файл ICA, потому что STA содержит билет, который CSG должен встроить в файл ICA. Смешение? Конечно! Но это намного безопаснее.

Код предварительной CSG выглядит следующим образом:

AppLaunchInfo launchInfo = (AppLaunchInfo)userContext.launchApp(appID, new AppLaunchParams(ClientType.ICA_30));
ICAFile icaFile = userContext.convertToICAFile(launchInfo, null, null);

Я пытался получить информацию SSLEnabled для поколения ICA, но этого было недостаточно. вот этот код:

launchInfo.setSSLEnabled(true);
launchInfo.setSSLAddress(new ServiceAddress("CSG URL", 443));

Теперь, похоже, мне нужно зарегистрировать STA при настройке фермы:

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 ; однако это лишает меня возможности подключаться к ферме и получать список приложений!

Может кто-нибудь указать мне пример кода, который работает? Или справочный документ?

Ответы [ 3 ]

1 голос
/ 31 марта 2009

Код в вопросе в основном правильный, но я слишком старался внедрить конфигурацию в запускающий генератор ICA.

Примечание. Использование файла WebInterface.conf в качестве руководства является хорошим способом определения правильных настроек конфигурации. Даже если код правильный, конфигурация очень трогательная!

Большая часть магии Citrix Secure Gateway (CSG) / Secure Ticket Authority (STA) происходит, когда устанавливается политика для первоначального подключения к ферме. В частности, в Global.asax.cs необходимо иметь следующие блоки кода:

1) у вас должна быть действующая группа STAG:

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

2) вы должны создать соединение CSG (с сопоставленным STA):

 //create Secure Gateway conenction
 SGConnectionRoute SGRoute = new SGConnectionRoute(@"[CSG FQDN without HTTPS]");
 SGRoute.setUseSessionReliability(false);
 SGRoute.setGatewayPort(443);
 SGRoute.setTicketAuthorities(STAgr);

3) вам нужно установить политику по умолчанию

 // Create a DMZ routing policy
 ConnectionRoutingPolicy policy = config.getDMZRoutingPolicy();
 policy.getRules().clear();
 policy.setDefault(SGRoute);

4) вам нужно сообщить launchInfo, что вы хотите включить CGP:

launchInfo.setCGPEnabled(true);

ВНИМАНИЕ: SSL включен как красная сельдь.

0 голосов
/ 09 апреля 2009

Еще одно замечание по этой проблеме из-за использования клиента JICA с внутренним сертификатом (недоверенный корень).

Клиент JICA не позволяет вам принять сертификат от ненадежного корня, поэтому необходимо было добавить сертификат в хранилище CA CA. Добавление его в магазин Windows не приносит никакой пользы!

Получите корневой CA вашего dev, затем перейдите в каталог bin последней версии Java (обычно в каталоге c: \ program files \ java \ jre ***)

Выполнить следующую команду:

keytool -import -trustcacerts -keystore "..\lib\security\cacerts" -file "c:\temp\root.cer" -alias myroot 

Я дам вам Google пароль, потому что вы должны изменить его [ sic ].

0 голосов
/ 03 апреля 2009

Есть еще один способ сделать это более понятным и настраиваемым. Код можно настроить для использования файла webinterface.conf , который используется веб-интерфейсом Citrix по умолчанию.

Следующий код должен заменить всю фермуConfig, STAGroup, ConnectionRoutinePolcy, беспорядок в приведенном выше примере.

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;
...