Executando o Confluence por SSL ou HTTPS
Aplicações Atlassian permitem o uso de SSL dentro de nossos produtos, porém o Suporte Atlassian não oferece assistência para configuração. Como consequência, Atlassian não pode garantir qualquer suporte para isso.
- Caso seja necessário obter assistência para conversões de certificados, consulte o fornecedor do certificado.
- Caso seja necessário obter assistência para a configuração, crie uma pergunta no Atlassian Answers.
Este documento informa como configurar o Confluence para habilitar o acesso através de HTTPS (HTTP sobre SSL), para que seus logins e dados do Confluence estejam criptografados durante o transporte de e para o Confluence. Criptografia SSL é uma boa forma de proteger seus dados do Confluence e logins de usuários de serem interceptados e lidos por outros.
Estas instruções se aplicam às seguintes plataformas:
- Confluence – Apache Tomcat é o servidor da aplicação enviado com o Confluence e é o único servidor de aplicação com suporte.
Se estiver usando Servidor Apache HTTP (httpd) ou NGINX, consulte Apache com mod_proxy ou Executando o Confluence por trás do NGINX com SSL para obter instruções sobre como encerrar uma conexão SSL no servidor da web externo. - Java 8 – JDK 1.8 é a versão Java com suporte para o Confluence. Observe que você precisa do JDK, já que ele inclui o utilitário
keytool
usado nas instruções abaixo. O JRE não é suficiente.
A porta do conector padrão para o Confluence é 8090.
Nesta página:
Tópicos relacionados
- Configuration HOW-TO SSL na documentação do Apache Tomcat 8.0
- keytool – Ferramenta de Gerenciamento de Chave e Certificado na documentação de Java SE
- Conectando-se a aplicações LDAP ou JIRA ou outros serviços pelo SSL
Passo 1. Criar ou solicitar um novo certificado SSL
Será necessário um certificado SSL válido antes da possibilidade de habilitar HTTPS. Se você já tiver um certificado pronto, siga para o passo 2 abaixo.
Você pode escolher criar um certificado autoassinado ou usar um certificado emitido por uma autoridade certificadora (AC, também chamada de autoridade de certificação). Ambas as opções estão descritas abaixo.
Se você não se sente confortável usando utilitários de linhas de comando KeyStore Explorer é um substituto GUI útil para a linha de comando Java Keytool.
Opção de certificado 1 – Criar um certificado autoassinado
Certificados autoassinados são úteis se for solicitada criptografia, mas não for necessário verificar a identidade do site solicitante. De modo geral, você pode usar um certificado autoassinado em um ambiente de teste ou em redes corporativas internas (intranets).
Como o certificado não é assinado por uma autoridade de certificação (AC) os usuários podem receber uma mensagem de que o site não é seguro e podem ter que seguir uma série de passos para aceitar o certificado antes de poder acessá-lo. Normalmente isso somente acontece na primeira vez em que se acessa o site.
Siga os passos abaixo para gerar um certificado usando o utilitário Java keytool
. Essa ferramenta está inclusa no JDK.
Use o utilitário Java
keytool
para gerar o certificado:Muitos emissores de SSL (incluindo GoDaddy e RapidSSL) agora requerem uma chave de tamanho 2048 bit. Para gerar uma chave com criptografia 2048 bit, adicione "-keysize 2048" a esses pedidos.No Windows, execute o seguinte comando no prompt de comando:
"%JAVA_HOME%\bin\keytool" -genkeypair -keysize 2048 -alias tomcat -keyalg RSA -sigalg SHA256withRSA
Nos sistemas OS X ou com base UNIX, execute o seguinte comando no prompt de comando:
$JAVA_HOME/bin/keytool -genkeypair -keysize 2048 -alias tomcat -keyalg RSA -sigalg SHA256withRSA
- Quando uma senha for requisitada:
- Especifique a senha que deseja usar para o certificado (chave privada). Observe que o texto da senha não aparecerá enquanto você o digita.
- Lembre-se da senha que escolher, pois ela será necessária no passo seguinte quando editar o arquivo de configuração.
A senha padrão é "
changeit
".O Tomcat tem um problema conhecido com senhas que contêm caracteres especiais. Você deve usar uma senha que somente contenha caracteres alfanuméricos.
- Siga os passos para especificar seu nome, organização e localização. Essa informação será usada para construir o X.500 Distinguished Name (DN) da entidade. O CN ("Qual seu primeiro nome e último sobrenome?") deve ser o mesmo do nome de host completamente qualificado do servidor executando o Confluence, senão o Tomcat não conseguirá usar o certificado para SSL. Por exemplo, para um Confluence sendo executado em um servidor chamado "confluence .exemplo.com":
CN=confluence.example.com, OU=Java Software Division, O=Sun Microsystems Inc, C=US
- Digite "
y
" para confirmar os detalhes. - Quando a senha para "
tomcat
" for requisitada (o nome digitado no comando keytool acima), aperte a tecla "Enter". Isso especifica que sua entrada do repositório de chave terá a mesma senha que a sua senha privada. Você DEVE usar aqui a mesma senha que foi usada como senha do repositório de chave. Esta é uma restrição da implementação do Tomcat. - Seu certificado está pronto. Vá para o passo 2 abaixo.
Opção de certificado 2 – Use um certificado emitido por uma autoridade certificadora
Quando o Confluence estiver sendo executado em um ambiente de produção, será necessário um certificado emitido por uma autoridade de certificação (AC, também chamada de "autoridade certificadora") como VeriSign, Thawte ou digicert. As instruções abaixo são adaptadas da documentação do Tomcat.
Primeiro, você gera um certificado local e cria um "pedido de assinatura de certificado" (CSR) baseado em tal certificado. Você enviará o CSR à autoridade de certificação da sua escolha. A AC usará o CSR para gerar um certificado para você.
- Use o utilitário Java
keytool
para gerar um certificado local, como descrito na seção anterior. Use o utilitário
keytool
para gerar um CSR, substituindo o texto<MY_KEYSTORE_FILENAME>
com o nome e o caminho do arquivo.keystore
gerado para seu certificado local:keytool -certreq -keyalg RSA -alias tomcat -file certreq.csr -keystore <MY_KEYSTORE_FILENAME>
- Envie o arquivo gerado chamado
certreq.csr
para a autoridade certificadora escolhida. Consulte a documentação no site da AC para descobrir como fazer isso. - A AC enviará um certificado a você.
Importe o novo certificado para seu repositório de chave local:
keytool -importcert -alias tomcat -keystore <MY_KEYSTORE_FILENAME> -file <MY_CERTIFICATE_FILENAME>
Observe que algumas ACs requerem que você instale um certificado intermediário antes de importar seu certificado. Consulte a documentação da sua AC para instalar seu certificado com sucesso.
Se você receber um erro, e caso use Verisign ou GoDaddy, você poderá precisar exportar o certificado para o formato PKCS12 junto com a chave privada.
Primeiro, remova o certificado adicionado acima do repositório de chave:
keytool -delete -alias tomcat -keystore <MY_KEYSTORE_FILENAME>
Então, exporte para o formato PKCS12:
openssl pkcs12 -export -in <MY_CERTIFICATE_NAME> -inkey <MY_PRIVATEKEY_NAME> -out <MY_PKC12_KEYSTORE_NAME> -name tomcat -CAfile <MY_ROOTCERTIFICATE_NAME-alsoCalledBundleCertificateInGoDaddy> -caname root
Depois importe do PKCS12 para jks:
keytool -importkeystore -deststorepass <MY_DESTINATIONSTORE_PASSWORD> -destkeypass <MY_DESTINATIONKEY_PASSWORD> -destkeystore <MY_KEYSTORE_FILENAME> -srckeystore <MY_PKC12_KEYSTORE_NAME> -srcstoretype PKCS12 -srcstorepass <MY_PKC12_KEYSTORE_PASSWORD> -alias tomcat
Passo 2. Modifique o arquivo de configuração do servidor na sua instalação do Confluence
- Edite o arquivo de configuração do servidor neste local:
<CONFLUENCE_INSTALLATION>/conf/server.xml
. Retire o comentário nas seguintes linhas:
<Connector port="8443" maxHttpHeaderSize="8192" maxThreads="150" minSpareThreads="25" protocol="org.apache.coyote.http11.Http11NioProtocol" enableLookups="false" disableUploadTimeout="true" acceptCount="100" scheme="https" secure="true" clientAuth="false" sslProtocols="TLSv1.2" sslEnabledProtocols="TLSv1.2" SSLEnabled="true" URIEncoding="UTF-8" keystorePass="<MY_CERTIFICATE_PASSWORD>"/>
- Substitua o texto <
MY_CERTIFICATE_PASSWORD>
pela senha que você especificou para seu certificado. - Certifique-se de que o par atributo-valor
SSLEnabled="true"
é parte do elementoConnector
, conforme mostrado acima. Se esse atributo não estiver presente, tentativas de acessar o Confluence ultrapassarão o tempo limite. - Salve o arquivo de configuração do servidor.
Não remova o conector
http
, pois algumas funções internas, como verificação de integridade, ainda requerem HTTP.
Passo 3. Especifique o local do seu certificado
Como padrão, o Tomcat espera que o arquivo do repositório de chave seja nomeado .keystore
e esteja localizado no diretório principal do usuário onde o Tomcat está sendo executado (que pode ou não ser o mesmo que seu próprio diretório principal). Isso significa que, como padrão, o Tomcat procurará por seus certificados SSL no seguinte local:
- No Windows:
C:\users\#CURRENT_USER#\.keystore
- Nos sistemas OS X e com base UNIX:
~/.keystore
Você pode decidir mover o certificado para outro local. Se seu certificado não estiver no local padrão, será necessário atualizar seu arquivo de configuração do servidor como descrito abaixo, para que o Tomcat possa encontrar seu certificado.
- Edite o arquivo de configuração do servidor neste local: <
CONFLUENCE_INSTALLATION>/conf/server.xml
Adicione o atributo
keystoreFile="<MY_CERTIFICATE_LOCATION>"
ao elemento doConnector
, para que o elemento fique assim:<Connector port="8443" maxHttpHeaderSize="8192" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" disableUploadTimeout="true" acceptCount="100" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" SSLEnabled="true" URIEncoding="UTF-8" keystorePass="<MY_CERTIFICATE_PASSWORD>" keystoreFile="<MY_CERTIFICATE_LOCATION>"/>
- Substitua o texto
<MY_CERTIFICATE_LOCATION>
pelo caminho para o seu certificado, incluindo o caminho e o nome do arquivo.keystore
. - Salve o arquivo de configuração do servidor.
Passo 4. Altere seu URL base do Confluence para HTTPS
- No seu navegador, vá para o console de administração do Confluence.
- Altere seu URL base do servidor para HTTPS. Consulte a documentação sobre configurar o URL base do servidor.
- Reinicie o Tomcat e acesse o Confluence em
https://<MY_BASE_URL>:8443/
.
Passo 5. Adicione uma restrição de segurança para redirecionar todos os URLs para HTTPS
Apesar do HTTPS já estar ativado e disponível, os antigos URLs HTTP (http://localhost:8090) ainda estão disponíveis. Agora, é necessário redirecionar os URLs para seus HTTPS equivalentes. Isso pode ser feito ao adicionar restrições de segurança em web.xml
. Isso levará o Tomcat a redirecionar pedidos que chegam por uma porta não SSL.
- Verifique se seu site Confluence utiliza a macro RSS Se seu site está com a macro RSS habilitada, pode ser necessário configurar o redirecionamento de URL com uma regra de firewall em vez de editar o arquivo
web.xml
. Ignore os passos abaixo e siga para os passos na página Macro RSS feeds. - Ou então edite o arquivo em
<CONFLUENCE_INSTALLATION>/confluence/WEB-INF/web.xml
. Adicione a seguinte declaração ao final do arquivo, antes da tag
</web-app>
:<security-constraint> <web-resource-collection> <web-resource-name>Restricted URLs</web-resource-name> <url-pattern>/</url-pattern> </web-resource-collection> <user-data-constraint> <transport-guarantee>CONFIDENTIAL</transport-guarantee> </user-data-constraint> </security-constraint>
- Reinicie o Confluence e acesse http://localhost:8090. Você deverá ser redirecionado para https://localhost:8443/login.action.
Agora, o Confluence terá dois arquivos web.xml. O outro estará em
<CONFLUENCE_INSTALLATION>/conf/web.xml
. Adicione as restrições de segurança somente a <CONFLUENCE_INSTALLATION>/confluence/WEB-INF/web.xml
, conforme descrito acima.
Notas
- Informações prévias para a geração de um certificado: O comando "
keytool -genkeypair
" gera um par de chaves que consistem em uma chave pública e uma chave privada associada, e armazena ambas em um repositório de chave. O comando empacota a chave pública em um certificado autoassinado X.509 v3, que é armazenada como uma cadeia de certificado com um único elemento. Essa cadeia de certificados e a chave privada são armazenadas em uma entrada nova do repositório de chave, identificado peloalias
que você especificar no comando. A documentação Java SE tem uma boa visão geral do utilitário.
- Porta SSL personalizada: Se você alterou o valor padrão de 8443 da porta pela qual o conector SSL é executado, você deverá atualizar o atributo
redirectPort
do conector HTTP padrão para refletir a nova porta SSL. O Tomcat precisa dessa informação para saber para qual porta ele deverá redirecionar quando um pedido a caminho precisar ser seguro. Múltiplas instâncias no mesmo host: Ao executar mais de uma instância no mesmo host, é importante especificar o atributo address no arquivo
<CONFLUENCE_INSTALLATION>/conf/server.xml
, pois, como padrão, o conector monitorará todas as interfaces de rede disponíveis, de modo que especificar o endereço previne que haja conflitos com conectores sendo executados na mesma porta padrão. Consulte a documentação do Tomcat Connector para obter mais informações sobre a definição do atributo address: https://tomcat.apache.org/tomcat-8.0-doc/config/http.html<Connector port="8443" address="your.confluence.url.com" maxHttpHeaderSize="8192" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" disableUploadTimeout="true" acceptCount="100" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" SSLEnabled="true" URIEncoding="UTF-8" keystorePass="<MY_CERTIFICATE_PASSWORD>" keystoreFile="<MY_CERTIFICATE_LOCATION>"/>
- Proteção somente para logins ou para espaços individuais: A partir do Confluence 3.0, a Atlassian não oferece mais suporte HTTPS somente para logins ou páginas específicas. Oferecemos suporte HTTPS apenas para sites inteiros. Para entender as razões por trás dessa decisão, consulte CONF-18120 e CONF-4116.
Solução de problemas
- Verifique os artigos da base de conhecimento do Confluence sobre solução de problemas SSL
Problemas com o Internet Explorer impossibilitando o download de anexos: Aplicar SSL em todo o site pode impedir que o IE baixe anexos corretamente. Para corrigir esse problema, edite
<CONFLUENCE_INSTALLATION>/conf/server.xml
e adicione a seguinte linha dentro do elemento<Context ... />
:<Valve className="org.apache.catalina.authenticator.NonLoginAuthenticator" disableProxyCaching="true" securePagesWithPragma="false" />