Glassfish v4 e SSL – admin não funciona mais

Eu passei pelas etapas para adicionar um certificado SSL no glassfish v4. Eu verifiquei que ele funciona via navegadores e via meu cliente swing java (eu estou usando bibliotecas cliente http do apache no lado do cliente)

o que não funciona é o console de administração! Como a importação do SSL foi bem-sucedida, não consigo mais me conectar ao console de administração, http://www.myhost.com:4848 , ainda recebo a canvas de login, a combinação de nome de usuário / senha do administrador que sempre funcionou deixou de funcionar. Também notei problemas ao tentar implantar um aplicativo da Web do netbeans, mas não pesquisei as coisas o suficiente para saber se é o mesmo problema.

A seguir estão as etapas que tomei para adicionar o certificado ssl. Estes são diretamente levantados do guia de segurança glassfish v4, p1-26 a p1-29. Eu adicionei um passo para mudar a senha mestra, mas eu deveria ter feito isso antes, mas estou incluindo aqui. Também omiti ou alterei determinados nomes de pastas nas etapas abaixo para minha privacidade, mas, além disso, copiei tudo isso do aplicativo de terminal.

Alguém sabe o que deu errado com o admin? Uma coisa a notar – seguindo os guias de administração e segurança para glassfish disse que eu poderia ovrwrite o alias s1as. você notará que eu usei esse alias ao trabalhar com o certificado nas etapas abaixo

Agradeço antecipadamente por sua ajuda!

passo 1 – parar o servidor

/usr/home/myhost 110 % glassfish4/bin/asadmin stop-domain domain1 Waiting for the domain to stop . Command stop-domain executed successfully. 

etapa 2 – atualizar a senha mestra

 /usr/home/myhost 110 % glassfish4/bin/asadmin Use "exit" to exit and "help" for online help. asadmin> change-master-password domain1 Enter the current master password> Enter the new master password> Enter the new master password again> Command change-master-password executed successfully. asadmin> exit Command multimode executed successfully. 

passo 3 – mude para o diretório do arquivo-chave

 /usr/home/myhost 111 % cd glassfish4/glassfish/domains/domain1/config/ 

etapa 4 – remova s1as do keystore

 /usr/home/myhost/glassfish4/glassfish/domains/domain1/config 113 % keytool -delete -alias s1as -keystore keystore.jks Enter keystore password: 

Etapa 5 – Gerar um novo par de chaves

 /usr/home/myhost/glassfish4/glassfish/domains/domain1/config 114 % keytool -genkey -alias s1as -keyalg RSA -keystore keystore.jks -keysize 2048 Enter keystore password: What is your first and last name? [Unknown]: www.myhost-dev.com What is the name of your organizational unit? [Unknown]: development What is the name of your organization? [Unknown]: myhost, inc What is the name of your City or Locality? [Unknown]: mycity What is the name of your State or Province? [Unknown]: mystate What is the two-letter country code for this unit? [Unknown]: us Is CN=www.myhost-dev.com, OU=development, O="myhost, inc", L=mycity, ST=mystate, C=us correct? Enter key password for  (RETURN if same as keystore password): 

Etapa 6 – Gerar uma solicitação de assinatura de certificado (CSR)

 /usr/home/myhost/glassfish4/glassfish/domains/domain1/config 115 % keytool -certreq -alias s1as -file toSymantec02.csr -keystore keystore.jks Enter keystore password: 

Etapa 7 – enviar o CSR para a Symantec

passo 8 – copiar intermediário e ssl cert da symantec para o diretório config

passo 9 – importar certificado intermediário

 /usr/home/myhost/glassfish4/glassfish/domains/domain1/config 115 % keytool -import -trustcacerts -alias Intermediate -keystore keystore.jks -file IntermediateCA.crt Enter keystore password: Certificate was added to keystore 

etapa 10 – import ssl cert

 /usr/home/myhost/glassfish4/glassfish/domains/domain1/config 116 % keytool -import -trustcacerts -alias s1as -keystore keystore.jks -file ssl_certificate.crt Enter keystore password: Certificate reply was installed in keystore 

