2009-03-02 7 views
2

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

Задача состоит в том, что и сервер приложений Citrix (который обеспечивает сеанс ICA 1494), так и CSG должны координировать работу через службу безопасного билета (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 Forums; однако он нарушает мою способность подключаться к Ферме и получать список моих приложений!

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

ответ

1

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

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

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

1) вы должны иметь действительный STAGroup:

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

2) необходимо создать соединение CSG (с ГНА отображенной):

//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

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

Следующий код должен заменить все свойства farmConfig, 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; 
0

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

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

Получить DEV корневой ЦС, а затем перейдите к бен директории последней Java установки (как правило, в соответствии с: \ Program Files \ Java \ JRE ***)

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

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

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