A conexão SSL não funciona com o endereço IP público

2

EDIT: Problema resolvido, era de fato o firewall do servidor que estava bloqueando a porta 443. Tudo está funcionando agora

Estou tentando instalar um certificado SSL auto-assinado em um servidor apache em execução no Ubuntu. Eu permiti o módulo SSL, editei o default-ssl.conf e coloquei o mesmo endereço IP que ServerName que eu coloquei como CommonName ao criar o certificado autoassinado. Eu editei a localização do arquivo .crt e .key no arquivo. Então eu ativei o arquivo default-ssl.conf e reiniciei o apache.

Eu chequei 5 vezes cada passo, então tenho certeza que não cometi um erro.

Quando tento acessar o https://ip_address , ele não é carregado. Eu verifiquei que o porto 443 estava aberto. Existe uma maneira de ver onde o problema está localizado? Eu só não sei o que tentar em seguida. Estou acessando o servidor via ssh.

aqui está meu arquivo ssl.conf:

<IfModule mod_ssl.c>
<VirtualHost *:443>
        ServerAdmin [email protected]
        ServerName 54.82.28.171:443

        DocumentRoot /var/www
        <Directory />
                Options FollowSymLinksAllowOverride None
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        </Directory>

        ErrorLog ${APACHE_LOG_DIR}/error.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog ${APACHE_LOG_DIR}/ssl_access.log combined

        Alias /doc/ "/usr/share/doc/"
        <Directory "/usr/share/doc/">
                Options Indexes MultiViews FollowSymLinks
                AllowOverride None
                Order deny,allow
                Deny from all
                Allow from 127.0.0.0/255.0.0.0 ::1/128
        </Directory>

        #   SSL Engine Switch:
        #   Enable/Disable SSL for this virtual host.
        SSLEngine on

        #   A self-signed (snakeoil) certificate can be created by installing
        #   the ssl-cert package. See
        #   /usr/share/doc/apache2.2-common/README.Debian.gz for more info.
        #   If both key and certificate are stored in the same file, only the
        #   SSLCertificateFile directive is needed.
        SSLCertificateFile    /etc/apache2/ssl/apache.crt
        SSLCertificateKeyFile /etc/apache2/ssl/apache.key

meu ports.conf:

NameVirtualHost *:80
NameVirtualHost *:443
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.
    ErrorLog /var/log/apache2/ssl_access.log
    LogLevel debug
        Listen 443
</IfModule>

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

eu também editei / etc / hosts e / etc / hostname e adicionei o endereço ip

Eu olhei em /var/log/apache2/error.log, há duas linhas que podem indicar um problema:

RSA server certificate is a CA certificate
RSA server certificate CommonName (CN) '54.82.28.171' does NOT match server name!?

Estou realmente lutando para descobrir qual é o problema. Eu tenho certeza que é algo estúpido, mas eu não vejo o que!

EDITAR:

Eu estava apenas tentando abrir o s_client -connect 54.82.28.171:443 eu tenho:

connect: Connection timed out
connect:errno=110

Eu acho que isso significa que a conexão é recusada, o que significa que a porta 443 não está aberta? Quando eu disse não carregando eu quis dizer que o navegador disse "página da web inacessível". quando tento acessar a mesma página sem https minha página index.html está carregando

Caso contrário, o conjunto de apache2ctl -S:

/usr/sbin/apache2ctl: 87: ulimit: error setting limit (Operation not permitted)
VirtualHost configuration:
wildcard NameVirtualHosts and _default_ servers:
*:443                  is a NameVirtualHost
         default server 54.82.28.171 (/etc/apache2/sites-enabled/default-ssl:3)
         port 443 namevhost 54.82.28.171 (/etc/apache2/sites-enabled/default-ssl:3)
*:80                   is a NameVirtualHost
         default server dash.amatiscontrols.com (/etc/apache2/sites-enabled/000-default:1)
         port 80 namevhost dash.amatiscontrols.com (/etc/apache2/sites-enabled/000-default:1)
         port 80 namevhost amatisdash.com (/etc/apache2/sites-enabled/amatisdash.com:1)
Syntax OK

EDIT: Existe um firewall no servidor ... sem o 443 aberto, por isso deve explicar tudo. Exceto que eu posso abrir o porto eu mesmo e vou ter que esperar para ter certeza. De qualquer forma obrigado!

Obrigado

    
por Sebastien 23.07.2014 / 22:23

2 respostas

3

Pode ser útil detalhar o que realmente está acontecendo quando a tentativa de SSL é feita. Hora de sair openssl!

Dê uma olhada na seguinte página man do openssl: link

Observe especificamente a referência fornecida na seção Anotações (apenas role para baixo). Como afirma, você pode tentar o seguinte:

openssl s_client -connect servername: 443

Isso pode fornecer mais informações sobre o que está falhando.

Quanto às entradas do log de erros - a primeira linha é curiosa ... Gostaria de saber se talvez o uso do certificado não esteja correto ... A segunda linha é mais comum, embora normalmente isso seja causado pela conexão baseada em IP quando o certificado é emitido para um FQDN ... eu começaria com os testes de conexão openssl e veria se você pode reunir mais informações.

Por último mas não menos importante ... você disse que a página não carrega, você está recebendo um erro ou está exibindo apenas uma página em branco? Apenas certificando-se de que você está realmente apresentando algo na página :)

    
por 23.07.2014 / 22:38
2

ServerName 54.82.28.171:443 não é um nome do servidor válido porque é um IP- endereço e porta e não um nome de domínio totalmente qualificado, deve ser algo como ServerName www.example.com .

Segundo, seu nome do servidor deve ser idêntico ao nome comum no certificado SSL, independentemente do fato de você estar usando um endereço IP 54.82.28.171:443 != 54.82.28.171 .

A terceira é a mensagem de erro que parece ser que seu certificado público não é um certificado autoassinado, mas um certificado de CA. Isso pode ser porque o nome comum não é um FQDN, mas um endereço IP, não tenho certeza.
Você pode converter seu certificado atual /etc/apache2/ssl/apache.crt da codificação PEM que deve ser para algo um pouco mais legível com:

openssl x509 -in apache.crt -noout -text

Um resultado que inclui algo como:

        X509v3 Basic Constraints: 
            CA:TRUE

é uma razão provável pela qual a Aapche considera o certificado como um certificado de CA, o que não é necessariamente errado com um certificado auto-assinado IIRC.

    
por 23.07.2014 / 23:52