Apache, SSL e JServ
Internet ANTES do WWW Desde 1970 Rede militar Poucos pontos, 95% nos EUA Email, Telnet, FTP
A virada Tim Berners-Lee (1991) Sistema para encontrar informações Hipertexto HTTP e HTML Marc Andreesen (1993) Mosaic
Internet DEPOIS do WWW Desde 1994 Rede mundial Milhares de pontos, 60% nos EUA Tudo on line
Início do ambiente HTML apenas texto e hiperlinks HTML + formulários CGI HTML + imagens HTML + objetos Scripts, Applet’s, Flash...
CGI Common Gateway Interface Não é linguagem Programas executáveis Perl, C, C++, Python, Shell Delphi, Visual Basic, Visual C++
Problemas com CGI Falta de adaptação em ambiente multiusuário Falta de adaptação em ambiente multitarefa Execução “pesada” Linguagens interpretadas Falta de portabilidade Conceito “batch”
Necessidades dos clientes Dados corporativos na Web Informações em tempo real Banco de dados na Web Interatividade Segurança
Noções sobre o ambiente Unix Apache Mod_SSL OpenSSL JServ
Fatos sobre o WWW Ambiente não foi concebido para ser frontend Linguagem de autoria limitada Protocolo ineficaz Falta de segurança Lentidão
“ Desejos” Ambiente para prover segurança Transações e estado  Velocidade de processamento Capacidade de distribuição de tarefas e carga Escalabilidade
Segurança Encriptação das informações Chaves Chaves síncronas e assíncronas SSL Secure Sockets Layer Adaptações no servidor WWW
Java Orientada a objetos Versão simplificada do C++ Robusta Multitarefa “ Segura”
Applet’s e seus problemas Pesados Lentos Incompatibilidades Entre browsers Browsers antigos Entre JVM’s
A solução Servlets Todas as vantagens do Java Nenhuma desvantagem do Applet Interação com browser via formulário Execução mais rápida Reaproveitamento de código Acesso a banco de dados
Como funciona o ambiente Baseado em servidor WWW Servlet runner Formulário em HTML ou link Funciona em qualquer browser Parte gráfica limitada XML
Como funciona o ambiente II Click do cliente Recebimento do pedido Servidor WWW Interpretação do pedido Servlet runner Execução do código Retorno do resultado ao cliente
Esquema do Ambiente
Produtos necessários ao ambiente Tecnologias gratuitas Entidade certificadora
Recomendações Administrador competente Hardware “suficiente” Sistema operacional na última versão Patches de segurança Compilador C GCC Java JDK + JSDK
Conceitos sobre os produtos utilizados
Unix Integração total com a rede Sistema multiusuário Serviços separados Daemons
Apache Servidor mais popular para Unix Leve, confiável, gratuito Redirecionamento de documentos Servidores virtuais Segurança Integração com SSL
SSL Encriptação de informações em rede Gerador de chaves assíncronas RSA
Esquema SSL
Mod_SSL Módulo de integração Apache + SSL “ Ponte” entre serviços Manipulação das chaves
Esquema Mod_SSL
JServ Servlet runner Projeto Apache
Instalando o OpenSSL config Cria o Makefile  make make test make install
Chaves de encriptação 2 métodos de encriptação.  Chave assíncrona  RSA, para as trocas de chave iniciais Chave síncrona  Comunicação propriamente dita Tamanho de chave limitada 40 bits
Instalando o Mod_SSL ./configure \with-apache=../apache_1.3.x
Instalando o Apache SSL_BASE=SYSTEM ./configure  --prefix=/caminho/para/o/apache \ --enable-rule=SHARED_CORE  \  --e nable-module=so  enable-module=ssl make make install
Configurando o Apache
Instalando o JServ Instalação da  Java Virtual Machine ( JVM) JDK ou JRE ./configure --with-apache-install=/caminho/para/o/apache \ --prefix=/caminho/para/o/jserv \  --with-jdk-home=/caminho/para/o/jdk \  --with-jsdk=/caminho/para/o/jsdk.jar   make make install
Configuração do Jserv 3 arquivos de configuração httpd.conf jserv.conf jserv.properties
jserv.conf Include /caminho/para/o/arquivo/jserv.conf LoadModule jserv_module /usr/local/apache/libexec/mod_jserv.so Diz ao Apache para carregar o módulo JServ. ApJServManual off Indica ao Apache se ele deve iniciar o JServ em tempo de inicialização. O default é Off, isto é, o Apache vai iniciar o JServ quando for iniciado.
jserv.conf II ApJServProperties /usr/local/apache/conf/jserv/jserv.properties Arquivo onde estão as instruções de configuração do JServ, quando esse é iniciado em modo automático (ApjServManual Off) ApJServLogFile /usr/local/apache/logs/mod_jserv.log Local onde deve ser gravado o arquivo de log do JServ.
jserv.conf III ApJServLogLevel notice Nível de log para o arquivo de log. Essa instrução permite selecionar a quantidade de informação gerada pelo JServ. As opções são debug, info, notice, warn,. error, criti, alert, emerg. ApJServDefaultHost nome_do_servidor Nome (Internet) onde o JServ está sendo executado. O padrão é  localhost.
jserv.conf IV ApJServDefaultPort 8007 Número da porta onde o JServ vai atender pedidos. ApJServMount /Servlets /root Ponto onde as áreas de Servlets são montadas.
jserv.conf V <Location /jserv/>   SetHandler jserv-status   order deny,allow   deny from all   allow from .ccuec.unicamp.br </Location> Permite acesso às configurações do JServ via um cliente Web.
jserv.properties wrapper.bin=/usr/java1.1/bin/java Localização do interpretador Java. wrapper.classpath=/www/java/jsdk2.0/lib/jsdk.jar Indicadores de caminho a serem usadas pelo interpretador Java.
jserv.properties II wrapper.env=LD_LIBRARY_PATH=/usr/local/opt/IBMdb2/V5.0/lib Variáveis de ambiente a serem usadas pelo interpretador Java.  bindaddress=localhost Endereço IP do computador que pode fazer pedidos para o JServ.
jserv.properties III port=8007 Porta onde o JServ escuta pedidos.  zones=servlets Lista das áreas (zones) onde os Servlets estão localizados.
jserv.properties IV servlets.properties=/usr/local/apache/conf/jserv/servlets.properties Localização do arquivo de configuração de cada área.  security.maxConnections=50 Número máximo de conexões que o JServ aceita.
jserv.properties V security.allowedAddresses=127.0.0.1 Lista dos endereços IP que podem se conectar com o JServ.  log=true Possibilita a criação de logs.
jserv.properties VI log.file=/www2/apache/logs/jserv.log Nome do arquivo onde deve ser guardado o log.
zone.conf repositories=/usr/local/apache/Servlets Diretórios onde os programas desta área estão armazenados.  session.useCookies=true Especifica se o método usado para manter o controle da sessão é o Cookie.
zone.conf II session.timeout=1800000 Tempo em milisegundos para uma sessão ser invalidada.  servlets.startup=hello,snoop,org.fool.Dummy Nomes de Servlets que devem ser iniciados quando o JServ é iniciado.
zone.conf III servlet.hello.code=org.fool.Dummy Essa instrução define &quot;apelidos&quot; para Servlets, de modo que eles possam ser invocados pelo &quot;apelido&quot;.
Testes com Servlets Hello SessionServlet
Sugestões Profissional responsável pelo sistema Atualização e estudo Acompanhamento de novas versões Segurança e performance Backup’s frequentes Upgrade para novas versões
Performance e análise dos logs 4 arquivos de log Comparação e acompanhamento dos dados Monitoramento em tempo real Top, trafshow Monitoramento por relatórios http-analyse Testes de carga JMeter
Experiência Unicamp com o JServ Hardware  Sun Ultra 1, com 256Mb de Ram Software Apache 1.3.6, OpenSSL 3.9.1, Mod_SSL 1.2.1_1.3.6, JServ 1.0 Cargas máximas 30.000 consultas/dia 2.000 updates em base/dia
Perguntas mais comuns Saiu uma nova versão do <qualquer_produto>. É necessário fazer upgrade ? Existem cuidados de segurança adicionais para esse ambiente ? Como disponibilizar classes comuns para as diferentes zonas ? Como fazer um debug efetivo das minhas aplicações ?
Perguntas mais comuns II Por que quando ao testar aplicações o JServ para de funcionar ? Devo parar o JServ para fazer atualizações nos programas ? ?
Links e material para consulta Apache - http://www.apache.org/ Apache JServ - http://java.apache.org/ OpenSSL - http://www.openssl.org/ Mod_SSL - http://www.modssl.org/ RSA - http://www.rsa.com/ Unicamp - ftp://ftp.unicamp.br/ Sun Java soft - http://www.javasoft.com/ wwwstat, http analyze, JMeter
Perguntas ?
 

