Posts Tagged ‘ssl’

Como instalar subversion no ubuntu Karmic (9.10) – how to install subversion ubuntu 9.x com ssl

Sunday, February 14th, 2010

Boa noite ALL,

Abaixo mostro como instalar o subversion no ubuntu karmic (9.10):

Como em toda instalação ou configuração no Ubuntu, recomendo atualizar os repositórios do APT e instalar quaisquer atualizações disponíveis.

# apt-get update
# apt-get upgrade
Instalação do Subversion

Os pacotes necessários são: subversion, libapache2-svn, apache2 e ssl-cert, onde:

* subversion – é o pacote contendo além dos arquivos binários, também as ferramentas de administração svnadmin e distribuição svnserve;
* libapache2-svn – contém os módulos mod_dav_svn e mod_authz_svn que permitem o acesso aos repositórios através do protocolo http e https via WebDAV;
* apache2 – é servidor web. Veja mais em: http://pt.wikipedia.org/wiki/Servidor_Apache;
* ssl-cert – pacote que permite a instalação de outros pacotes que precisam criar certificados SSL. Leia também sobre OpenSSL.

Para instalação desse pacotes utilize o comando abaixo:

# apt-get install subversion libapache2-svn apache2 ssl-cert
Habilitando o Suporte ao SSL

Após a instalação, vamos habilitar o suporte a SSL no Apache 2. Para isso, é necessário criar um certificado digital. Utilizando o comando make-ssl-cert é possível fazer esta criação, porém é necessário utilizar um modelo de configuração. Por padrão o Ubuntu Intrepid Ibex (Ubuntu 8.10) já traz este modelo em /usr/share/ssl-cert/ssleay.cnf. Sugiro dar uma olhada neste modelo, eu particularmente fiz algumas alterações que visam exibir informações do responsável pela emissão do certificado. Veja o modelo:

#
# SSLeay example configuration file.
#

RANDFILE = /dev/urandom

[ req ]
default_bits = 1024
default_keyfile = privkey.pem
distinguished_name = req_distinguished_name
prompt = no
policy = policy_anything

[ req_distinguished_name ]
commonName = @HostName@
emailAddress = Seu Email
organizationalUnitName = Departamento
organizationName = Empresa
localityName = Campinas
stateOrProvinceName = Sao Paulo
countryName = BR

Não há problemas caso você não faça nenhuma modificação.

Crie o diretório onde o certificado será criado:

# mkdir /etc/apache2/ssl

Agora, utilizando o make-ssl-cert e o modelo no arquivo ssleay.cnf vamos criar o certificado armazenando-o no arquivo apache.pem:

# make-ssl-cert /usr/share/ssl-cert/ssleay.cnf /etc/apache2/ssl/apache.pem

Surgirá uma tela, como a figura abaixo, onde será solicitado o nome do servidor. Eu, particularmente, preencho com o IP, pois meu DNS não está configurado e pretendo acessar o Subversion em outras máquinas.
Criação do certificado SSL. Definindo o nome do servidor.

Criação do certificado SSL. Definindo o nome do servidor.

Vamos definir a permissão ao arquivo.

# chmod 660 /etc/apache2/ssl/apache.pem
Configurando Apache 2 e habilitando o SSL

Verifique se o Apache 2 para que seja habilitada o suporte a porta 443. Para isso visualize o arquivo ports.conf no diretório do Apache 2:

# vi /etc/apache2/ports.conf

Seu arquivo deverá estar como mostro abaixo:

NameVirtualHost *:80
Listen 80


# SSL name based virtual hosts are not yet supported, therefore no
# NameVirtualHost statement here
Listen 443

Para habilitar o módulo de suporte ao SSL no Apache 2 é necessário utilizar o script a2enmod. O a2enmod criará um link simbólico no diretório /etc/apache2/mod-enabled. Para desabilitar um módulo utilize o script a2dismod. A linha de comando é:

# a2enmod ssl

O último passo da configuração do Apache 2, para o perfeito funcionamento do SSL, consiste em criar o arquivo svn em /etc/apache2/sites-available, este arquivo deve conter as configurações para a porta 443, ou seja, a porta ao qual definimos como responsável pelo SSL.

Para isso vamos copiar o arquivo default que está em /etc/apache2/sites-available para o arquivo svn.

# cp /etc/apache2/sites-available/default /etc/apache2/sites-available/svn

Agora edite o arquivo utilizando o vim:

# vi /etc/apache2/sites-available/svn

Altere a linha para e logo abaixo adicione as linhas:

SSLEngine on
ServerSignature On
SSLCertificateFile /etc/apache2/ssl/apache.pem

Vamos entender cada uma das três linhas acima:

* SSLEngine on – Ativa se definida como “on” a utilização do protocolo SSL/TLS;
* SeverSignature On – Ativa ou desativa a exbição da assinatura do servidor, ou seja, a linha que exibe as configurações do Apache. Por exemplo: Apache/2.2.9 (Ubuntu) DAV/2 SVN/1.5.1 PHP/5.2.6-2ubuntu4.1 with Suhosin-Patch mod_ssl/2.2.9 OpenSSL/0.9.8g Server at 192.168.0.30 Port 44. Na influencia no funcionamento do servidor;
* SSLCertificateFile – Define o caminho para certificado.

Após a criação do arquivo svn, então é necessário habilitá-lo no Apache 2. Para isso utilize o script a2ensite. Este script habilita arquivos que contenham o bloco no Apache2. Para desabilitar um arquivo de configuração utilize o script a2dissite. A linha de comando é esta:

