Segurança em Sistemas informáticos 2010/2011 Autoridade de Certificação de uma infraestrutura de chave pública (PKI). Admilo Ribeiro ei06133@fe.up.pt Luis Pina ei03073@fe.up.pt
Índice Introdução 3 Objectivos 3 OpenCA 4 Requisitos 5 Instalação 5 Utilização 8 Conclusão 13 Bibliografia 13 2
Introdução Hoje em dia a internet deixou de ser um sistema de redes de computadores fechada, onde a simples presença do utilizador nessa rede deixou de ser suficiente para comprovar a sua identidade. Uma empresa presente nessa rede pode ser constituída por intranets, sites da Internet e extranets, contendo informações que não podem ser acedidas por qualquer pessoa. Contudo isso não evita que alguns utilizadores sejam capazes de conseguir acesso não autorizado, podendo assim visualizar ou alterar de alguma forma nociva essas informações. Então como é que um administrador de um sistema poderá garantir, certificar se da entidade dos seus utilizadores? Garantir que cada utilizador só tem acesso a informação a que lhe diz respeito, e gerenciar de forma fácil as credencias de autenticação por toda uma empresa? A resposta a essas perguntas pode ser dada por uma infraestrutura de chave pública PKI, que é um sistema de certificados digitais, autoridades de certificação e outras autoridades de registro que verificam e autenticam a validade de cada parte envolvida em uma transação eletrônica por meio do uso de uma criptografia de chave pública. Objectivos O objectivo deste trabalho, é por a funcionar uma autoridade de certificação(ca) de uma infraestrutura de chave pública (PKI), realizar testes e fazer um estudo quanto as pontencialidas da sua utilização no Feupnet. 3
OpenCA Actualmente existem um conjunto de implementações de autoridades de certificação, o nosso grupo optou pela utilização do OpenCA que é uma implementação open source que se baseia em vários projectos tais como o OpenLDAP, Apache e OPenSSL Project. A imagem abaixo apresenta a estrutura do openca. Fig.1 Estrutura do OpenCA Existem algumas restrições que devem ser satisfeitas, como por exemplo a autoridade de certificação CA deve estar instalada numa máquina offline. A autoridade de Registo não devera comunicar de forma directa com a autoridade de certificação. E o acesso a autoridade de registo não pode ser efectuada directamente a partir da internet, mas sim atrvavés do Operador de RA que é uma interface entre o utilizador e a internet. 4
Requisitos Abaixo seguem se alguns requisitos a serem cumpridos antes de proceder a instalção do openca: PERL OpenSSL 0.9.7+ Apache Web Server OpenCA-Tools. A Database (MySQL, PostgreSQL, DB2, Oracle) PERL DBI Instalação Nesta secção será apresentado um pequeno guia de instalação do openca num único nó, todos os componentes serão instalados e acedidos numa única máquina. Esta guia refere-se a instalação do openca no sistema operativo Ubuntu 10.04. Satisfeitos os pré-requisitos eis os passos a ser seguidos para instalação e configuração do OpenCA. Criação da Base de dados Connect to the DBMS: $ mysql -u root -p -h localhost Then, create the database: mysql > CREATE DATABASE openca; Now select the database: mysql > use openca; Then grant the privileges to a new openca user: mysql > GRANT ALL PRIVILEGES ON *.* TO 'openca'@'localhost' IDENTIFIED BY 'password'; The user and the database are created now, to test it quit the mysql shell and start it again using the openca user: $ mysql -u openca -p -h localhost openca 5
Instalação a partir da fonte Antes de proceder a compilação do código fonte do openca e a sua posterior instalação no sistema, existem algumas configurações a serem efectuadas. As configurações utilizadas foram as seguintes: Configure:./configure --prefix=/opt/openca-1.0 \ --with-ca-organization="openca Labs" \ --with-httpd-fs-prefix=/var/www \ --with-httpd-main-dir=pki \ --with-db-name=openca \ --with-db-host=localhost \ --with-db-user=openca \ --with-db-passwd=password \ --with-db-type=mysql \ --with-httpd-user=www-data \ --with-httpd-group=www-data \ --enable-db \ --disable-dbi \ --with-service-mail-account="ei03073@fe.up.pt" Após este processo, podemos então proceder com o resto da instalação do openca, os comandos a serem executados a seguir são os seguintes: $ make If you want to install everything on a single node, use the following command: $ make install-offline install-online Se tudo estiver bem, após a execução deste comando, o openca já se encontra instalado no seu computador. Para iniciar basta executar o seguinte comando: $ sudo PREFIX/etc/init.d/openca start 6
Neste ponto da instalação, existem ainda algumas configurações importantes a serem realizadas, nomeadamente a configuração do servidor. O ficheiro a ser alterado é o httpd.conf e poderá ser encontrado em /etc/apache_version/httpd.conf. Para esta instalação, a configuração utilizada para o servidor foi a seguinte : ServerName local.pinanet #PUBLIC <VirtualHost *:80> ServerName pub.local.pinanet DocumentRoot "/var/www/html/" ScriptAlias /cgi-bin/ "/var/www/cgi-bin/" </VirtualHost> #RA SERVER <VirtualHost *:443> ServerName ra.local.pinanet DocumentRoot "/var/www/html/pki/ra" ScriptAlias /cgi-bin/ "/var/www/cgi-bin/" SSLEngine On SSLOptions +StdEnvVars SSLCertificateFile "/opt/keys/certs/server.crt" SSLCertificateKeyFile "/opt/keys/private/server.key" SSLCACertificateFile "/opt/keys/certs/ca.crt" </VirtualHost> # CA <VirtualHost *:80> ServerName ca.local.pinanet DocumentRoot "/var/www/html/" ScriptAlias /cgi-bin/ "/var/www/cgi-bin/" </VirtualHost> Observações importantes httpd.conf: nao esquecer de acrescentar no /etc/hosts os servername usados - é preciso depois de cada reboot. Chaves : As chaves apresentadas acima na configuração do do servidor, têm de ser previamente geradas e auto-assinadas. Versão do opeca :Depois de configurar e instalar a fonte openca 1.1.* (mais o servidor apache e BD mysql), seguindo as indicações da secção de instalação do o OpenCA Guide, a aplicação falhava ao executar. Foi então decidido usar a versao openca 1.0.1. 7
Utilização Depois da instalção estar completa, podemos prosseguir com a realização de alguns testes. Requisição de um novo Certificado 1. Pedido de um novo Certificado 8
2. Escolha do tipo de Certificado 3. Preenchimento dos campos do certificado 9
4. Escolha do algoritmo de encriptação 5. Geração do Pedido 10
Aprovação de um novo certificado 1. Verficação da existência de novos pedidos certificados 2. Lista dos novos Pedidos 11
3. Aprovação do novo Certificado Para além destes exemplos as restantes funcionalidades das interfaces estão documentadas no guia do openca.[2] 12
Conclusão O openca como foi apresentado anteriormente, suporta todas as funcionalidades necessárias para implementação de uma autoridade de certificação que pudesse ser utlizada ao nível da faculdade. Contudo com pouco tempo de utilização, o utilizador depara-se com bastantes bugs (evidentes em demonstração práctica da aplicação) que tornam a utilização da interface por vezes penosa, sendo recomendado que a instalação e configuração do sistema seja feita por alguém experiente em configurar hosts virtuais no Apache, e com conhecimentos de programação em perl, de forma a fazer o debugging da aplicação quando necessário. Em termos de trabalho desenvolvido, o grupo conseguiu instalar, configurar e utilizar a aplicação de forma a poder testá-la minimamente. Bibliografia 1. Página da cadeira : http://web.fe.up.pt/~jmcruz/ssi/ 2. Guia openca : http://www.openca.org/~madwolf/index.html 3. Guia OSPKI: http://web.fe.up.pt/~jmcruz/etc/segur/ssl/ospki-2.4.7/ 13