passo 11 – reiniciar o servidor

 /usr/home/myhost 118 % glassfish4/bin/asadmin start-domain domain1 Enter master password (3) attempt(s) remain)> Waiting for domain1 to start ............................... Successfully started the domain : domain1 domain Location: /usr/home/myhost/glassfish4/glassfish/domains/domain1 Log File:/usr/home/myhost/glassfish4/glassfish/domains/domain1/logs/server.log Admin Port: 4848 Command start-domain executed successfully. 

O problema é quase certamente que o nome distinto ( DN ) do certificado s1as foi alterado, mas o principal de administrador seguro não foi atualizado.

Existe um comando asadmin ( enable-secure-admin-principal ) que permite atualizar manualmente, mas você também pode executar o enable-secure-admin novamente (mesmo que o administrador seguro já esteja ativado). Esse comando chamará o mesmo código que o anterior e replaceá os principais do administrador seguro pelos corretos de qualquer que seja o alias do certificado de administrador (s1as).

Você precisará reiniciar o GlassFish para que a alteração entre em vigor, mas você poderá efetuar login no Admin Console.

A causa raiz é que o console de administração está essencialmente realizando SSL bidirecional junto com seu login, para que seu nome de usuário e senha sejam verificados para você, o usuário administrador, e o próprio console administrativo seja verificado com o DN como um ID do usuário e s1as chave como senha. Isso ocorre porque o console de administração se comunica com o DAS em relação ao REST e precisa se identificar como um cliente confiável.


Espero que todo esse histórico ajude, mas o TL; DR é o seguinte:

  1. Execute o enable-secure-admin mais uma vez
  2. Reinicie o domínio

Muito obrigado pessoal @cotfessi e @Mike, seus posts realmente me ajudaram a instalar um certificado SSL no Glassfish 4.1 … então muito obrigado!

Eu só quero adicionar alguns passos extras que eu tive que fazer, estes são:

Após a etapa 10 – import ssl cert

  • Exportar o alias s1as de keystore.jks

keytool -export -alias s1as -file server.cer -keystore keystore.jks

  • Exclua o alias s1as de cacerts.jks

keytool -delete -alias s1as -keystore cacerts.jks

  • Importe o alias s1as para cacerts.jks usando o server.cer

keytool -import -v -trustcacerts -alias s1as -keystore cacerts.jks -file server.cer

mais tarde, continue na etapa 11 – reinicie o servidor


Eu também quero adicionar algumas informações que podem ser úteis para quem comprar o certificado SSL no GoDaddy …

  • Bem, eu comprei o SSL no GoDaddy e tive que enviar o meu (CSR) como descreve o @cotfessi no Passo 6 e Passo 7 , então eu recebi e enviei algumas instruções para baixar o zip com o certificado, então quando eu fui baixá-lo Eu achei que eles têm uma opção de lista no formulário que disse tipo de servidor e tinha várias opções como Apache, Tomcat, IIS … e outros, então eu escolhi a outra opção e baixei o zip, quando eu extraí-lo eu notei que havia 2 arquivos, um chamado 4a0BlaBlaBlaBla8.crt ( Bla é apenas para fins de exemplo) que continha apenas uma seção com — BEGIN / END CERTIFICATE — e o outro tinha um nome como gd_bundle-g2-g1. crt que continha 3 — BEGIN / END CERTIFICATE — seções, então eu usei o 4a0BlaBlaBlaBla8.crt como meu ssl_certificate.crt e gd_bundle-g2-g1.crt como meu IntermediateCA.crt. Eu quero compartilhar isso porque pode ser um pouco confuso para os usuários GoDaddy (eu acho …)

Eu também quero recomendar este post que me ajudou a redirect o meu tráfego HTTP para HTTPS sem fazer configuração extra para Glassfish (apenas para o meu aplicativo web): como redirect http para https com glassfish v4