Upgrade to Pro — share decks privately, control downloads, hide ads and more …

HTTPS - O que é e como proteger sua aplicação, para você e seus usuários

HTTPS - O que é e como proteger sua aplicação, para você e seus usuários

Software utilizado durante a parte prática:
► Wireshark: https://www.wireshark.org/. Download: https://www.wireshark.org/#download.

Paulo Salgado

March 10, 2017
Tweet

More Decks by Paulo Salgado

Other Decks in Technology

Transcript

  1. O que é?  HTTPS (Hyper Text Transfer Protocol Secure)

    é uma camada adicional de segurança.  Dados transmitidos por meio de uma conexão criptografada e que se verifique a autenticidade do servidor por meio de certificados digitais.
  2. Por que usar?  Quando se deseja evitar que a

    informação transmitida entre o cliente e o servidor seja visualizada/modificada por terceiros. tracert sistema.moli.eco.br – rastreio dos nós intermediários  Comprovar a autenticidade de um site e da empresa.
  3. Como funciona?  Uso de criptografia de chave assimétrica. 

    Um sistema de chaves assimétricas usa duas chaves para cifrar a comunicação, a chave “pública” e a chave “privada”. Qualquer coisa cifrada com a chave pública só pode ser decifrada com a chave privada e vice-versa.
  4. Como funciona?  Como o nome sugere, a chave privada

    deve ficar protegida e armazenada apenas pelo dono.  No caso de um sistema web, a chave privada fica armazenada no servidor. Inversamente, a chave pública é projetada para ser distribuída para qualquer um que precise decifrar a informação – navegadores e aplicativos.
  5. Distribuição da chave pública  Aplicativo: o arquivo do certificado

    com a chave pública é armazenado no aplicativo e anexado a comunicação.  Web: o certificado é devolvido pelo servidor logo na primeira requisição e ele é reutilizado nas requisições posteriores.
  6. Wireshark  Wireshark é uma ferramenta para sniffer de rede

     Filter Expression sem HTTPS: ip.dst == ip or ip.src == ip and http  Com HTTPS: ip.dst == ip or ip.src == ip (Ip pode variar) Interc. Requisição: HTML Form URL Encoded Resposta: File Data HTTPS: TLSV1.2 > Secure Socket Layer > ...
  7. Vale a pena?  Desvantagens:  Custo.  Gerenciamento das

    chaves. Onde guardar?  Manutenção do certificado. Renovação anual.  Navegadores estão quase obrigando o uso.  Vantagens:  Segurança na comunicação.  Prioridade na busca do Google.  Mensagem “seguro” e barra verde na URL (depende do nível do certificado).
  8.  Suporte a keystores.  Repositório de certificados seguros. 

    Usuário acessa o site e o WildFly consulta o repositório, verificando quais certificados precisa disponibilizar.  Todas as configurações necessárias são feitas em apenas um arquivo. WildFly
  9.  Ferramenta disponível no Java SE.  Multiplataforma.  É

    possível trabalhar com um repositório de certificados.  Acesso via Prompt de comando/Terminal. Usando a ferramenta keytool
  10. keytool -genkeypair -alias { keyname } -keyalg { RSA }

    -keysize { 2048 } -keystore { key-file.keystore } -keypass { password } -storepass { password } -dname { "cn=www.sitedaempresa.com.br“ } Criando um repositório de certificados
  11. Information Description Distinguished Name (DN) This is fully qualified domain

    name that you wish to secure e.g. 'www.example.com’ or 'mail.example.com'. This includes the Common Name (CN) e.g. 'www' or 'mail' Business name / Organization Usually the legal incorporated name of a company and should include any suffixes such as Ltd., Inc., or Corp. Department Name / Organizational Unit e.g. HR, Finance, IT Town/City e.g. London, Waterford, Paris, New York, Dhaka, Kochi Province, Region, County or State This should not be abbreviated e.g. Sussex, Normandy, New Jersey Country The two-letter ISO code for the country where your organization is located e.g. GB, FR or US etc.. An email address An email address to contact the organization. Usually the email address of the certificate administrator or IT department Distinguished Name
  12. keytool -certreq -keystore { key-file.keystore } -alias { keyname }

    -keyalg { RSA } -file { sign-request.csr } Gerando uma sign request
  13. Fluxo de assinatura do certificado Envio da Sign Request Preenchimento

    dos formulários Confirmar acesso ao domínio Download dos certificados Via e-mail ou acesso URL
  14. keytool -import -trustcacerts -alias { root/INTER$/keyname } -file { certificate.crt

    } -keystore { key-file.keystore } Importando os certificados para a keystore
  15.  Ainda no diretório do slide anterior, editar o arquivo

    standalone.xml: Configurando o WildFly: referenciando a keystore
  16.  Enquanto o site estiver sendo desenvolvido localmente, recomenda-se o

    uso de uma keystore sem certificados.  Não é possível solicitar um certificado assinado e validá-lo no ambiente local.  Objetivo é apenas testar a conexão HTTPS. Ambiente de desenvolvimento
  17.  Caso a Certificate Authority (CA) do certificado seja conhecida,

    basta utilizar objetos HTTPS na conexão.  Android possui uma keystore com certificados autorizados.  No ambiente de desenvolvimento é utilizado um certificado auto-assinado para testes.  Nesse caso o Android lançará um erro na conexão. Utilizando HTTPS para acessar serviços
  18. keytool -genkeypair -alias { keyname } -ext SAN=IP:{ ip }

    -keyalg { RSA } -keysize { 2048 } -keystore { key-file.keystore } -keypass { password } -storepass { password } -dname { "cn=www.sitedaempresa.com.br“ } Criando um repositório de certificados
  19. keytool -export -alias { keyname } -storepass { password }

    -file { certificate.crt } -keystore { key-file.keystore } Assinando certificados localmente
  20. E quanto ao preço? Preços + entendendo os diferentes tipos

    de certificado disponíveis no mercado
  21. GoDaddy R$ 183,99 > R$ 359,99 > R$ 399,99 R$

    539,99 > R$ 899,99 > R$ 1.259,99 R$ 1.077,99 > R$ 1.439,99
  22. Confluence  Espaço “Base de Conhecimento”:  Configurando o HTTPS

    no WildFly: https://techno.atlassian.net/wiki/display/ST/Configurando+o+HTTPS+no +WildFly.  Criando um Certificado Digital: https://techno.atlassian.net/wiki/display/ST/Criando+um+Certificado+ Digital. Observação: páginas em construção.
  23. Confluence  Espaço “Base de Conhecimento”:  Aplicativos Android: Utilizando

    Certificados: https://techno.atlassian.net/wiki/display/ST/Aplicativos+Android%3A+U tilizando+Certificados. Observação: páginas em construção.
  24. Referências  Base de Conhecimento, Techno Software. Confluence. Disponível em:

    https://techno.atlassian.net/wiki/display/ST/Base+de+Conhecimento.  Certificate signing request. Wikipedia. Disponível em: https://en.wikipedia.org/wiki/Certificate_signing_request.  Distinguished Names, Web Services Security Guide. Red Hat Jboss Fuse. Disponível em: https://access.redhat.com/documentation/en- US/Red_Hat_JBoss_Fuse/6.0/html/Web_Services_Security_Guide/files/i284895.html.  Install a SSL Certificate on a Java Based Web Server. SSL.com. Disponível em: https://www.ssl.com/how-to/install-ssl-java-web-server/.
  25. Referências  keytool-Key and Certificate Management Tool, Java SE Documentation.

    Oracle. Disponível em: https://docs.oracle.com/javase/6/docs/technotes/tools/windows/keytool.html.  Segurança com HTTPS e SSL. Android Developers. Disponível em: https://developer.android.com/training/articles/security-ssl.html.  SSL.com. Disponível em: https://www.ssl.com/.  TLS v1.2 and KSoap2. Grupos do Google. Disponível em: https://groups.google.com/forum/#!topic/ksoap2-android/x2ns8t1htdM.