A seguinte etapa explica como uma camada de segurança pode ser ativada para comunicação entre os terminais do ambiente.
keytool -genkey -alias ogsample -keystore key.jks -storetype JKS -keyalg rsa -dname "CN=ogsample, OU=OGSample, O=acme, L=Your City, S=Your State, C=Your Country" -storepass ogpass -keypass ogpass -validity 3650
Utilizando este comando, um key store key.jks é criado com uma chave "ogsample" armazenada nele. Esta key store key.jks será utilizada como o key store SSL.
keytool -export -alias ogsample -keystore key.jks -file temp.key -storepass ogpass
Utilizando este comando, o certificado público da chave "ogsample" é extraído e armazenado no arquivo temp.key.
keytool -import -noprompt -alias ogsamplepublic -keystore trust.jks -file temp.key -storepass ogpass
Utilizando este comando, o certificado público foi incluído no key store trust.jks. Este trust.jks é utilizado como o trust store SSL.
Neste etapa, é necessário configurar os arquivos de propriedades do ObjectGrid para ativar a segurança do transporte.
Primeiro, copie os arquivos key.jks e trust.jks no diretório objectgridRoot/security.
Configure as seguintes propriedades nos arquivos client.properties e server.properties.
transportType=SSL-Required
alias=ogsample
contextProvider=IBMJSSE2
protocol=SSL
keyStoreType=JKS
keyStore=../security/key.jks
keyStorePassword=ogpass
trustStoreType=JKS
trustStore=../security/trust.jks
trustStorePassword=ogpass
transportType: O valor de transportType é configurado como "SSL-Required", o que significa que o transporte requer SSL. Assim, todos os terminais do ObjectGrid (clientes, servidores de catálogos e servidores de contêineres) devem ter a configuração SSL definida e toda a comunicação de transporte será criptografada.
As outras propriedades são utilizadas para definir as configurações SSL. Consulte o Transport Layer Security e Secure Sockets Layer para obter uma explicação detalhada. Certifique-se de seguir as seguintes instruções neste tópico para atualizar o arquivo orb.properties.
Certifique-se de seguir essa página para atualizar o arquivo orb.properties.
No arquivo server.properties, é necessário incluir uma propriedade adicional clientAuthentication e configurá-la para false. No lado do servidor, não é necessário confiar o cliente.
clientAuthentication=false
Os comandos são os mesmos que os comandos no tópico Tutorial de Segurança do Java SE - Etapa 3.
startOgServer.sh catalogServer -clusterSecurityFile ../security/security.xml
-serverProps ../security/server.properties -JMXServicePort 11001
-jvmArgs -Djava.security.auth.login.config="../security/og_jaas.config"
startOgServer.bat catalogServer -clusterSecurityFile ../security/security.xml
-serverProps ../security/server.properties -JMXServicePort 11001 -jvmArgs
-Djava.security.auth.login.config="../security/og_jaas.config"
Os arquivos security.xml e server.properties foram criados na página Tutorial de Segurança do Java SE - Etapa 2.
Use a opção -JMXServicePort para especificar explicitamente a porta JMX para o servidor. Essa opção é necessária para usar o comando xscmd.
Execute um servidor de contêiner ObjectGrid:
startOgServer.sh c0 -objectGridFile ../xml/SecureSimpleApp.xml
-deploymentPolicyFile ../xml/SimpleDP.xml -catalogServiceEndPoints
localhost:2809 -serverProps ../security/server.properties
-JMXServicePort 11002 -jvmArgs
-Djava.security.auth.login.config="../security/og_jaas.config"
-Djava.security.auth.policy="../security/og_auth.policy"
startOgServer.bat c0 -objectGridFile ../xml/SecureSimpleApp.xml
-deploymentPolicyFile ../xml/SimpleDP.xml -catalogServiceEndPoints localhost:2809
-serverProps ../security/server.properties -JMXServicePort 11002
-jvmArgs -Djava.security.auth.login.config="../security/og_jaas.config"
-Djava.security.auth.policy="../security/og_auth.policy"
Execute o seguinte comando para autenticação de cliente:
javaHome/java -classpath ../lib/objectgrid.jar;../applib/sec_sample.jar
com.ibm.websphere.objectgrid.security.sample.guide.SecureSimpleApp
../security/client.properties manager manager1
Como o usuário "manager" tem permissão para todos os mapas no ObjectGrid de contabilidade, o aplicativo é executado com êxito.
xscmd.sh -c showMapsizes -g accounting -m customer -prot SSL
-ts .\security\trust.jks -tsp ogpass -tst jks
-user manager -pwd manager1 -ks ..\security\key.jks -ksp ogpass -kst JKS
-cxpv IBMJSSE2 -tt SSL-Required
xscmd.bat -c showMapsizes -g accounting -m customer -prot SSL
-ts ..\security\trust.jks -tsp ogpass -tst jks
-user manager -pwd manager1 -ks ..\security\key.jks -ksp ogpass -kst JKS
-cxpv IBMJSSE2 -tt SSL-Required
Observe que especificamos a porta JMX do serviço de catálogo usando -p 11001 aqui.
A seguinte saída será exibida.
This administrative utility is provided as a sample only and is not to
be considered a fully supported component of the WebSphere eXtreme Scale product.
Connecting to Catalog service at localhost:1099
*********** Displaying Results for Grid - accounting, MapSet - customer ***********
*** Listing Maps for c0 ***
Map Name: customer Partition #: 0 Map Size: 1 Shard Type: Primary
Server Total: 1
Total Domain Count: 1
Executando o aplicativo com um key store incorreto
Se o seu trust store não contiver o certificado público da chave privada no key store, será obtida uma exceção reclamando que a chave pode não ser confiável.
Para mostrar isso, crie outro key store, key2.jks.
keytool -genkey -alias ogsample -keystore key2.jks -storetype JKS -keyalg rsa -dname "CN=ogsample, OU=Your Organizational Unit, O=Your Organization, L=Your City, S=Your State, C=Your Country" -storepass ogpass -keypass ogpass -validity 3650
Em seguida, modifique o arquivo server.properties para que o keyStore aponte para esse novo armazenamento de chaves key2.jks:
keyStore=../security/key2.jks
Execute o seguintes comando para iniciar o servidor de catálogos:
startOgServer.sh c0 -objectGridFile ../xml/SecureSimpleApp.xml
-deploymentPolicyFile ../xml/SimpleDP.xml -catalogServiceEndPoints localhost:2809
-serverProps ../security/server.properties -jvmArgs
-Djava.security.auth.login.config="../security/og_jaas.config"
-Djava.security.auth.policy="../security/og_auth.policy"
startOgServer.bat c0 -objectGridFile ../xml/SecureSimpleApp.xml
-deploymentPolicyFile ../xml/SimpleDP.xml -catalogServiceEndPoints localhost:2809
-serverProps ../security/server.properties -jvmArgs
-Djava.security.auth.login.config="../security/og_jaas.config"
-Djava.security.auth.policy="../security/og_auth.policy"
A seguinte exceção será exibida:
Caused by: com.ibm.websphere.objectgrid.ObjectGridRPCException:
com.ibm.websphere.objectgrid.ObjectGridRuntimeException:
SSL connection fails and plain socket cannot be used.
Por fim, altere o arquivo server.properties de volta para usar o arquivo key.jks.