# a2ensite svn

Reinicialize o Apache 2 com o comando:

# /etc/init.d/apache2 force-reload

Caso ocorra algum erro, então consulte o arquivo de log do Apache 2. Este arquivo está localizado em /var/log/apache2/error.log.

Dica de solução:

# openssl req -config /usr/share/ssl-cert/ssleay.cnf -new -x509 -days 1460 -nodes -out /etc/apache2/ssl/apache.pem -keyout /etc/apache2/ssl/apache.pem

Teste seu servidor, digitando no navegador o endereço IP precedido por https, por exemplo: https://

Você poderá ver uma página como a da figura abaixo. Fique tranquilo! Essa mensagem não reflete um problema em seu servidor. Na verdade a mensagem é exibida, pois você configurou um certificado próprio (auto-assinado) e não foi emitido por uma autoridade certificadora, como é o caso de sites que utilizam certificado homologado pela VeriSign. Apenas clique no link “você pode adicionar uma exceção” e depois no botão “Adicionar exceção…”. Aparecerá seu endereço IP. “Clique em verificar certificado” e logo em seguida, clique no botão “Confirmar exceção de segurança”. Pronto.
Firefox: Falha na conexão segura

Firefox: Falha na conexão segura
Configurando o Subversion

Vamos criar um repositório de teste para que possamos garantir a correta instalação (e na sequência vamos finalizar a instalação). Para criarmos um repositório é necessário criar um diretório e a partir dele, alterarmos o “proprietário” do diretório e definir as permissões. Após estes passos, então poderemos adicioná-lo ao Subversion com o comando svnadmin. Com o svnadmin é possível manipular usuários, projetos, repositórios e acessos.

# mkdir /var/svn/teste
# chown -R www-data:www-data /var/svn/teste
# chmod -R g+ws /var/svn/teste
# svnadmin create /var/svn/teste

Agora vamos habilitar a autenticação no Apache 2. O htpasswd é o responsável pela criação e atualização de arquivos que armazenam o nome de usuário (login) e a senha para autenticação via HTTP.

# htpasswd -c -m /etc/apache2/dav_svn.passwd admin

A opção -c cria ou reescreve e “trunca” o arquivo de senha. Já a opção -m é responsável por definir que o método MD5 será utilizado para criptografia da senha.

Repare que no final da linha, após o caminho, existe o nome de usuário utilizado, ou seja, admin. Após executado comando acima, será solicitada uma senha. Evite esquecer a senha.

Caso precise adicionar mais usuários, basta utilizar o mesmo comando acima, porém sem a opção -c. Exemplo:

# htpasswd -m /etc/apache2/dav_svn.passwd programador

Após a definição da senha, então devemos editar o arquivo dav_svn.conf para habilitar o WebDAV e o SVN no Apache 2.

# vi /etc/apache2/mods-available/dav_svn.conf

Agora altere o arquivo dav_svn.conf para a estrutura como mostrada abaixo:


DAV svn
SVNParentPath /var/svn
AuthType Basic
AuthName “Repositorio da Logica Digital”
AuthUserFile /etc/apache2/dav_svn.passwd
Require valid-user
SSLRequireSSL

Entendendo as linhas de configuração:

* – como o repositório deve aparecer no navegador, no caso irá aparecer https://ip-do-servidor/svn;
* DAV svn – habilita o repositório;
* SVNParentPath – utilizado para múltiplos repositórios;
* AuthType Basic – define o método de autenticação de usuário. É possível inclusive utilizar LDAP para habilitar Single sign-on. Prometo que farei um post sobre essa configuração;
* AuthName – serve apenas como descritivo;
* AuthUserFile – caminho do arquivo criado pelo comando htpasswd;
* Require valid-user – configuração para que apenas usuários autenticados tenham acesso ao repositório. É possível tornar o servidor acessível à usuários anônimos, porém eu não acho uma boa prática;
* SSLRequireSSL – obriga que a comunicação com o servidor de controle de versão seja feita sobre o protocolo SSL.

Após configurado o arquivo de integração entre o Subversion e o Apache 2, então é necessário reinicializar o Apache 2:

# /etc/init.d/apache2 force-reload

Acesse, através do seu navegador, o endereço https://ip-do-servidor/svn/teste. Assim você estará testando seu novo servidor de controle de versão com Subversion. Caso ele esteja funcionando corretamente, após a autenticação, será exibida uma página como abaixo:
Servidor Subversion autenticado via Apache 2

Servidor Subversion autenticado via Apache 2

Pronto. O servidor de controle de versão com Subversion, Apache 2 com SSL no Ubuntu Intrepid Ibex está funcionado. O próximo post virá com dicas de utilização.

FONTE 100%: http://andreferraro.wordpress.com/2009/04/05/linux-instalando-o-subversion-com-apache-2-e-ssl-no-ubuntu-intrepid-ibex-ubuntu-810/

Forçar HTTPS com script PHP – entrar em site e redirecionar para SSL ou Forçar SSL

Sunday, July 20th, 2008

O exemplo abaixo pode ser colocado no início do script aonde você quer que seja redirecionado para https:

$nomescript = $_SERVER['SCRIPT_NAME'];
$nomehost = $_SERVER['SERVER_NAME'];
if(!$_SERVER['HTTPS'])
{
$protocolo = ‘https://’;
header( “Location: “.$protocolo.$nomehost.$nomescript);
}