SSL 连接无法与公共 IP 地址配合使用

SSL 连接无法与公共 IP 地址配合使用

编辑:问题解决了,确实是服务器的防火墙阻止了端口 443。现在一切正常

我正在尝试在 ubuntu 上运行的 apache 服务器上安装自签名 SSL 证书。我启用了 SSL 模块,编辑了 default-ssl.conf,并将创建自签名证书时作为 CommonName 的 IP 地址设置为 ServerName。我编辑了文件中 .crt 和 .key 文件的位置。然后我启用了 default-ssl.conf 文件并重新启动了 apache。

我每个步骤检查了五次,所以我很确定我没有犯错误。

当我尝试访问时,https://ip_address它没有加载。我检查了 443 端口是否打开。有没有办法查看问题出在哪里?我只是不知道下一步该尝试什么。我正在通过 ssh 访问服务器。

这是我当前的 default-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

我的端口.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>

我还编辑了 /etc/hosts 和 /etc/hostname 并添加了 ip 地址

我查看了 /var/log/apache2/error.log,有两行可能表明存在问题:

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

我真的很难找到问题所在。我确信这是一件愚蠢的事情,但我不知道是什么!

编辑 :

我刚刚尝试 openssl s_client -connect 54.82.28.171:443 我得到了:

connect: Connection timed out
connect:errno=110

我认为这意味着连接被拒绝,意味着端口 443 没有打开?当我说没有加载时,我的意思是浏览器说“网页无法访问”。当我尝试在没有 https 的情况下访问同一页面时,我的 index.html 页面正在加载

否则 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

编辑:服务器上有防火墙……没有打开 443,所以应该可以解释一切。不过我可以自己打开端口,但必须等待才能确定。无论如何,谢谢你!

谢谢

答案1

可能有助于分析 SSL 尝试时实际发生的情况。是时候打破 openssl 了!

请查看以下 openssl 的手册页: https://www.openssl.org/docs/apps/s_client.html

具体请查看注释部分提供的参考(只需向下滚动)。正如它所述,您可以尝试以下操作:

openssl s_client -connect 服务器名称:443

这可能会为您提供有关失败原因的更多信息。

至于错误日志条目 - 第一行很奇怪...我想知道证书的使用是否不太正确...第二行看起来更常见,虽然通常是由于在向 FQDN 颁发证书时基于 IP 进行连接而导致的...我会从 openssl 连接测试开始,看看你是否可以收集更多信息。

最后但并非最不重要的一点是...您说页面没有加载,您遇到了错误还是只是显示空白页?只是确保您确实在页面上显示了某些内容 :)

答案2

ServerName 54.82.28.171:443不是有效的服务器名称因为它是一个 IP 地址和端口,而不是一个完全合格的域名,所以它应该是这样的ServerName www.example.com

其次,无论您使用的是 IP 地址54.82.28.171:443 != 54.82.28.171,您的 ServerName 都应该与 SSL 证书中的通用名称相同。

第三个是错误消息,它似乎表明您的公共证书根本不是自签名证书,而是 CA 证书。这可能是因为通用名称不是 FQDN 而是 IP 地址,我不确定。
您可以使用以下命令将当前证书/etc/apache2/ssl/apache.crt从 PEM 编码转换为更易读的编码:

openssl x509 -in apache.crt -noout -text

结果包括以下内容:

        X509v3 Basic Constraints: 
            CA:TRUE

可能是 Aapche 将该证书视为 CA 证书的原因,但据我所知,这对于自签名证书来说并不一定错误。

相关内容