• Nenhum resultado encontrado

Desenvolvimento do Código

suciente para prejudicar a segurança da rede;

5. Uma vez feita a requisição, todo o trabalho ca por conta do servidor no qual MyProxy está executando, este que fará a geração do certicado de host, assinatura da chave pública, limpeza do lixo3 e devolução ao solicitante da

chave privada e do certicado através do protocolo SSL, além de armazenar um log com o identicador do usuário solicitante, o número de dias solicitados, o nome da host cliente e a data e hora, com isso, seria possível manter uma certa administração sobre as criações de certicados e punir um usuário que usar este serviço de forma ilícita ou fora do permitido pelas políticas de uso; 6. Quando o cliente recebe os certicados, estes são gravados em arquivo e ao

cliente basta colocar no local especicado pelo middleware utilizado (em geral em /etc/grid-security) trocando as permissões dos arquivos para as permissões padrão (em geral 644 para o certicado e 400 para a chave privada). Isso levando em consideração o sistema operacional derivado do Unix (linux, por exemplo).

7. Concluidos esses passos a máquina está associada à grade e pode submeter seus trabalhos diretamente à mesma, receber tarefas para processar e até mesmo interagir diretamente.

6.2 Desenvolvimento do Código

O código fonte deste projeto foi todo desenvolvido na linguagem de programação Java, sua escolha foi principalmente devido à necessidade de utilização do servidor de geração de certicados para hosts independente da plataforma de hardware e software, já que essa é uma das premissas da utilização e funcionamento das grades. Java é por natureza uma linguagem que oferece este tipo de suporte.

O código foi dividido em dez classes e o método de comunicação usado na rede

70 Certicados Host de Curta Duração para a requisição foi o RMI4 e para a distribuição dos certicados foi usado SSL. As

classes foram divididas da seguinte forma:

1. Classe Servidor - Classe que cria uma instância do RMI na máquina e aguarda requisições. Esta classe é usada para implementar a interface que será lida pelos clientes;

2. Classe Interface - É um tipo de classe onde existem os métodos que poderão ser acessados pelos clientes e implementados pelo servidor;

3. Classe Implementacao - Classe responsável pelos métodos que lerão as re- quisições dos clientes e de acordo com elas, implementará a interface através da classe servidor, é ela tembém a responsável por comparar as permissões de uso e gravar o log de uso do serviço de solicitação de certicados temporários de host. É a partir desta classe que são gerados os esqueletos de classe neces- sários ao protocolo RMI[RMI06] que serão de conhecimento tanto do cliente quanto do servidor;

4. Classe Limpeza - Esta classe é responsável por fazer backup de arquivos utilizados durante a criação e assinatura dos certicados de hosts e após isso, fazer a exclusão de arquivos que não são mais necessários. Quando se faz a requisição de um certicado de host, este gera três arquivos, um é a chave pública que é o pedido propriamente dito, o segundo é a chave privada do host e o terceiro é o certicado assinado pela autoridade certicadora. Se estes arquivos permanecerem no diretório local e como o pedido de certicado pode ser feito por cada usuário para diversos hosts, isso pode gerar grande quantidade de arquivos que não serão mais usados após terem sido passados a seus solicitantes. Com essa classe é possível fazer uma limpeza deste diretório, excluindo os arquivos e retornando os arquivos de backup ao estado original da autoridade certicadora da grade.

4Invocação remota de métodos baseada na linguagem Java que usa para comunicação entre

6.2 Desenvolvimento do Código 71 5. Classe Cliente - Esta classe é a que junto ao esqueleto da classe Implemen- tacao gerada pelo comando rmic5 fará com que o a máquina local se conecte

ao servidor MyProxy e faça a requisição de um certicado de host. Esta classe pede três parâmetros, o primeiro o endereço ou IP do servidor, o segundo o nome ou IP do cliente e o terceiro o número de dias que se deseja que o certi- cado tenha validade. Quando a classe é instanciada ela consulta se o proxy do cliente está ativo e pega o identicador deste cliente para comparar com um cliente válido no servidor, caso não seja válido é retornado um erro. 6. Classe FrameCliente - Esta classe é similar à Cliente, só que neste caso é

possível se utilizar de uma interface gráca para a requisição do certicado, facilitando o entendimento e uso por usuários não especializados.

7. Classe SSLCertHost - É a classe que cria um servidor SSL que irá fazer a entrega do certicado assinado ao solicitante, desde que este possua um certicado válido.

8. Classe SSLKeyHost - É a classe que cria um servidor SSL similar ao anterior, o que diferencia é que este envia a chave privada ao solicitante, desde que este possua um certicado válido.

9. Classe sslClientCert - Esta classe é a instanciada pelos clientes para que seja recebida a chave assinada através do servidor SSLCertHost. Esta classe também é responsável por gravar o arquivo hostcert.pem no diretório.

10. Classe sslClientKey - Esta classe é a instanciada pelos clientes para que seja recebida a chave privada através do servidor SSLKeyHost. Esta classe também é responsável por gravar o arquivo hostkey.pem no diretório.

5o compilador rmic cria os stubs e os skeletons. Ele pega o arquivo como um argumento e

72 Certicados Host de Curta Duração

Documentos relacionados