Isso faz com que a documentação oficial do Apache (veja este link ) seja realmente bem feito sobre este assunto.
Em suma, você deve acabar com algo parecido com isto:
LoadModule ssl_module modules/mod_ssl.so
Listen 443
<VirtualHost *:443>
DocumentRoot /var/www/yoursite/
<Directory /var/www/yoursite/>
AllowOverride All
order allow,deny
allow from all
</Directory>
ServerName www.example.com
SSLEngine on
SSLCertificateFile /path/to/www.example.com.cert
SSLCertificateKeyFile /path/to/www.example.com.key
SSLVerifyClient require
SSLVerifyDepth 1
SSLCACertificateFile /path/to/www.example.com.ca.crt
</VirtualHost>
Alguns detalhes acima
- LoadModule ...: para carregar o módulo apropriado do Apache, contendo a implementação SSL
- Ouça 443: o daemon do Apache irá escutar na porta HTTPS padrão, 443
- DocumentRoot: onde os arquivos do seu site residem
- ...: esta é a definição das opções para o diretório do seu site (há muito mais, as mencionadas aqui são as básicas para permitir o acesso de qualquer IP na Internet).
- Nome do servidor: para exibir apenas URLs que contenham esse nome
- SSLEngine on: ative os recursos do SSL neste site.
- SSLCertificateFile: caminho o certificado X.509 da chave privada criada para este servidor.
- SSLCertificateKeyFile: caminho para a chave privada criada para este servidor.
- SSLVerifyClient requer: impor o servidor para solicitar ao cliente um certificado válido
- SSLVerifyDepth 1: deve ser assinado diretamente pela CA mencionada na próxima instrução
- SSLCACertificateFile: caminho o certificado X.509 da CA que assina os certificados usados pelos clientes.
Os certificados
Você terá que obter certificados válidos, um para o seu servidor e muitos outros para os clientes.
Para o servidor
Instale a ferramenta OpenSSL , se ainda não o fez: sudo apt-get install openssl
.
Com esta ferramenta, você pode criar a chave privada do servidor:
openssl genrsa -des3 -out server.pass.key 2048
O comando acima cria uma chave privada com uma senha. Para ser carregado automaticamente pelo seu servidor, você precisa remover a senha:
openssl rsa -in server.pass.key -out server.key
Você tem agora uma chave privada de servidor válida em um arquivo, este é o arquivo apontado pela diretiva SSLCertificateKeyFile
Apache.
A partir desta chave privada, você criará uma solicitação assinada por certificado (CSR):
openssl req -nodes -new -key server.key -out server.csr
Você será solicitado a inserir um conjunto de elementos (país, organização, ...). O mais importante será o Nome Comum (CN), ele deve corresponder ao nome do host do seu servidor da Web, aquele usado na URL. Então, no meu exemplo, é www.example.com .
Em seguida, você deve enviar este arquivo CSR ao seu provedor de certificado. Qualquer CA pública é boa. Depois de terem aprovado o seu pedido, eles lhe enviarão o famoso arquivo de certificado X.509 para o seu servidor. Este arquivo será apontado pela diretiva SSLCertificateFile
do Apache.
Para o cliente
Você terá que fornecer um certificado válido para o cliente também.
Com base no tipo de cliente (Linux, Windows, MAC, ...), o processo pode ser diferente.
Às vezes, para os certificados do cliente, toda a operação pode ser feita diretamente do navegador da web, visitando a página do registro da autoridade de certificação. Se feito diretamente do navegador da web, você tem certeza de que o certificado é automaticamente registrado no banco de dados de certificados do navegador da web.
Se for feito por um meio externo (como openssl no Linux), você terá que importar a chave privada e o arquivo de certificado para o armazenamento de certificados do seu navegador da web.