[FUGSPBR] HTTPS Baseado em 1 IP Real

FreeBSD Hack freebsd em vserver.com.br
Qui Maio 22 22:56:22 BRT 2003


Se você fizer a solução do redirect-port.. vc so vai estar fazendo SSL 
entre a maquina IP REAL
e a maquina IP FALSO!

Vamos pensar nesta solução:?

no httpd.conf tudo isto!

além de colocar

listen *:443

<VirtualHost *:443> <---- O TRUQUE ESTA AQUI!!!
DocumentRoot /usr/local/www/site.dominio1
ServerName www.dominio1.com.br
ServerAlias dominio1.com.br
ServerAdmin webmaster em dominio1.com.br
AddType application/x-httpd-php .php
ErrorLog logs/ssl_dominio1.access.log
TransferLog logs/ssl_dominio1.error.log
SSLEngine on

#   SSL Cipher Suite:
#   List the ciphers that the client is permitted to negotiate.
#   See the mod_ssl documentation for a complete list.
#SSLCipherSuite ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL

SSLCertificateFile   /usr/local/apache/conf/ssl.crt/dominio1.crt
SSLCertificateKeyFile /usr/local/apache/conf/ssl.key/dominio1.key

#SSLCACertificatePath    /usr/local/apache/conf/ssl.crt
#SSLCACertificateFile    /usr/local/apache/conf/ssl.crt/ca-bundle.crt
#SSLCARevocationPath     /usr/local/apache/conf/ssl.crl
#SSLCARevocationFile     /usr/local/apache/conf/ssl.crl/ca-bundle.crl

#   Client Authentication (Type):
#   Client certificate verification type and depth.  Types are
#   none, optional, require and optional_no_ca.  Depth is a
#   number which specifies how deeply to verify the certificate
#   issuer chain before deciding the certificate is not valid.
#SSLVerifyClient require
#SSLVerifyDepth  10
#<Location />
#SSLRequire (    %{SSL_CIPHER} !~ m/^(EXP|NULL)-/ \
#            and %{SSL_CLIENT_S_DN_O} eq "Snake Oil, Ltd." \
#            and %{SSL_CLIENT_S_DN_OU} in {"Staff", "CA", "Dev"} \
#            and %{TIME_WDAY} >= 1 and %{TIME_WDAY} <= 5 \
#            and %{TIME_HOUR} >= 8 and %{TIME_HOUR} <= 20       ) \
#           or %{REMOTE_ADDR} =~ m/^192\.76\.162\.[0-9]+$/
#</Location>
#   SSL Engine Options:
#   Set various options for the SSL engine.
#   FakeBasicAuth:
#     Translate the client X.509 into a Basic Authorisation.  This means that
#     the standard Auth/DBMAuth methods can be used for access control.  The
#     user name is the `one line' version of the client's X.509 certificate.
#     Note that no password is obtained from the user. Every entry in the user
#     file needs this password: `xxj31ZMTZzkVA'.
#   ExportCertData:
#     This exports two additional environment variables: SSL_CLIENT_CERT and
#     SSL_SERVER_CERT. These contain the PEM-encoded certificates of the
#     server (always existing) and the client (only existing when client
#     authentication is used). This can be used to import the certificates
#     into CGI scripts.
#   CompatEnvVars:
#     This exports obsolete environment variables for backward compatibility
#     to Apache-SSL 1.x, mod_ssl 2.0.x, Sioux 1.0 and Stronghold 2.x. Use this
#     to provide compatibility to existing CGI scripts.
#   StrictRequire:
#     This denies access when "SSLRequireSSL" or "SSLRequire" applied even
#     under a "Satisfy any" situation, i.e. when it applies access is denied
#     and no other module can change it.
#SSLOptions +FakeBasicAuth +ExportCertData +CompatEnvVars +StrictRequire
#   SSL Protocol Adjustments:
#   The safe and default but still SSL/TLS standard compliant shutdown
#   approach is that mod_ssl sends the close notify alert but doesn't wait for
#   the close notify alert from client. When you need a different shutdown
#   approach you can use one of the following variables:
#   ssl-unclean-shutdown:
#     This forces an unclean shutdown when the connection is closed, i.e. no
#     SSL close notify alert is send or allowed to received.  This violates
#     the SSL/TLS standard but is needed for some brain-dead browsers. Use
#     this when you receive I/O errors because of the standard approach where
#     mod_ssl sends the close notify alert.
#   ssl-accurate-shutdown:
#     This forces an accurate shutdown when the connection is closed, i.e. a
#     SSL close notify alert is send and mod_ssl waits for the close notify
#     alert of the client. This is 100% SSL/TLS standard compliant, but in
#     practice often causes hanging connections with brain-dead browsers. Use
#     this only for browsers where you know that their SSL implementation
#     works correctly.
#   Notice: Most problems of broken clients are also related to the HTTP
#   keep-alive facility, so you usually additionally want to disable
#   keep-alive for those clients, too. Use variable "nokeepalive" for this.
SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown

