Aprenda a configurar o Apache com SSL (Parte II)

18 Comentários

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.ssl_00

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!

Partilhar:
Tags:

Comentários

18

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *

  1. Avatar de guicale
    guicale

    E que tal se fizessem também uns tutoriais do WordPress?

      1. Avatar de guicale
        guicale

        Já agora, acha que uma pessoa de 12 anos é capaz de aprender a programar em PHP?

        1. Avatar de helder
          helder

          com esforço e dedicação td se consegue…. é claro que não consegue fazer tão bem como os profissionais… mas pode fazer algo bom! compra livros e utiliza fóruns…

          1. Avatar de guicale
            guicale

            boa resposta

        2. Avatar de Francisco
          Francisco

          Consegues perfeitamente. Não é a questão de ser melhor que os profissionais. Nem os que começam aos 18/20 são melhores que os profissionais. Se pesquisares, analisares, tiveres o pensamento adequado de todo o funcionamento e outras coisas que se adquirem à medida que o tempo passa, consegues chegar a um patamar bem alto. Se gostas e tens curiosidade, é meio caminho andado. 😉

          1. Avatar de Pedro Pinto

            Vamos la estudar…nós estamos cá para ajudar.

      2. Avatar de helder
        helder

        e que tal um do openvpn? isso é que era de valor…

        1. Avatar de Micael Engrácia
          Micael Engrácia

          x2 , openvpn era mesmo interessante!

          1. Avatar de JMCS
            JMCS

            OpenVPN não é difícil. A minha primeira vez foi sem contar, teve de ser feito e ficou. Ler a documentação que vem com o download é a melhor ajuda. Pode-se configurar o servidor em Linux ou em Windows bem como os clientes. A configuração pode ser feita para aceder apenas ao servidor ou a todos os IPs da rede local remota, nesse caso é necessário configurar o roteamento para a VPN cada IP que se queira tornar acessível. Como cliente normalmente uso o OpenVPN-GUI como cliente de umas 10 VPNs…

    1. Avatar de helder
      helder

      deve ser quando os coments aguardam moderação…
      já agora se alguem souber de bons tutorais do openvon que me avise…. Obrigado!

    2. Avatar de Hugo Cura

      Como o “helder” disse, isso significa que os comentários não mostrados estão a aguardar aprovação.

  2. Avatar de guicale
    guicale

    Também podiam fazer um artigo sobre o BlueStacks, um programa que permite instalar os apk do Android no PC. Para mim, o único senão é que ainda não tem o teclado português.
    http://www.bluestacks.com
    PS: Quem quiser os tais 23 GB adicionais no Dropbox, como referido no artigo da Ana Narciso (https://pplware.sitedev.pt/internet/dropbox-ganhe-23gb-adicionais-gracas-ao-seu-android/), também pode instalar o apk modificado do Dropbox no BlueStacks, caso não tenha nenhum dispositivo com Android. Eu testei e funciona às mil maravilhas.

      1. Avatar de guicale
        guicale

        Então foi aqui que eu o descobri.
        Já me tinha esquecido, desculpa.

    1. Avatar de guicale
      guicale

      Mais uma coisa, o BlueStacks não tem acesso ao Google Play (antigo Android Market), mas vem com outros markets instalados de origem.

  3. Avatar de Pedro H.
    Pedro H.

    Boa… Número 2 😀
    Venha daí o próximo 😀

    Cumprimentos
    Pedro