<< Modelo de Camadas | Perguntas e Respostas >> |
5. Implementando
Atualmente existem implementações
de TLS / SSL para praticamente todas as plataformas disponíveis no mercado.
Porém toolkits para desenvolvimento de aplicações
que utilizem SSL / TLS não suportam muitas linguagens de programação.
Uma das soluções
mais utilizadas na implementação de sistemas que utilizam SSL
/ TLS é o toolkit OpenSSL (baseada na biblioteca SSLeay), criado para
ambientes C/C++, suporta SSLv1,SSLv2,SSLv3 e TLSv1, possui funções
para manipular certificados padrão x509, PKCS12, PKCS7, etc; o OpenSSL
é multiplataforma(Unix, Linux, Windows, outros) e OpenSource.
A GNU vem desenvolvendo sua
biblioteca de suporte a TLS, gnuTLS, mas a versão final ainda não
foi lançada.
Outra solução
gratuita é a implementação da SUN para java, incorporada
no JDK1.4 e disponível separadamente como a biblioteca JSSE.
A maior parte das implementações
de TLS / SSL disponíveis no mercado tratam o modelo de programação
de forma relativamente parecida. O modelo é baseado na criação
de dois objetos básicos, um objeto de conexão e um objeto de contexto.
O objeto de contexto deve ser configurado antes da inicialização
do objeto de conexão, ele funciona como um banco de dados que guarda
todas as características que devem ou podem ser configuradas para a conexão
TLS.
É nesse objeto de contexto
que configura-se se o aplicativo é um cliente ou servidor, onde se alocam
os certificados a serem passados ao outro nó, onde se guardam as chaves
privadas dos certificados, onde se configura quais algoritmos criptográficos
se quer utilizar na conexão, etc. Uma terminada a configuração
do contexto, pode-se criar objetos de conexão TLS, que são vinculados
ao contexto anteriormente criado. Podem ser criados quantos objetos de conexão
necessários, utilizando-se apenas um objeto de contexto, sabendo que
as características de todas as conexões obedecerão aos
mesmos parâmetros.
Uma vez instanciado um objeto
de conexão, é necessário preparar a camada inferior de
transporte para controlar a conexão. Então, no caso de um servidor,
inicializa-se objetos de socket para escutar em uma determinada porta, e assim
que um cliente se conectar nela, é executado o accept em TCP/IP, e o
descriptor do socket é associado a um objeto de conexão TLS, em
seguida, é executado o accept do TLS, quando é realizado o handshake.
A partir daí, todas as funções de escrita e leitura na
conexão são realizadas através de funções
fornecidas pela implementação TLS.
<< Modelo de Camadas | Perguntas e Respostas >> |