Utilização do SSL com o Dispatcher using-ssl-with-dispatcher
Usar conexões SSL entre o Dispatcher e o computador de renderização:
Uso do SSL quando o Dispatcher se conecta ao AEM use-ssl-when-dispatcher-connects-to-aem
Configure o Dispatcher para se comunicar com a instância de renderização do AEM ou CQ usando conexões SSL.
Antes de configurar o Dispatcher, configure o AEM ou o CQ para usar o SSL. Para obter mais informações, consulte:
Cabeçalhos de solicitação relacionados ao SSL ssl-related-request-headers
Quando o Dispatcher recebe uma solicitação HTTPS, ele inclui os seguintes cabeçalhos na solicitação subsequente que envia para o AEM ou CQ:
X-Forwarded-SSL
X-Forwarded-SSL-Cipher
X-Forwarded-SSL-Keysize
X-Forwarded-SSL-Session-ID
Uma solicitação pelo Apache-2.4 com mod_ssl
inclui cabeçalhos semelhantes ao seguinte exemplo:
X-Forwarded-SSL: on
X-Forwarded-SSL-Cipher: DHE-RSA-AES256-SHA
X-Forwarded-SSL-Session-ID: 814825E8CD055B4C166C2EF6D75E1D0FE786FFB29DEB6DE1E239D5C771CB5B4D
Configuração do Dispatcher para usar SSL configuring-dispatcher-to-use-ssl
Para configurar o Dispatcher para se conectar com o AEM ou CQ por SSL, seu arquivo dispatcher.any requer as seguintes propriedades:
- Um host virtual que lide com solicitações HTTPS.
- A seção
renders
do host virtual inclui um item que identifica o nome do host e a porta da instância do CQ ou do AEM que usa HTTPS. - O item
renders
inclui uma propriedade chamadasecure
de valor1
.
Observação: crie outro host virtual para lidar com solicitações HTTP, se necessário.
O arquivo de exemplo dispatcher.any
a seguir mostra os valores de propriedade para conectar (usando HTTPS) a uma instância do CQ que esteja sendo executada no host localhost
e na porta 8443
:
/farms
{
/secure
{
/virtualhosts
{
# select this farm for all incoming HTTPS requests
"https://*"
}
/renders
{
/0001
{
# hostname or IP of the render
/hostname "localhost"
# port of the render
/port "8443"
# connect via HTTPS
/secure "1"
}
}
# the rest of the properties are omitted
}
/non-secure
{
/virtualhosts
{
# select this farm for all incoming HTTP requests
"http://*"
}
/renders
{
/0001
{
# hostname or IP of the render
/hostname "localhost"
# port of the render
/port "4503"
}
}
# the rest of the properties are omitted
}
Configuração do SSL mútuo entre o Dispatcher e o AEM configuring-mutual-ssl-between-dispatcher-and-aem
Para usar o SSL mútuo, configure as conexões entre o Dispatcher e o computador de renderização (normalmente uma instância de publicação do AEM ou CQ):
- O Dispatcher se conecta à instância de renderização por SSL.
- A instância de renderização verifica a validade do certificado do Dispatcher.
- O Dispatcher verifica se a Autoridade de Certificação (CA) do certificado da instância de renderização é confiável.
- (Opcional) O Dispatcher verifica se o certificado da instância de renderização corresponde ao endereço do servidor da instância de renderização.
Para configurar o SSL mútuo, você precisa de certificados assinados por uma Autoridade de Certificação (CA) confiável. Certificados autoassinados não são adequados. Você pode agir como CA ou usar os serviços de uma CA de terceiros para assinar seus certificados. Para configurar o SSL mútuo, são necessários os seguintes itens:
- Certificados assinados para a instância de renderização e o Dispatcher
- O certificado de CA (se você estiver agindo como CA)
- Bibliotecas OpenSSL para geração da CA, de certificados e solicitações de certificado
Para configurar o SSL mútuo, execute as seguintes etapas:
- Instale a versão mais recente do Dispatcher para sua plataforma. Use um binário do Dispatcher compatível com SSL (possui “SSL” no nome do arquivo, como
dispatcher-apache2.4-linux-x86-64-ssl10-4.1.7.tar
). - Crie ou obtenha um certificado assinado pela CA para o Dispatcher e a instância de renderização.
- Crie um repositório de chaves que contenha o certificado de renderização e configure o serviço HTTP de renderização.
- Configure o módulo do servidor Web Dispatcher para SSL mútuo.
Criação ou obtenção de certificados assinados pela CA creating-or-obtaining-ca-signed-certificates
Crie ou obtenha os certificados assinados pela CA que autenticam a instância de publicação e o Dispatcher.
Criação da sua CA creating-your-ca
Se você estiver agindo como a autoridade de certificação, use o OpenSSL para criar a Autoridade de Certificação que assina os certificados do servidor e do cliente. (Você deve ter as bibliotecas OpenSSL instaladas.) Se você estiver usando uma CA de terceiros, não execute este procedimento.
-
Abra um terminal e altere o diretório atual para o diretório que contém o arquivo
CA.sh
, como/usr/local/ssl/misc
. -
Para criar a CA, insira o seguinte comando e forneça valores quando solicitado:
code language-shell ./CA.sh -newca
note note NOTE Várias propriedades no arquivo openssl.cnf
controlam o comportamento do script CA.sh. Edite esse arquivo conforme necessário antes de criar sua CA.
Criar certificados creating-the-certificates
Use OpenSSL para criar as solicitações de certificados para enviar à CA de terceiros ou para assinar com sua CA.
Ao criar um certificado, o OpenSSL usa a propriedade Nome Comum para identificar o titular do certificado. Para o certificado da instância de renderização, use o nome de host do computador da instância como o Nome comum se configurar o Dispatcher para aceitar o certificado. Execute este procedimento somente se ele corresponder ao nome do host da instância de publicação. Consulte a propriedade DispatcherCheckPeerCN.
-
Abra um terminal e altere o diretório atual para o diretório que contém o arquivo CH.sh das bibliotecas OpenSSL.
-
Digite o seguinte comando e forneça valores quando solicitado. Se necessário, use o nome de host da instância de publicação como o Nome comum. O nome do host é um nome que pode ser resolvido por DNS para o endereço IP da renderização:
code language-shell ./CA.sh -newreq
Se você estiver usando uma CA de terceiros, envie o arquivo newreq.pem para a CA para assinar. Se você estiver agindo como CA, continue para a etapa 3.
-
Para assinar o certificado usando o certificado da CA, digite o seguinte comando:
code language-shell ./CA.sh -sign
Dois arquivos chamados de
newcert.pem
enewkey.pem
serão criados no diretório que contém os seus arquivos de gerenciamento da CA. Esses dois arquivos são o certificado público e a chave privada do computador de renderização, respectivamente. -
Renomeie
newcert.pem
comorendercert.pem
e renomeienewkey.pem
comorenderkey.pem
. -
Repita as etapas 2 e 3 para criar um certificado e uma chave pública para o módulo do Dispatcher. Use um nome comum específico para a instância do Dispatcher.
-
Renomeie
newcert.pem
comodispcert.pem
e renomeienewkey.pem
comodispkey.pem
.
Configuração do SSL no computador de renderização configuring-ssl-on-the-render-computer
Configure o SSL na instância de renderização usando os arquivos rendercert.pem
e renderkey.pem
.
Conversão do certificado de renderização para o formato JKS (Java™ KeyStore) converting-the-render-certificate-to-jks-format
Use o comando a seguir para converter o certificado de renderização, que é um arquivo PEM, em um arquivo PKCS#12. Inclua também o certificado de CA que assinou o certificado de renderização:
-
Em uma janela de terminal, altere o diretório atual para o local do certificado de renderização e da chave privada.
-
Para converter o certificado de renderização, que é um arquivo PEM, em um arquivo PKCS#12, digite o seguinte comando. Inclua também o certificado de CA que assinou o certificado de renderização:
code language-shell openssl pkcs12 -export -in rendercert.pem -inkey renderkey.pem -certfile demoCA/cacert.pem -out rendercert.p12
-
Para converter o arquivo PKCS#12 para o formato Java™ KeyStore (JKS), digite o seguinte comando:
code language-shell keytool -importkeystore -srckeystore servercert.p12 -srcstoretype pkcs12 -destkeystore render.keystore
-
O Java™ Keystore será criado usando um alias padrão. Altere o alias, se desejar:
code language-shell keytool -changealias -alias 1 -destalias jettyhttp -keystore render.keystore
Inclusão do certificado de Autoridade de Certificação à truststore do renderizador adding-the-ca-cert-to-the-render-s-truststore
Se estiver agindo como CA, importe seu certificado de CA em um keystore. Em seguida, configure a JVM que executa a instância de renderização para confiar no keystore.
-
Use um editor de texto para abrir o arquivo cacert.pem e remova todo o texto que antecede a seguinte linha:
-----BEGIN CERTIFICATE-----
-
Use o seguinte comando para importar o certificado em um keystore:
code language-shell keytool -import -keystore cacerts.keystore -alias myca -storepass password -file cacert.pem
-
Para configurar a JVM que executa sua instância de renderização para confiar no keystore, use a seguinte propriedade do sistema:
code language-shell -Djavax.net.ssl.trustStore=<location of cacerts.keystore>
Por exemplo, se você usar o script crx-quickstart/bin/quickstart para iniciar sua instância de publicação, você poderá modificar a propriedade CQ_JVM_OPTS:
code language-shell CQ_JVM_OPTS='-server -Xmx2048m -XX:MaxPermSize=512M -Djavax.net.ssl.trustStore=/usr/lib/cq6.0/publish/ssl/cacerts.keystore'
Configuração da instância de renderização configuring-the-render-instance
Para configurar o serviço HTTP da instância de renderização para usar SSL, use o certificado de renderização com as instruções da seção Enable SSL on the Publish Instance
:
- AEM 6.2: Ativar HTTP por SSL
- AEM 6.1: Ativar HTTP por SSL
- Versões anteriores do AEM: consulte esta página.
Configuração do SSL para o módulo Dispatcher configuring-ssl-for-the-dispatcher-module
Para configurar o Dispatcher para usar o SSL mútuo, prepare o certificado do Dispatcher e configure o módulo do servidor Web.
Criação de um certificado de Dispatcher unificado creating-a-unified-dispatcher-certificate
Combine o certificado do Dispatcher e a chave privada não criptografada em um único arquivo PEM. Use um editor de texto ou o comando cat
para criar um arquivo semelhante ao seguinte exemplo:
-
Abra um terminal e altere o diretório atual para o local do arquivo dispkey.pem.
-
Para descriptografar a chave privada, insira o seguinte comando:
code language-shell openssl rsa -in dispkey.pem -out dispkey_unencrypted.pem
-
Use um editor de texto ou o comando
cat
para combinar a chave privada não criptografada e o certificado em um único arquivo semelhante ao seguinte exemplo:code language-xml -----BEGIN RSA PRIVATE KEY----- MIICxjBABgkqhkiG9w0B... ...M2HWhDn5ywJsX -----END RSA PRIVATE KEY----- -----BEGIN CERTIFICATE----- MIIC3TCCAk... ...roZAs= -----END CERTIFICATE-----
Especificação do certificado a ser usado para o Dispatcher specifying-the-certificate-to-use-for-dispatcher
Adicione as seguintes propriedades à Configuração do módulo Dispatcher (em httpd.conf
):
DispatcherCertificateFile
: O caminho para o arquivo de certificado unificado do Dispatcher, contendo o certificado público e a chave privada não criptografada. Esse arquivo é usado quando o servidor SSL solicita o certificado de cliente do Dispatcher.DispatcherCACertificateFile
: o caminho para o arquivo de certificado da CA. Usado se o servidor SSL apresentar uma CA em que uma autoridade raiz não confia.DispatcherCheckPeerCN
: Opção de ativar (On
) ou desativar (Off
) a verificação do nome do host para certificados de servidor remoto.
O código a seguir é um exemplo de configuração:
<IfModule disp_apache2.c>
DispatcherConfig conf/dispatcher.any
DispatcherLog logs/dispatcher.log
DispatcherLogLevel 3
DispatcherNoServerHeader 0
DispatcherDeclineRoot 0
DispatcherUseProcessedURL 0
DispatcherPassError 0
DispatcherCertificateFile disp_unified.pem
DispatcherCACertificateFile cacert.pem
DispatcherCheckPeerCN On
</IfModule>