среда, 8 августа 2012 г.

Добавление не стандартных портов SSL на TMG

Задача: Добавить не стандартный порт HTTPS на прокси сервер Forefront TMG.
Инструменты: [Windows] powershell.
Параметры:
- скрипт должен работать как на Standart так и на Enterprise конфигурации;
Описание: некоторые веб-службы, как например, sbi.sberbank.ru:9443 используют специфический порт для SSL-туннеля. TMG, он же ISA позволяет создать пользовательский порт через консольку, но он отказывается работать таким образом, выдавая сообщение "12204 The specified Secure Sockets Layer (SSL) port is not allowed.". В инете многие предлагают использовать скрипт "isa_tpr.js" для управления SSL портами, но он отказывается работать, в Enterprise конфигурациях, выдавая "This is not an ISA Server." "На коленках", как и многие), был написан скрипт, отображающий SSL-порты. Позволяет выбрать необходимый массив, добавить, удалить порты и просто является примером администрирования TMG из PowerShell'a.

 

01 # Создаем корневой COM-объект
02 $oFPC = New-Object -ComObject FPC.Root;
03 # Выводим информацию о сервере конфигураций, к которому подключились
04 Write-Host ('Configuration storage server: '+$oFPC.ConfigurationStorageServer);
05 # Устанавливаем счетчик количества массивов на сервере конфигураций
06 $iArrayNumber = 0;
07 # Задаем массив имен массивов на сервере конфигураций
08 [string[]]$aAvailableArraysNames = @();
09 # Проходимся по всем массивам на сервере конфигураций
10 foreach ($oArray in $oFPC.Arrays)
11   {
12   # Массив есть - увеличиваем счетчик
13   $iArrayNumber++;
14   # Сохраняем имя массива в массив имен массивов сервера конфигураций (масло масленое)
15   $aAvailableArraysNames+=$oArray.Name;
16   # Выводим имя найденного массива
17   Write-Host ('Array '+$iArrayNumber+'. "'+$aAvailableArraysNames[$iArrayNumber-1]+'".');
18   }
19 # Если массив только один, что часто бывает
20 if ($iArrayNumber -eq 1)
21   {
22   # Вводим автоматом номер массива, которым будем управлять
23   $sInput = 1;
24   }
25 else
26   {
27   # Спрашиваем номер массива
28   $sInput = Read-Host 'Select array number: ';
29   }
30 # Задаем имя массива для работы
31 $oCurrentArrayName = $aAvailableArraysNames[$sInput-1];
32 # Задаем массив для работы
33 $oCurrentArray = $oFPC.Arrays.Item($oCurrentArrayName);
34 # Выводим текущие SSL-порты
35 Write-Host ('SSL ports at array "'+$oCurrentArray.Name+'":');
36 $oCurrentArray.ArrayPolicy.WebProxy.TunnelPortRanges;
37 # Спрашиваем, будем ли добавлять порт
38 $sInput = Read-Host ("`n"+'Add port?[y/n]');
39 switch ($sInput)
40   {
41   y
42     {
43     # Спрашиваем имя порта
44     $sChosenName = Read-Host 'Name';
45     # Спрашиваем начальное число диапазона портов
46     $sChosenTunnelLowPort = Read-Host 'TunnelLowPort';
47     # Спрашиваем конечное число диапазона портов
48     $sChosenTunnelHighPort = Read-Host 'TunnelHighPort';
49     # Добавляем диапазон портов
50     $oCurrentArray.ArrayPolicy.WebProxy.TunnelPortRanges.AddRange($sChosenName, $sChosenTunnelLowPort, $sChosenTunnelHighPort);
51     # Сохраняем конфигурацию (не забываем рестартануть службу TMG Firewall для вступления изменений в силу
52     $oCurrentArray.ArrayPolicy.WebProxy.TunnelPortRanges.Save();
53     }
54   }
55 # Спрашиваем, будем ли удалять порт
56 $sInput = Read-Host 'Del port?[y/n]';
57 switch ($sInput)
58   {
59   y
60     {
61     # Спрашиваем имя порта
62     $sChosenName = Read-Host 'Name';
63     # Удаляем порт
64     $oCurrentArray.ArrayPolicy.WebProxy.TunnelPortRanges.Remove($sChosenName);
65     # Сохраняем конфигурацию (не забываем рестартануть службу TMG Firewall для вступления изменений в силу
66     $oCurrentArray.ArrayPolicy.WebProxy.TunnelPortRanges.Save();
67     }
68   }

file.ps1:

 

Комментариев нет:

Отправить комментарий