#   Per-Server Logging:
#   The home of a custom SSL log file. Use this when you want a
#   compact non-error SSL logfile on a virtual host basis.
CustomLog /var/log/httpd/ssl_request_log \
           "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
</VirtualHost>

Resumindo... você fara um name virtual host para cada dominio que você quer 
no SSL!
OBS: voce pode usar o mesmo certificado para varios sites.

Faça um teste ai! deve resolver!





At 22:28 22/5/2003 -0300, you wrote:
>Oi Pessoal,
>
>Desculpem o email grande, mas vou tentar ser conciso e explicar o que ja fiz
>e ateh que ponto cheguei pra vcs tentarem
>entender o que quero saber se é possível ser feito ou outras soluçoes...
>
>Estou tendo que montar um servidor web (apache) com ssl. Porem ele aceita
>somente um dominio na porta de ssl, com as chaves e tudo mais....
>soh que vou ter mais de um dominio que precisa ter ssl, entao alguns colegas
>me falaram para acrescentar outro ip real no meu servidor que resolveria,
>mas o maior problema que possuo somente um ip real. Entao teria de fazer uma
>especie de virtualhost.
>
>Entao cheguei em algumas conclusoes e fiz os seguintes testes
>  - Coloquei os dominios que iriam usar o ssl em portas diferentes no apache,
>por exemplo:
>         dominio1.com:444
>         dominio2.com:445
>
>   - Funcionou, porem para utilizar dessa maneira o usuario tem de digitar no
>browser https://dominio1.com:444 e isso estah destinado ha usuarios finais.
>
>   - Entretanto pensei na solucao de usar o redirect do apache que funcionou
>parcialmente, pois criei uma regra do tipo
>         Redirect https:dominio1.com https://dominio1.com:444
>
>   - Mas infelizmente o browser nao colaborou e descobri que quando se usa
>https no browser ele busca alguma coisa  criptografada e
>   se nao tiver a criptografia habilitada ele nao funciona.. somente
>digitando http://dominio1.com:443
>
>   - Depois de algumas horas de infelicidade e quebrando a cabeca tentando
>achar uma outra maneira, resolvi voltar a origem, do lance de adicionar ip.
>
>   - Pensei o seguinte, ao inves de usar ip real eu criaria varios ips falsos
>na minha interface e criava uma regra de redirecionamento pra minha
>interface e
>   colocava no meu apache as regras normais de virtualhost com o ssl.
>
>   - Novamente me esbarrei num problema, eu usei o natd para fazer o
>redirecionamento mas ele faz somente o redirecionamento de um host e nao dos
>outros.
>
>   - Por exemplo, foi criado os seguintes itens no natd:
>          redirect_port tcp  192.168.1.2:443 dominio1.com:443
>          redirect_port tcp  192.168.1.3:443 dominio2.com:443
>   E no apache
>         <VirtualHost 192.168.1.2:443> ServerName dominio1.com
>         <VirtualHost 192.168.1.3:443> ServerName dominio2.com
>
>   - Lembrando que o dominio1 e o dominio2 estao apontados no dns para os
>mesmos ips reais. No apache nao tive problema, ele nao acusou estar usando o
>mesmo port/ip igual ele faz qd se tenta fazer somente um virtualhost, mas na
>hora de conectar foi só num dos dois... depende de quem eh o ultimo na regra
>do
>natd.
>
>  -  Entao eu queria saber se existe algum software que faz um
>redirecionamento de pacotes como natd faz baseado em hostname/dominio para
>um ip ou outro host sem quebrar o ponto a ponto que o ssl faz e
>diferenciando o pacote dominio1.com do dominio2.com?
>
>  Ou se existe alguma outra sugestao pra testes...
>
>Agradeco desde ja a atencao,
>Novamente peco desculpas pelo email grande.
>
>[]`s
>Joao Pedro
>
>
>
>
>_______________________________________________________________
>Sair da Lista: http://www2.fugspbr.org/mailman/listinfo/fugspbr
>Historico: http://www4.fugspbr.org/lista/html/FUG-BR/

---------------------------------------------
Leonardo Garcia
FreeBSD user since 2.1.5 (Long time ago)...
Windows sometimes is necessary, Linux NEVER.
My System NOW: FreeBSD 5.0, BeOS 5, QNX 6, SunOS (on Sun Ultra 2), WXP




_______________________________________________________________
Sair da Lista: http://www2.fugspbr.org/mailman/listinfo/fugspbr
Historico: http://www4.fugspbr.org/lista/html/FUG-BR/



Mais detalhes sobre a lista de discussão freebsd