Mostrar mensagens com a etiqueta ssl. Mostrar todas as mensagens
Mostrar mensagens com a etiqueta ssl. Mostrar todas as mensagens

quarta-feira, 9 de novembro de 2011

Criar um CA e assinar certificados

Por vezes é necessário criar uma CA (CertificateAuthority) e assinar certificados com a CA. Obviamente que quer a CA quer os certificados não devem ser usados num ambiente de produção. Nesse caso usar uma das CAs oficiais.

Passos resumidos:
  1. Criar a chave e o certificado da CA
  2. Criar a chave e o pedido de certificado para o servidor (usar o mesmo método para criar vários)
  3. Assinar o pedido de certificado para o servidor com a CA criada

Passo 1:

openssl genrsa -des3 -out ca.key 4096
openssl req -new -x509 -days 365 -key ca.key -out ca.crt

Passo 2:

openssl genrsa -des3 -out server.key 4096
openssl req -new -key server.key -out server.csr


Passo 3:

openssl x509 -req -days 365 -in server.csr -CA ca.crt -CAkey ca.key -set_serial 01 -out server.crt


Aquando da criação do certificado da CA e do pedido de certificado de servidor ter em atenção que o Common Name tem de ser diferente. Caso contrário poderão surgir problemas inesperados quando se usam os certificados.

No exemplo acima os certificados têm a validade de um ano.

O número de série deve ser diferente se o mesmo certificado for regerado, para evitar problemas nos clientes que já tenham o certificado em cache.


Referências:
http://www.tc.umn.edu/~brams006/selfsign.html

quarta-feira, 2 de novembro de 2011

Activar SSL entre Apache e Weblogic

A activação de SSL entre o Apache (a actuar como Reverse Proxy) e o Weblogic é relativamente simples.
A configuração que irá ser demonstrada aqui não usa o Plug-in Weblogic existente para Apache. Antes ir-se-á usar apenas e só directivas Apache.

Existem alguns pressupostos na configuração seguinte:
  1. O Apache já está configurado com SSL
  2. O Weblogic já está preparado para SSL (certificados criados, keystores configuradas)
Uma configuração possível é então a seguinte:
  1. Activar a opção SSL Enabled no Weblogic. Indicar o porto de escuta de SSL ([Domínio] -> Environment -> Servers -> [Servidor] -> Configuration -> General)
    1. SSL Listen Port Enabled
    2. SSL Listen Port
  2. Adicionar o certificado do Apache à keystore do Weblogic. Efectuar este passo com a ferramenta keytool, por exemplo.
  3. No Apache na secção <VirtualHost *:443> adicionar a instrução: SSLProxyEngine on
  4. Se no Apache se tiver configurado o mod_proxy, um exemplo de configuração para Reverse Proxy é:
<Location / >
  ProxyPass https://weblogic.host.com:7002/futebol
  ProxyPassReverse https://weblogic.host.com:7002/futebol
</Location / >

terça-feira, 18 de outubro de 2011

Configuração two-way SSL no Apache

Para se obter uma configuração two-way SSL (comunicação SSL duas vias entre Cliente e Servidor) no Apache com certificados auto-assinados (self-signed) efectuar os passos seguintes (é uma das maneiras. eventualmente há melhores maneiras):
  • Parte-se do principio que o Apache já está configurado para SSL
  • Em cima desta configuração:
    • No ficheiro ssl.conf
      • Descomentar a linha
        SSLCACertificateFile /etc/apache2/ssl.crt/ca-bundle.crt
      • Dentro da tag <virtualhost> ...,</virtualhost> incluir uma linha do género
        Include /etc/apache2/vhost.d/*.conf
        que é o local ou o ficheiro que contém as configurações SSL mais específicas que irão ser efectuada
    • Supondo, por exemplo, que se quer proteger uma location com two-way SSL
      • <location />
        SSLVerifyClient optional
        SSLUserName SSL_CLIENT_S_DN_CN

        SSLRequire %{SSL_CLIENT_S_DN_CN} eq "Teste"

        </location>
    • Se não existir criar o ficheiro /etc/apache2/ssl.crt/ca-bundle.crt
    • Tendo o certificado cliente basta efectuar: cat client.crt > ca-bundle.crt
    • Restart do apache e tem-se comunicação 2 way SSL

Na location, a linha SSLRequire %{SSL_CLIENT_S_DN_CN} eq "Teste" indica que só os certificados de cliente que tenham o CN=Teste é que serão aceites. É possível efectuar outras configurações. Para mais detalhes ver: httpd.apache.org/docs/2.2/mod/mod_ssl.htm

Configuração two-way SSL no SoapUi

Para configurar two-way SSL (SSL duas vias) no SoapUI, é necessário antes de mais ter a versão 4 ou superior. Existem problemas com a versão 3.6.1 por isso o melhor mesmo é actualizar para a versão mais recente.

A configuração two-way SSL implica que existam dois certificados, um de Cliente e um de Servidor.

Para o cliente basta criar um ficheiro p12 com a chave publica e  privada, e de lá exportar o certificado de cliente para adicionar ao servidor.

Caso o certificado do servidor seja auto-assinado, é necessário adicionar esse mesmo certificado ao ficheiro p12 do cliente.

No SoapUi:

File -> Preferences

SSL Settings

Na KeyStore indicar o ficheiro p12 criado para o cliente.
Na KeyStore Password indicar a password para o ficheiro p12.


Criar o ficheiro de cliente p12 e respectivo certificado

Instalar, por exemplo, o programa KeyStore Explorer.

  1. Create a new KeyStore
    1. JKS
  2. Tools
    1. Generate Key Pair
    2. Ok
    3. Carregar no botão "Edit Name"
      1. Preencher os campos (pelo menos o CN deverá ser preenchido)
      2. Escolher um alias
      3. OK
      4. Escolher e confirmar a password privada
      5. Ok
      6. Ok
  3. Com o botão da direita carregar em cima da nova chave (vai-se exportar o certificado a importar no servidor)
    1. Escolher formato e nome de ficheiro
    2. Export
    3. Ok
  4. Salvar a keystore
    1. File -> Save
    2. Introduzir a password para a keystore
    3. Ok


quinta-feira, 16 de julho de 2009

Ignorando um certificado SSL no LDAP

Foi necessário efectuar uns testes numa ligação a um LDAP a partir de uma classe java. Esta ligação tinha de ser feita por SSL. Daquilo que percebi dos tutoriais da SUN (http://java.sun.com/products/jndi/tutorial/ldap/index.html), o cliente java tinha de ter (importar) o certificado do servidor LDAP. Mas existia um problema. Não controlávamos o servidor LDAP, e até era possível obter o certificado SSL do servidor mas iria demorar pelo menos umas duas semanas até o termos. Não era tempo de esperar. Depois de alguma pesquisa, encontrei esta página com a solução. Usem e abusem :-D

http://blog.platinumsolutions.com/node/79

Basicamente, é criado um TrustManager que trata de aceitar todos os certificados sem os validar. A partir daí é possível testar a ligação sem ter o certificado do servidor instalado no cliente.