apache+ssl+Jserv

  • 1.
  • 2.
    Internet ANTES doWWW Desde 1970 Rede militar Poucos pontos, 95% nos EUA Email, Telnet, FTP
  • 3.
    A virada TimBerners-Lee (1991) Sistema para encontrar informações Hipertexto HTTP e HTML Marc Andreesen (1993) Mosaic
  • 4.
    Internet DEPOIS doWWW Desde 1994 Rede mundial Milhares de pontos, 60% nos EUA Tudo on line
  • 5.
    Início do ambienteHTML apenas texto e hiperlinks HTML + formulários CGI HTML + imagens HTML + objetos Scripts, Applet’s, Flash...
  • 6.
    CGI Common GatewayInterface Não é linguagem Programas executáveis Perl, C, C++, Python, Shell Delphi, Visual Basic, Visual C++
  • 7.
    Problemas com CGIFalta de adaptação em ambiente multiusuário Falta de adaptação em ambiente multitarefa Execução “pesada” Linguagens interpretadas Falta de portabilidade Conceito “batch”
  • 8.
    Necessidades dos clientesDados corporativos na Web Informações em tempo real Banco de dados na Web Interatividade Segurança
  • 9.
    Noções sobre oambiente Unix Apache Mod_SSL OpenSSL JServ
  • 10.
    Fatos sobre oWWW Ambiente não foi concebido para ser frontend Linguagem de autoria limitada Protocolo ineficaz Falta de segurança Lentidão
  • 11.
    “ Desejos” Ambientepara prover segurança Transações e estado Velocidade de processamento Capacidade de distribuição de tarefas e carga Escalabilidade
  • 12.
    Segurança Encriptação dasinformações Chaves Chaves síncronas e assíncronas SSL Secure Sockets Layer Adaptações no servidor WWW
  • 13.
    Java Orientada aobjetos Versão simplificada do C++ Robusta Multitarefa “ Segura”
  • 14.
    Applet’s e seusproblemas Pesados Lentos Incompatibilidades Entre browsers Browsers antigos Entre JVM’s
  • 15.
    A solução ServletsTodas as vantagens do Java Nenhuma desvantagem do Applet Interação com browser via formulário Execução mais rápida Reaproveitamento de código Acesso a banco de dados
  • 16.
    Como funciona oambiente Baseado em servidor WWW Servlet runner Formulário em HTML ou link Funciona em qualquer browser Parte gráfica limitada XML
  • 17.
    Como funciona oambiente II Click do cliente Recebimento do pedido Servidor WWW Interpretação do pedido Servlet runner Execução do código Retorno do resultado ao cliente
  • 18.
  • 19.
    Produtos necessários aoambiente Tecnologias gratuitas Entidade certificadora
  • 20.
    Recomendações Administrador competenteHardware “suficiente” Sistema operacional na última versão Patches de segurança Compilador C GCC Java JDK + JSDK
  • 21.
    Conceitos sobre osprodutos utilizados
  • 22.
    Unix Integração totalcom a rede Sistema multiusuário Serviços separados Daemons
  • 23.
    Apache Servidor maispopular para Unix Leve, confiável, gratuito Redirecionamento de documentos Servidores virtuais Segurança Integração com SSL
  • 24.
    SSL Encriptação deinformações em rede Gerador de chaves assíncronas RSA
  • 25.
  • 26.
    Mod_SSL Módulo deintegração Apache + SSL “ Ponte” entre serviços Manipulação das chaves
  • 27.
  • 28.
    JServ Servlet runnerProjeto Apache
  • 29.
    Instalando o OpenSSLconfig Cria o Makefile make make test make install
  • 30.
    Chaves de encriptação2 métodos de encriptação. Chave assíncrona RSA, para as trocas de chave iniciais Chave síncrona Comunicação propriamente dita Tamanho de chave limitada 40 bits
  • 31.
    Instalando o Mod_SSL./configure \with-apache=../apache_1.3.x
  • 32.
    Instalando o ApacheSSL_BASE=SYSTEM ./configure --prefix=/caminho/para/o/apache \ --enable-rule=SHARED_CORE \ --e nable-module=so enable-module=ssl make make install
  • 33.
  • 34.
    Instalando o JServInstalação da Java Virtual Machine ( JVM) JDK ou JRE ./configure --with-apache-install=/caminho/para/o/apache \ --prefix=/caminho/para/o/jserv \ --with-jdk-home=/caminho/para/o/jdk \ --with-jsdk=/caminho/para/o/jsdk.jar make make install
  • 35.
    Configuração do Jserv3 arquivos de configuração httpd.conf jserv.conf jserv.properties
  • 36.
    jserv.conf Include /caminho/para/o/arquivo/jserv.confLoadModule jserv_module /usr/local/apache/libexec/mod_jserv.so Diz ao Apache para carregar o módulo JServ. ApJServManual off Indica ao Apache se ele deve iniciar o JServ em tempo de inicialização. O default é Off, isto é, o Apache vai iniciar o JServ quando for iniciado.
  • 37.
    jserv.conf II ApJServProperties/usr/local/apache/conf/jserv/jserv.properties Arquivo onde estão as instruções de configuração do JServ, quando esse é iniciado em modo automático (ApjServManual Off) ApJServLogFile /usr/local/apache/logs/mod_jserv.log Local onde deve ser gravado o arquivo de log do JServ.
  • 38.
    jserv.conf III ApJServLogLevelnotice Nível de log para o arquivo de log. Essa instrução permite selecionar a quantidade de informação gerada pelo JServ. As opções são debug, info, notice, warn,. error, criti, alert, emerg. ApJServDefaultHost nome_do_servidor Nome (Internet) onde o JServ está sendo executado. O padrão é localhost.
  • 39.
    jserv.conf IV ApJServDefaultPort8007 Número da porta onde o JServ vai atender pedidos. ApJServMount /Servlets /root Ponto onde as áreas de Servlets são montadas.
  • 40.
    jserv.conf V <Location/jserv/> SetHandler jserv-status order deny,allow deny from all allow from .ccuec.unicamp.br </Location> Permite acesso às configurações do JServ via um cliente Web.
  • 41.
    jserv.properties wrapper.bin=/usr/java1.1/bin/java Localizaçãodo interpretador Java. wrapper.classpath=/www/java/jsdk2.0/lib/jsdk.jar Indicadores de caminho a serem usadas pelo interpretador Java.
  • 42.
    jserv.properties II wrapper.env=LD_LIBRARY_PATH=/usr/local/opt/IBMdb2/V5.0/libVariáveis de ambiente a serem usadas pelo interpretador Java. bindaddress=localhost Endereço IP do computador que pode fazer pedidos para o JServ.
  • 43.
    jserv.properties III port=8007Porta onde o JServ escuta pedidos. zones=servlets Lista das áreas (zones) onde os Servlets estão localizados.
  • 44.
    jserv.properties IV servlets.properties=/usr/local/apache/conf/jserv/servlets.propertiesLocalização do arquivo de configuração de cada área. security.maxConnections=50 Número máximo de conexões que o JServ aceita.
  • 45.
    jserv.properties V security.allowedAddresses=127.0.0.1Lista dos endereços IP que podem se conectar com o JServ. log=true Possibilita a criação de logs.
  • 46.
    jserv.properties VI log.file=/www2/apache/logs/jserv.logNome do arquivo onde deve ser guardado o log.
  • 47.
    zone.conf repositories=/usr/local/apache/Servlets Diretóriosonde os programas desta área estão armazenados. session.useCookies=true Especifica se o método usado para manter o controle da sessão é o Cookie.
  • 48.
    zone.conf II session.timeout=1800000Tempo em milisegundos para uma sessão ser invalidada. servlets.startup=hello,snoop,org.fool.Dummy Nomes de Servlets que devem ser iniciados quando o JServ é iniciado.
  • 49.
    zone.conf III servlet.hello.code=org.fool.DummyEssa instrução define &quot;apelidos&quot; para Servlets, de modo que eles possam ser invocados pelo &quot;apelido&quot;.
  • 50.
    Testes com ServletsHello SessionServlet
  • 51.
    Sugestões Profissional responsávelpelo sistema Atualização e estudo Acompanhamento de novas versões Segurança e performance Backup’s frequentes Upgrade para novas versões
  • 52.
    Performance e análisedos logs 4 arquivos de log Comparação e acompanhamento dos dados Monitoramento em tempo real Top, trafshow Monitoramento por relatórios http-analyse Testes de carga JMeter
  • 53.
    Experiência Unicamp como JServ Hardware Sun Ultra 1, com 256Mb de Ram Software Apache 1.3.6, OpenSSL 3.9.1, Mod_SSL 1.2.1_1.3.6, JServ 1.0 Cargas máximas 30.000 consultas/dia 2.000 updates em base/dia
  • 54.
    Perguntas mais comunsSaiu uma nova versão do <qualquer_produto>. É necessário fazer upgrade ? Existem cuidados de segurança adicionais para esse ambiente ? Como disponibilizar classes comuns para as diferentes zonas ? Como fazer um debug efetivo das minhas aplicações ?
  • 55.
    Perguntas mais comunsII Por que quando ao testar aplicações o JServ para de funcionar ? Devo parar o JServ para fazer atualizações nos programas ? ?
  • 56.
    Links e materialpara consulta Apache - http://www.apache.org/ Apache JServ - http://java.apache.org/ OpenSSL - http://www.openssl.org/ Mod_SSL - http://www.modssl.org/ RSA - http://www.rsa.com/ Unicamp - ftp://ftp.unicamp.br/ Sun Java soft - http://www.javasoft.com/ wwwstat, http analyze, JMeter
  • 57.
  • 58.