III. Enkelte temaer fra kontrollen med forvaltningen
5. Ombudsmannens arbeid med menneskerettigheter
Como já foi referido no Capítulo 3, para o alojamento do SW REST foi selecionado o servidor HTTP Apache. A versão utilizada no âmbito deste trabalho foi a versão 2.2.22 (Ubuntu) instalada no sistema operativo do XUbuntu. A instalação do servidor web Apache, no referido sistema operativo pode, ser efetuada executando o seguinte comando:
Para instalar o módulo (Secure Sockets Layer) SSL do apache2 foi executado o seguinte comando [34]:
Para efeitos de demonstração foi gerado e instalado um self-signed certificate (ou seja, um certificado assinado pelo próprio servidor, em vez de uma certificate authorty) da seguinte forma:
usr: [login de acesso à câmara]
pwd: [password do utilizador para acesso à câmara]
sudo apt-get install apache2
35
De seguida é necessário criar e configurar o sítio web que irá alojar o SW REST instalando o certificado SSL anteriormente criado. Para tal foram realizados os seguintes passos:
copiar o ficheiro de configuração do sítio web default (pasta sites-available), que é instalado por defeito com o apache2;
renomear o ficheiro para o nome pretendido do novo sítio web - “ssl-restonvif.pt”;
ativar o site executando o comando: sudo a2ensite ssl-restonvif.pt
por último, reiniciar o apache2 de modo a serem lidas as últimas configurações. No ficheiro de configuração do sítio web criado (localizado em /etc/apache2/sites-available) existem algumas linhas que merecem uma maior atenção [34]:
ServerName contém o nome/endereço para o sítio web;
SSLEngine e SSLCertificateFile permitem respetivamente ativar e indicar o ficheiro com o certificado SSL gerado;
ServerEncodedSlashes permite ativar a aceitação por parte do servidor apache da existência do caracter “/” codificado nos pedidos realizados ao sítio web.
Este último parâmetro de configuração é importante uma vez que o endereço do serviço da câmara contém “/” e é codificado nas chamadas ao SW REST.
O Apache HTTP Server v2.2 disponibiliza dois módulos FastCGI (mod_fcgid [35] e mod_fastcgi [36]). Optou-se pela utilização do módulo mod_fastcgi porque, para além de ter sido a primeira implementação de FastCGI sobre apache, está mais bem documentada [36], permitindo desta forma uma mais rápida aprendizagem e desenvolvimento. As versões do servidor Apache superiores à utilizada neste desenvolvimento disponibilizam versões mais recentes do módulo mod_fcgid e aconselham a sua utilização em detrimento do módulo
sudo make-ssl-cert /usr/share/ssl-cert/ssleay.cnf /etc/ssl/private/restonvif.crt
<VirtualHost *:443> ServerName restonvif.pt AllowEncodedSlashes On SSLEngine on SSLCertificateFile /etc/ssl/private/restonvif.crt DocumentRoot /home/joana/public_html/ <Directory /> … …
36
mod_fastcgi. A transição para o novo módulo mod_fcgid consiste apenas em alterações ao nível da instalação e configuração do módulo Apache, não afetando o código desenvolvido. A instalação do módulo mod_fastcgi pode ser realizada recorrendo ao Software Manager do Ubuntu (para além da possibilidade de o realizar por linha de comando). Após a sua instalação, este fica disponível na lista de módulos ativos, se assim não acontecer deverá ser executado o seguinte comando:
Ficando disponível o seu ficheiro de configuração (localizado em /etc/apache2/mods- available) para alteração:
A diretiva AddHandler, assim como está definida, indica que qualquer ficheiro com a extensão .fcgi será tratado como sendo um FastCGI. Esta é a extensão da aplicação FastCGI desenvolvida. Foi alterada a linha de configuração para as “Dynamic FastCGI applications” [36] como é o caso do serviço REST implementado:
FastCgiConfig -maxProcesses 50 -maxClassProcesses 20 -startDelay 1 -killInterval 30 -idle- timeout 90
A diretiva FastCgiConfig [36], assim como está definida, assegura que caso seja efetuado um pedido que não consiga ser respondido com o delay de 1 segundo (startDelay), o gestor de processos do Apache irá criar um novo processo, até aos limites de 20 processos por cada aplicação (maxClassProcesses) FastCGI e 50 processos (maxProcesses) para todas as aplicações FastCGI a executar no servidor no momento. O parâmetro killInterval determina o número de segundos que um dado processo pode ficar no estado idle até ser terminado pelo gestor de processos do apache. O singleThreshold permite definir quando é que a última instância de uma aplicação deve ser terminada pelo gestor de processos. O seu valor por defeito é “0”, o que evita que a última instância de uma dada aplicação seja terminada, garantindo desta forma que existe pelo menos um processo.
Os parâmetros aqui referidos são importantes para a melhoria de desempenho da aplicação FastCGI. Os valores escolhidos servem apenas como exemplo em ambiente de
sudo a2enmod fastcgi
<IfModule mod_fastcgi.c>
AddHandler fastcgi-script .fcgi
# Config used for dynamic applications
FastCgiConfig -maxProcesses 50 -maxClassProcesses 4 -startDelay 1 -killInterval 30 -idle- timeout 90
37
desenvolvimento, devendo num ambiente produtivo ser ajustados à medida da qualidade pretendida para os serviços disponibilizados e recursos do servidor.
Por fim, é necessário configurar o mapeamento da diretoria onde será colocado o FastCGI desenvolvido (no ficheiro de configuração do sítio web).
Ou seja, todos os pedido efetuados a https://restonvif.pt/testfcgi/rest_umoc_ll.fcgi deverão executar o FastCGI “rest_umoc_ll.fcgi” existente na pasta “/home/joana/testfcgi”
Para que o servidor Apache redirecione todos os pedidos suportados pelo SW REST para a aplicação FastCGI (rest_umoc_ll.fcgi), é necessário ativar e configurar dois módulos no ficheiro de configuração do sítio web: o “mod_rewrite” e o “mod_actions”.
O mod_rewrite configura o redirecionamento propriamente dito:
Qualquer pedido GET, POST, PUT e DELETE com o endereço iniciado por https://[nome_do_sítio]/onvif é redirecionado, juntamente com a sua querystring, para o FastCGI (rest_umoc_ll.fcgi).
O mod_actions permite ativar a execução de scripts para os métodos HTTP DELETE e PUT, uma vez que por defeito não estão ativas no servidor Apache, colocando as seguintes linhas:
A diretiva “Script” ativa a execução da aplicação FastCGI para os métodos PUT e DELETE.
ScriptAlias /testfcgi /home/joana/testfcgi/ <Directory "/home/joana/testfcgi">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch Order allow,deny
Allow from all </Directory>
RewriteEngine On
RewriteCond %{REQUEST_METHOD} (GET|POST|PUT|DELETE)
RewriteRule ^/onvif.*$ /testfcgi/rest_umoc_ll.fcgi?%{QUERY_STRING} [L]
<Limit GET POST PUT DELETE > Order allow,deny Allow from all </Limit>
<LimitExcept GET POST PUT DELETE > Order deny,allow
Deny from all </LimitExcept>
Script PUT /testfcgi/rest_umoc_ll.fcgi Script DELETE /testfcgi/rest_umoc_ll.fcgi
38
As configurações do servidor Apache abordadas são todas as que controlam o alojamento do serviço web REST implementado em FastCGI utilizando HTTPS.