Select 使用 JACL 脚本修改 SSLConfig 的所有别名
Select all alias on modifySSLConfig using JACL script
我想编辑我所有别名的所有 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
我已经完成了这个并且能够只提取别名并且能够像我想要的那样将它放在变量上,但是它给了我一个无效参数错误。任何想法为什么会发生这种情况以及我将如何解决这个问题?
您可以使用以下方式列出所有 SSL 配置:
AdminTask.listSSLConfigs('[-all true]')
对于 JACL 使用:
$AdminTask listSSLConfigs {-all true}
然后遍历列表并根据需要进行更改。
您可以提供范围,而不是 -all
,例如:-scopeName (cell):localhostNode01Cell:(node):localhostNode01
有关 SSLConfig 命令的详细信息,请查看 SSLConfigCommands command group for the AdminTask object
更新:
一般来说这应该有效:
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
参数...
强烈建议你改用jython。 ;-)
我已经设法让它工作了,似乎无论我做什么我都不能使别名成为一个有效的参数所以我把整个东西都变成了一个字符串命令。这是我的代码。
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
我能够为 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
重新启动部署管理器并在所有节点上强制手动同步节点,例如:
~/IBM/WebSphere/AppServer/profiles/*/bin/syncNode.sh <DeplymentManagerHost> <dmgr port=8879> -username <username> -password <password>
我想编辑我所有别名的所有 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
我已经完成了这个并且能够只提取别名并且能够像我想要的那样将它放在变量上,但是它给了我一个无效参数错误。任何想法为什么会发生这种情况以及我将如何解决这个问题?
您可以使用以下方式列出所有 SSL 配置:
AdminTask.listSSLConfigs('[-all true]')
对于 JACL 使用:
$AdminTask listSSLConfigs {-all true}
然后遍历列表并根据需要进行更改。
您可以提供范围,而不是 -all
,例如:-scopeName (cell):localhostNode01Cell:(node):localhostNode01
有关 SSLConfig 命令的详细信息,请查看 SSLConfigCommands command group for the AdminTask object
更新:
一般来说这应该有效:
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
参数...
强烈建议你改用jython。 ;-)
我已经设法让它工作了,似乎无论我做什么我都不能使别名成为一个有效的参数所以我把整个东西都变成了一个字符串命令。这是我的代码。
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
我能够为 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
重新启动部署管理器并在所有节点上强制手动同步节点,例如:
~/IBM/WebSphere/AppServer/profiles/*/bin/syncNode.sh <DeplymentManagerHost> <dmgr port=8879> -username <username> -password <password>