Выберите все псевдонимы на modifySSLConfig, используя скрипт JACL
Я хотел бы отредактировать все конфигурации SSL на всех моих псевдонимах. Я нашел некоторые ресурсы, чтобы сделать это, и мой код пока
$AdminTask modifySSLConfig {-alias NodeDefaultSSLSettings -sslProtocol TLSv1.2}
$AdminConfig save
Я хотел бы иметь возможность сделать это на всех псевдонимов, которые можно найти на моем сервере, но я не знаю, как
Любые идеи или руководства о том, как это сделать, помогут. Спасибо.
Редактировать:
Теперь я могу найти все конфиги SSL, используя этот код
[$AdminTask listSSLConfigs {-scopeName (cell):Node01Cell:(node):Node01}
Моя следующая проблема, как я смогу извлечь строку псевдонима оттуда? Мне нужен только псевдоним, чтобы я мог заменить его на другую переменную, чтобы я мог просто использовать цикл foreach для этого
$AdminTask modifySSLConfig {-alias ${aliasvariablegoeshere} -sslProtocol TLSv1.2}
РЕДАКТИРОВАТЬ:
set hold [list [$AdminTask listSSLConfigs {-scopeName (cell):Node01Cell:(node):Node01}]]
foreach aliasList [$AdminConfig show $hold] {
foreach aliasName [$AdminConfig show $aliasList] {
set testTrim "alias "
set test5 [string trimleft $aliasName $testTrim]
$AdminTask modifySSLConfig {-alias ${test5} -sslProtocol TLSv1.2}
}
}
$AdminControl save
Я сделал это и смог извлечь только имя псевдонима и смог поместить его в переменную, как я хотел, но это дает мне ошибку неверного параметра. Любые идеи, почему это происходит и как я смогу решить эту проблему?
3 ответа
Мне удалось заставить это работать, кажется, что, что бы я ни делал, я не могу сделать псевдоним, который я получил, чтобы быть допустимым параметром, поэтому я сделал все это как строковую команду. Вот мой код
foreach aliasList [$AdminConfig list SSLConfig] {
foreach aliasName [$AdminConfig show $aliasList alias] {
set strTrim "alias "
set strFinal [string trimleft $aliasName $strTrim]
set command "-alias $strFinal -sslProtocol TLSv1.2"
$AdminTask modifySSLConfig $command
puts saved
}
}
$AdminConfig save
Вы можете перечислить все конфигурации SSL, используя:
AdminTask.listSSLConfigs('[-all true]')
для использования JACL:
$AdminTask listSSLConfigs {-all true}
а затем переберите список и измените все, что вам нужно. Вместо -all
Вы можете предоставить область, например: -scopeName (cell):localhostNode01Cell:(node):localhostNode01
Для получения подробной информации о командах SSLConfig проверьте группу команд SSLConfigCommands для объекта AdminTask
ОБНОВИТЬ:
в общем это должно работать:
foreach aliasList [$AdminTask listSSLConfigs {-scopeName (cell):PCCell1:(node):Node1}] {
puts $aliasList
set splitList [split $aliasList " "]
puts $splitList
set aliasname [lindex $splitList 1]
puts $aliasname
$AdminTask modifySSLConfig { -alias $aliasname -sslProtocol TLSv1.2 }
}
но я не могу сделать $AdminTask
правильно решить $aliasname
param... Настоятельно предлагаю вам перейти на jython.;-)
Я смог понять это для Jython:
import sys
import os
import string
import re
#$HOME/IBM/WebSphere/AppServer/bin/wsadmin.sh -lang jython -f $HOME/tls12.py
#Updates Websphere security to TLSv1.2
AdminTask.convertCertForSecurityStandard('[-fipsLevel SP800-131 -signatureAlgorithm SHA256withRSA -keySize 2048 ]')
AdminConfig.save()
AdminNodeManagement.syncActiveNodes()
sslConfigList=AdminTask.listSSLConfigs('[-all true]').splitlines()
for sslConfig in sslConfigList:
sslElems=sslConfig.split(" ")
AdminTask.modifySSLConfig (['-alias',sslElems[1],'-scopeName',sslElems[3],'-sslProtocol', 'TLSv1.2', '-securityLevel', 'HIGH' ])
AdminConfig.save()
AdminNodeManagement.syncActiveNodes()
После этого вы также должны обновить все свои файлы ssl.client.props с помощью:
com.ibm.ssl.protocol=TLSv1.2
Перезапустите диспетчер развертывания и принудительно включите syncNode вручную на всех узлах, например:
~/IBM/WebSphere/AppServer/profiles/*/bin/syncNode.sh <DeplymentManagerHost> <dmgr port=8879> -username <username> -password <password>