INTRODUÇÃO
Este tutorial permite o uso de conexão segura (https) no seu servidor Apache2 usando o módulo SSL, criando a autoridade certificadora, as chaves pública e privada e configurando o apache para usá-las.
CRIANDO UMA AUTORIDADE CERTIFICADORA (CA)
Para assinar o certificado do seu servidor temos que criar uma CA. Para isto geramos uma chave e um certificado auto-assinado.
1. Gerando chave privada
root@ocsserver:/etc/ssl1# openssl genrsa -des3 -out cacert.key 2048
Generating RSA private key, 2048 bit long modulus
.......+++
...........................................+++
e is 65537 (0x10001)
Enter pass phrase for cacert.key:
Verifying - Enter pass phrase for cacert.key:
2. Gerando seu certificado auto-assinado válido por 10 anos
root@ocsserver:/etc/ssl1# openssl req -new -x509 -days 3650 -key cacert.key -out cacert.pem
Enter pass phrase for cacert.key:
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:
State or Province Name (full name) [Some-State]:
Locality Name (eg, city) []:
Organization Name (eg, company) [Internet Widgits Pty Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (eg, YOUR name) []:
Email Address []:
CRIANDO A CHAVE E O CERTIFICADO DO SEU SERVIDOR
3. Criando a chave do seu servidor
root@ocsserver:/etc/ssl1# openssl genrsa -des3 -out server.dominio.br.key 1024
Generating RSA private key, 1024 bit long modulus
...................................++++++
.............................................++++++
e is 65537 (0x10001)
Enter pass phrase for server.dominio.br.key:
Verifying - Enter pass phrase for server.dominio.br.key:
4. Gerando certificado do seu servidor
Importante: o Common Name deve ser igual ao nome do seu servidor virtual
root@ocsserver:/etc/ssl1# openssl req -new -key server.dominio.br.key -out server.dominio.br.csr
Enter pass phrase for server.dominio.br.key:
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:BR
State or Province Name (full name) [Some-State]:Minas Gerais
Locality Name (eg, city) []:Belo Horizonte
Organization Name (eg, company) [Internet Widgits Pty Ltd]:UFMG
Organizational Unit Name (eg, section) []:STI
Common Name (eg, YOUR name) []:server.dominio.br
Email Address []:slassis@ufmg.br
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
ASSINATURA DO CERTIFICADO SERVIDOR PELA CA
5. Assinando o certificado do seu servidor pela CA pelo período de 10 anos
root@ocsserver:/etc/ssl1# openssl x509 -req -in server.dominio.br.csr -out server.dominio.br.crt -sha1 -CA cacert.pem -CAkey cacert.key -CAcreateserial -days 3650
Signature ok
subject=/C=BR/ST=Minas Gerais/L=Belo Horizonte/O=UFMG/OU=STI/CN=server.dominio.br/emailAddress=slassis@ufmg.br
Getting CA Private Key
Enter pass phrase for cacert.key:
CRIANDO CHAVE INSEGURA DO SERVIDOR
6. A criação da chave insegura do seu servidor é utilizada para iniciar o Apache, permitindo que não seja exigido uma senha a cada reinicialização do servidor.
root@ocsserver:/etc/ssl1# openssl rsa -in server.dominio.br.key -out server.dominio.br.key.insecure
Enter pass phrase for server.dominio.br.key:
writing RSA key
CONFIGURAÇÃO DO APACHE
7. Crie o diretório ssl
root@ocsserver:/etc/ssl1# cd /etc/apache2
root@ocsserver:/etc/apache2# mkdir ssl
8. Altere o proprietário da pasta e a permissão
root@ocsserver:/etc/apache2#sudo chown root.root ssl
root@ocsserver:/etc/apache2#chmod 400 ssl
9. Copie os arquivos para o diretório /etc/apache2/ssl
root@ocsserver:/etc/ssl1# sudo cp cacert.key /etc/apache2/ssl
root@ocsserver:/etc/ssl1# sudo cp cacert.pem /etc/apache2/ssl
root@ocsserver:/etc/ssl1# sudo cp cacert.srl /etc/apache2/ssl/
root@ocsserver:/etc/ssl1# sudo cp server.dominio.br.crt /etc/apache2/ssl/
root@ocsserver:/etc/ssl1# sudo cp server.dominio.br.key.insecure /etc/apache2/ssl/
10. Acrescente no arquivo /etc/apache2/sites-available/default-ssl as seguintes linhas:
SSLCertificateFile /etc/apache2/ssl/server.dominio.br.crt
SSLCertificateKeyFile /etc/apache2/ssl/server.dominio.br.key.insecure
SSLCACertificateFile /etc/apache2/ssl/cacert.pem
Exemplo de arquivo default-ssl:
<VirtualHost *:443>
ServerAdmin webmaster@localhost
SSLEngine On
SSLCertificateFile /etc/apache2/ssl/ocsserver.demec.ufmg.br.crt
SSLCertificateKeyFile /etc/apache2/ssl/ocsserver.demec.ufmg.br.key.insecure
SSLCACertificateFile /etc/apache2/ssl/cacert.pem
DocumentRoot /var/www/snmp
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/snmp>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
Alias /doc/ "/usr/share/doc/"
<directory>
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>
</VirtualHost>
COPIANDO ARQUIVO DE CERTIFICADO NO DIRETÓRIO DO AGENTE
11. Faça uma cópia dos arquivos cacert.pem e server.dominio.br.crt tendo por base seu o diretório de configuração do seu servidor e o diretório basevardir especificado no arquivo /etc/ocsinventory-agent/ocsinventory-agent.cfg
Exemplo: Caso o endereço do servidor seja http://server.dominio.br/ocsinventory e o seu basevardir esteja configurado como /var/lib/ocsinventory-agent:
root@ocsserver:/etc/ssl1# sudo cp cacert.pem /var/lib/ocsinventory-agent/http:__server.dominio.br_ocsinventory
root@ocsserver:/etc/ssl1# sudo cp server.dominio.br.crt /var/lib/ocsinventory-agent/http:__server.dominio.br_ocsinventory
12. Finalmente não esqueça de reiniciar o Apache para que as modificações surtam efeito
root@ocsserver:/etc/ssl1# sudo /etc/init.d/apache2 restart
* Restarting web server apache2 ... waiting [ OK ]
quinta-feira, 25 de agosto de 2011
Assinar:
Postagens (Atom)