使用JACL脚本在ModifySSLConfig上选择所有别名

时间:2018-09-11 11:47:21

标签: ssl websphere 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 个答案:

答案 0 :(得分:1)

您可以使用以下命令列出所有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。 ;-)

答案 1 :(得分:0)

我设法使其正常工作,似乎我所做的一切都无法使别名成为有效参数,因此我将整个内容改为字符串命令。这是我的代码。

file-name-YYYY-MM-DD-hh-mm.csv

答案 2 :(得分:0)

我能够为 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>