8.6.3. Habilitação da Criptografia do FIPS 140-2 para o SSL no Red Hat Enterprise Linux 6
Esta tarefa descreve como configurar o contêiner da web (JBoss Web) do JBoss EAP 6 para a criptografia compatível com o FIPS 140-2 para o SSL. Esta tarefa descreve apenas as etapas para o Red Hat Enterprise Linux 6.
Esta tarefa usa a biblioteca Mozilla NSS no modo FIPS para este recurso.
Pré-requisitos
- O Red Hat Enterprise Linux 6 deve ter sido configurado para o FIPS 140-2 compatível. Refira-se ao https://access.redhat.com/knowledge/solutions/137833.
Procedimento 8.3. Habilitação da Criptografia Compatível FIPS 140-2 para o SSL
Criação do banco de dados
Crie o banco de dados NSS num diretório de propriedade do usuáriojboss
.$ mkdir -p /usr/share/jboss-as/nssdb $ chown jboss /usr/share/jboss-as/nssdb $ modutil -create -dbdir /usr/share/jboss-as/nssdb
Criação do arquivo de configuração NSS
Crie um novo arquivo do texto com o mesmo nomenss_pkcsll_fips.cfg
no diretório/usr/share/jboss-as
com os seguintes conteúdos:name = nss-fips nssLibraryDirectory=/usr/lib64 nssSecmodDirectory=/usr/share/jboss-as/nssdb nssModule = fips
O arquivo de configuração NSS deve especificar:- um nome;
- o diretório onde a biblioteca está localizada, e;
- o diretório onde o banco de dados NSS foi criado, conforme na etapa 1.
Caso você esteja executando uma versão de 64 bites do Red Hat Enterprise Linux 6, então determine onssLibraryDirectory
para/usr/lib
, ao invés do/usr/lib64
.Habilitação do provedor SunPKCS11
Edite o arquivo da configuraçãojava.security
para o seu JRE ($JAVA_HOME/jre/lib/security/java.security
) e adicione a seguinte linha:security.provider.1=sun.security.pkcs11.SunPKCS11 /usr/share/jboss-as/nss_pkcsll_fips.cfg
Perceba que o arquivo de configuração especificado nesta linha é o arquivo criado na etapa 2.Quaisquer outras linhassecurity.provider.X
neste arquivo devem possuir o valor do X aumentado para um, com o objetivo de garantir que este provedor possui prioridade.Habilitação do modo FIPS para a biblioteca NSS
Execute o comandomodutil
conforme apresentado para habilitar o modo FIPS:modutil -fips true -dbdir /usr/share/jboss-as/nssdb
Perceba que o diretório especificado aqui é o mesmo criado na etapa 1.Você pode obter um erro da biblioteca de segurança no pontoAltere a senha no token FIPS
Determine a senha no token FIPS usando o seguinte comando. Perceba que o nome do token deve serNSS FIPS 140-2 Certificate DB
.modutil -changepw "
NSS FIPS 140-2 Certificate DB
" -dbdir /usr/share/jboss-as/nssdbA senha usada para o token FIPS deve ser uma senha compatível com o FIPS.Crie um certificado usando as ferramentas NSS
Insira o seguinte comando para criar um certificado usando as ferramentas NSS.certutil -S -k rsa -n jbossweb -t "u,u,u" -x -s "CN=localhost, OU=MYOU, O=MYORG, L=MYCITY, ST=MYSTATE, C=MY" -d /usr/share/jboss-as/nssdb
Configure o conector HTTPS para o uso do PKCS11 keystore
Adicione o conector usando o seguinte comando no JBoss CLI Tool:/subsystem=web/connector=https/:add(socket-binding=https,scheme=https,protocol=HTTP/1.1,secure=true)
Adicione a configuração SSL com o seguinte comando, substituindo a SENHA pela senha compatível com o FIPS da etapa 5./subsystem=web/connector=https/ssl=configuration:add(name=https,password=PASSWORD,keystore-type=PCKS11, cipher-suite="SSL_RSA_WITH_3DES_EDE_CBC_SHA,SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA, TLS_RSA_WITH_AES_128_CBC_SHA,TLS_DHE_DSS_WITH_AES_128_CBC_SHA, TLS_DHE_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA, TLS_DHE_DSS_WITH_AES_256_CBC_SHA,TLS_DHE_RSA_WITH_AES_256_CBC_SHA, TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA,TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA, TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA, TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA, TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA,TLS_ECDH_RSA_WITH_AES_128_CBC_SHA, TLS_ECDH_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, TLS_ECDH_anon_WITH_3DES_EDE_CBC_SHA,TLS_ECDH_anon_WITH_AES_128_CBC_SHA, TLS_ECDH_anon_WITH_AES_256_CBC_SHA")
Verificação
Verifique se o JVM pode ler a chave privada a partir do PKCS11 pela execução do seguinte comando:keytool -list -storetype pkcs11
Exemplo 8.3. A configuração XMl para o conector HTTPS usando o FIPS compatível
<connector name="https" protocol="HTTP/1.1" scheme="https" socket-binding="https" secure="true"> <ssl name="https" password="****" cipher-suite="SSL_RSA_WITH_3DES_EDE_CBC_SHA,SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA, TLS_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_DSS_WITH_AES_128_CBC_SHA, TLS_DHE_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA, TLS_DHE_DSS_WITH_AES_256_CBC_SHA,TLS_DHE_RSA_WITH_AES_256_CBC_SHA, TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA,TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA, TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA, TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA, TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA,TLS_ECDH_RSA_WITH_AES_128_CBC_SHA, TLS_ECDH_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, TLS_ECDH_anon_WITH_3DES_EDE_CBC_SHA,TLS_ECDH_anon_WITH_AES_128_CBC_SHA, TLS_ECDH_anon_WITH_AES_256_CBC_SHA" keystore-type="PKCS11"/> </connector>
Perceba que o atributo
cipher-suite
possui quebras de linha inseridas para facilitar a leitura.