Pplware

Aprenda a configurar o Apache com SSL (Parte II)

Nos dias que correm, é importante que todos os dados sensíveis transaccionados entre um cliente e um servidor sejam cifrados de modo a que estes não possam ser entendidos por terceiros. Na prática, quando acedemos a um serviço online que nos solicita dados pessoais ou credenciais de acesso (ex. sites de bancos) é importante que a toda a informação passada seja cifrada de modo a tornar-se ilegível. No caso dos servidor Web (entre outros serviços de uma rede), uma das formas de proceder a cifra dos dados é recorrendo ao protocolo SSL.

Depois de termos deixado aqui uma breve descrição sobre o que são chaves privadas e chaves publicas, um certificado digital, o protocolo SSL e o OpenSSL, hoje vamos aprender a produzir certificados digitais.

Para a criação do presente tutorial, recorri a uma máquina com o CentOS 6. Como referido no tutorial anterior, o OpenSSL permite criar e entidade de certificação privada e disponibiliza ferramentas para criação e gestão de chaves privadas e publicas e certificados digitais.

Caso não tenham o OpenSSL instalado, podem fazê-lo executando o comando

yum install openssl

Para podermos emitir um certificado X.509 é importante (apesar de opcional) rever alguns parâmetros no ficheiro de configuração do openSSL. No CentOS o ficheiro de configuração (openssl.cnf) encontra-se em /etc/pki/tls/openssl.cnf e nele podemos definir algumas informações relativamente à entidade certificadora e também indicar o directório onde os certificados vão ser guardados por omissão.  De referir que este processo só é necessário efectuar a primeira vez.

###################################################################
[ ca ]
default_ca      = CA_Pplware           # The default ca section

####################################################################
[ CA_Pplware ]

dir             = /etc/pki/CA           # Where everything is kept
certs           = $dir/certs            # Where the issued certs are kept
crl_dir         = $dir/crl              # Where the issued crl are kept
database        = $dir/index.txt        # database index file.
#unique_subject = no                    # Set to 'no' to allow creation of
# several ctificates with same subject.
new_certs_dir   = $dir/newcerts         # default place for new certs.

certificate     = $dir/cacert.pem       # The CA certificate
serial          = $dir/serial           # The current serial number
crlnumber       = $dir/crlnumber        # the current crl number
# must be commented out to leave a V1 CR
L
crl             = $dir/crl.pem          # The current CRL
private_key     = $dir/private/cakey.pem# The private key

RANDFILE        = $dir/private/.rand    # private random number file

x509_extensions = usr_cert              # The extentions to add to the cert

# Comment out the following two lines for the "traditional"
# (and highly broken) format.
name_opt        = ca_default            # Subject Name options
cert_opt        = ca_default            # Certificate field options

# Extension copying option: use with caution.
# copy_extensions = copy

# Extensions to add to a CRL. Note: Netscape communicator chokes on V2 CRLs
# so this is commented out by default to leave a V1 CRL.
# crlnumber must also be commented out to leave a V1 CRL.
# crl_extensions        = crl_ext

default_days          = 365                    # how long to certify for
default_crl_days      = 30                     # how long before next CRL
default_md            = default               # use public key default MD
preserve              = no                         # keep passed DN ordering

……

[ req_distinguished_name ]
countryName                     = Country Name (2 letter code)
countryName_default             = PT
countryName_min                 = 2
countryName_max                 = 2

stateOrProvinceName             = State or Province Name (full name)
stateOrProvinceName_default     = Guarda

localityName                    = Locality Name (eg, city)
localityName_default            = Guarda 

0.organizationName              = Organization Name (eg, company)
0.organizationName_default      = Pplware

…

Feitas as alterações, podemos passar de imediato à criação de certificados X.509.

Nota importante: Para que tudo funcione correctamente, é importante que a máquina onde temos o apache a correr tenha um nome. Esse informação pode ser definida em /etc/sysconfig/network no parâmetro HOSTNAME.

Criação de certificados para servidores

Para a criação dos certificados X.509  para o servidor apache devem executar os seguintes 3 passos:

Criação da chave privada RSA para o certificado do servidor

Esta chave RSA ira ser posteriormente utilizada para assinar o CSR (Certificate Signing Request – contem várias informações sobre a entidade a certificar, incluindo a chave publica).

openssl genrsa -des3 -out chaveprivada.key 2048

Nota1: Na parte final do processo de criação da chave privada é necessário indicar uma senha.

Criação do CSR para o certificado do servidor

openssl req -new -key chaveprivada.key -out certificado.csr

Nota2: No campo Common Name (CN) devem colocar o nome do servidor (ex. www.pplware.com)

Emitir certificado X.509 para o servidor indicado

openssl x509 -req -days 365 -in certificado.csr -signkey chaveprivada.key -out www.crt

Depois de aprendermos alguns conceitos associados à certificação digital e de termos ensinado hoje como criar certificados digitais para um servidor, no próximo artigo iremos ensinar a configurar o Apache para fazer uso dos certificados. Fiquem atentos!

Exit mobile version