Configurando SSL no apache no linux ubuntu

2

Estou tentando fazer com que o SSL seja executado no meu servidor web apache.

Eu não tenho o DNS para a configuração do domínio, mas isso é um problema?

Como configuro o SSL no meu servidor web?

Quando começo o apache, ele falha.

root@vannevar:/etc/apache2/ssl# service apache2 start
 * Starting web server apache2                                                                                                                         Action 'start' failed.
The Apache error log may have more information.

As estatísticas de log que não conseguem ler o certificado.

[Thu Jun 28 15:01:02 2012] [error] Init: Unable to read server certificate from file /etc/apache2/ssl/www.example.com.csr
[Thu Jun 28 15:01:02 2012] [error] SSL Library Error: 218529960 error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag
[Thu Jun 28 15:01:02 2012] [error] SSL Library Error: 218595386 error:0D07803A:asn1 encoding routines:ASN1_ITEM_EX_D2I:nested asn1 error

O conteúdo de /etc/apache2/httpd.conf

ServerName [SERVERIP]

O conteúdo de /etc/apache2/ports.conf

# If you just change the port or add more ports here, you will likely also
# have to change the VirtualHost statement in
# /etc/apache2/sites-enabled/000-default
# This is also true if you have upgraded from before 2.2.9-3 (i.e. from
# Debian etch). See /usr/share/doc/apache2.2-common/NEWS.Debian.gz and
# README.Debian.gz

NameVirtualHost [SERVERIP]:443
NameVirtualHost *:80
Listen 80

<IfModule mod_ssl.c>
    # If you add NameVirtualHost *:443 here, you will also have to change
    # the VirtualHost statement in /etc/apache2/sites-available/default-ssl
    # to <VirtualHost *:443>
    # Server Name Indication for SSL named virtual hosts is currently not
    # supported by MSIE on Windows XP.
    Listen 443
</IfModule>

<IfModule mod_gnutls.c>
    Listen 443
</IfModule>

O conteúdo de /etc/apache2/sites-available/www.example.com

<VirtualHost *:80>
     ServerAdmin [email protected]
     ServerName example.com
     ServerAlias www.example.com
     DocumentRoot /srv/sites/example.com/public/
     ErrorLog /srv/sites/example.com/logs/error.log
     CustomLog /srv/sites/example.com/logs/access.log combined
</VirtualHost>

<VirtualHost [SERVERIP]:443>
     SSLEngine On
     SSLCertificateFile /etc/apache2/ssl/www.example.com.csr
     SSLCertificateKeyFile /etc/apache2/ssl/www.example.com.key
     SSLCACertificateFile /etc/apache2/ssl/comodo.crt

     ServerAdmin [email protected]
     ServerName example.com
     ServerAlias www.example.com
     DocumentRoot /srv/sites/example.com/public/
     ErrorLog /srv/sites/example.com/logs/error.log
     CustomLog /srv/sites/example.com/logs/access.log combined
</VirtualHost>

ATUALIZAÇÃO:

No dreamhost (do qual estou tentando sair), eu já tenho um domínio com ssl / https. Posso ver as três chaves no certificado de administrador do dreamhost, chave privada e certificado intermediário. Posso fazer algo com isso? Eu posso ver que dreamhost está usando comodo e meu site diz que seu PositiveSSL então ... no site da comodo há o certificado raiz e certificado intermediário . O que esses cinco certificados têm a ver com os dois criados pelo comando openssl req -new -days 365 -nodes -keyout www.mydomain.com.key -out www.mydomain.com.csr ? Esses dois estão solicitando o certificado real?

Percebi que o erro do apache está se referindo ao arquivo /etc/apache2/sites-available/www.example/com onde eu estraguei o tipo de arquivo para SSLCertificateFile /etc/apache2/ssl/www.example.com.csr , ele deveria ser .crt de acordo com o linode docs

Atualização 2

Então entrei no dreamhost e copiei as chaves para os seguintes arquivos e mapeei o seguinte

certificate => dh.crt
private key => dh.key
intermediate certificate => dh.cer

alterou a conexão em /sites-available/example.com e funcionou (o apache funcionou). Isso significa que o ssl funcionará quando eu conectar meu domínio?

    
por ThomasReggi 28.06.2012 / 22:09

5 respostas

2

Eu não posso votar aqui, ou comentar, mas Adrian Perez está certo, você não está usando um certificado, mas uma solicitação de assinatura de certificado, nesta linha:

SSLCertificateFile /etc/apache2/ssl/www.example.com.csr

O CSR precisa ser enviado a uma autoridade de certificação para verificar sua identidade e gerar o certificado. Você pode gerar isto usando o comando:

openssl x509 -req -days 365 -in www.example.com.csr -signkey www.example.com.key -out www.example.com.crt

E mudando:

SSLCertificateFile /etc/apache2/ssl/www.example.com.csr

Para:

SSLCertificateFile /etc/apache2/ssl/www.example.com.crt

Mas você receberá avisos quando visitar o site em seu navegador, pois isso seria um certificado autoassinado e, portanto, não confiável. Ainda assim, é uma boa maneira de entender o processo e testar se o site está funcionando. Os passos básicos são:

  1. Gere um arquivo de chave privada (faça isso apenas uma vez, na primeira vez que você configurar um site)
  2. Gerar uma solicitação de assinatura de certificado
  3. Pague uma tonelada de dinheiro a uma autoridade de certificação para verificar e emitir o certificado (Thwate ou similar)
  4. Coloque a chave no servidor.

Em relação às permissões, certifique-se de que a chave / crt seja apenas legível / gravável pelo root (chmod 600), caso contrário o Apache irá gemer.

Espero que isso ajude

    
por 29.06.2012 / 00:08
0

Parece que seu arquivo de certificado está ilegível (ou ausente)

[Thu Jun 28 15:01:02 2012] [error] Init: Unable to read server certificate from file /etc/apache2/ssl/www.example.com.csr

Você verificou permissões / caminhos?

Além disso, o DNS precisa ser configurado ou o certificado mostrará algum erro (depende do navegador)

    
por 28.06.2012 / 22:33
0

Você pode baixar um programa em Java chamado Gerenciador de Keystore para abrir e visualizar o certificado para verificar se ele é válido . Na coisa com o Apache é que o certificado precisa estar em um determinado formato. Este site pode ajudar a explicar o formato que você precisa, que parece ser o PEM.

    
por 28.06.2012 / 23:15
0

Talvez eu esteja errado, mas verifique se o arquivo www.example.com.csr contém o certificado. Geralmente arquivos com extensão csr contém o pedido para ser assinado em uma autoridade de certificação.

Além disso, você pode verificar a permissão e os caminhos como outro usuário disse, mas acho que o problema é sobre o conteúdo do arquivo.

Você pode marcar para excluir o arquivo, criar um novo arquivo em branco e colar os dados do certificado no arquivo.

Atenciosamente!

    
por 28.06.2012 / 23:33
0

Você não pode configurar o SSL até ter o certificado real. O que você tem é uma solicitação de um certificado que deve ser enviado a uma autoridade de certificação para que eles emitam um certificado. Além disso, embora você possa fazer o servidor funcionar sem o DNS em funcionamento, os clientes não poderão acessar o servidor, exceto por IP, o que gerará um aviso, pois o certificado não pode validar o IP.

Atualização : parece que você já fez tudo agora. Se houver outros problemas, você poderá resolvê-los assim que o DNS for configurado.

    
por 29.06.2012 / 00:16