Aqui iremos gerar um certificado do qual você mesmo é a autoridade certificadora (sigla do inglês CA). Este certificado é extremamente útil para o simples caso que queremos usar SSL, o certificado serve apenas para dizer que você é você. Existem empresas que funcionam como verdadeiros cartórios virtuais, e podem gerar um certificado dito mais confiável para o visitante do seu site. Este certificado pode ser usado para casos onde se deseja apenas criptografar um "canal" entre os visitantes e um certo serviço na web. Eu utilizei este certificado para disponibilizar Trac e Subversion de forma segura na internet para que os colaboradores possam baixar, atualizar e gerenciar os projetos.
Como não posso supôr qual distribuição de Gnu/Linux você está usando, vou assumir aqui que você já tem o OpenSSL instalado.
Gerando a chave privada (sem criptografia):
# openssl genrsa -out ssl.key 1024
Generating RSA private key, 1024 bit long modulus
........++++++
.++++++
e is 65537 (0x10001)
Gerando o certificado:
# openssl req -new -key ssl.key -x509 -out ssl.crt -days 999
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:
State or Province Name (full name) [Some-State]:
Locality Name (eg, city) []:
Organization Name (eg, company) [Internet Widgits Pty Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (eg, YOUR name) []:
Email Address []:
O campo Common Name é Endereço do qual receberá o certificado, suponhamos o endereço
http://www.davirtavares.com, eu colocaria davirtavares.com aqui. No caso de eu ter vários subdomínios, eu poderia criar um "certificado-curinga" ao qual servirá para todos os meus subdomínios, basta trocar/adicionar o subdomínio "*" (asterisco), ficando, neste caso, *.davirtavares.com.
Respondidas as perguntas (das quais algumas são opcionais, e são identificadas por valores-padrão em branco), o certificado será gerado para o período de 999 dias (argumento -days 999, mude para outro valor se quiser).
Você pode (opcionalmente) empacotar esses dois arquivos em um só:
# cat ssl.key ssl.crt > ssl.pem
E é só. Em outros artigos eu pretendo mostrar como configurar SSL no Apache e também Trac e Subversion, para você poder ter um ambiente de trabalho em equipe pela internet.