Apache SSL配置错误(SSL连接错误)

use*_*404 39 apache ssl https openssl

我正在尝试在我的服务器上配置Apache以使用ssl,但每次访问我的网站时,我都会在浏览器中收到以下消息:

SSL连接错误.无法与服务器建立安全连接.这可能是服务器的问题,或者可能需要您没有的客户端身份验证证书.错误107(net :: ERR_SSL_PROTOCOL_ERROR):SSL协议错误.

上面的错误消息似乎是Google Chrome原生的.但是,即使消息不同,该站点的ssl也无法在任何浏览器上运行.

关于这种情况的一些背景:我正在使用Ubuntu 10.04 desktop edition.

apache通过安装安装zend server(它自动安装了apache).然后我安装了openssl.非https页面在网站上正常工作.
我尝试从多个证书站点获取试用证书,但没有任何工作(相同的错误).
我之前在另一台ssl工作正常的服务器上托管我的网站.我也尝试使用该服务器的密钥和证书文件,但我得到了同样的错误.

但域名和IP仍然相同.我SSLCertificateFileSSLCertificateKeyFile指向正确的目录和文件.

我也没有启用SSLVerifyClient.

如果有人有任何建议,将非常感谢.

ton*_*gil 40

我和@ User39604有同样的问题,不得不遵循各种建议.由于他不记得他所遵循的确切路径,让我列出我的路径:

  1. 检查您是否使用SSL YES <?php echo phpinfo();?>

  2. 如有必要

    A.在apache上启用sslsudo a2enmod ssl

    B.安装opensslsudo apt-get install openssl

    C.检查端口443是否打开sudo netstat -lp

    D.如有必要,改变/etc/apache2/ports.conf,这是有效的

    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.
        NameVirtualHost *:443
        Listen 443
    </IfModule>
    
    <IfModule mod_gnutls.c>
        Listen 443
    </IfModule>
    
    Run Code Online (Sandbox Code Playgroud)
  3. 获得钥匙和证书

    A.支付一个认证机构(Comodo,GoDaddy,Verisign)

    B.生成自己的* - 见下文(仅测试目的)

  4. 更改您的配置(在ubuntu12中/etc/apache2/httpd.conf- 默认为空文件)以包含正确的<VirtualHost> (替换MYSITE.COM以及密钥和证书路径/名称以指向您的证书和密钥):

    <VirtualHost _default_:443> 
    ServerName MYSITE.COM:443
    SSLEngine on
    SSLCertificateKeyFile /etc/apache2/ssl/MYSITE.COM.key
    SSLCertificateFile /etc/apache2/ssl/MYSITE.COM.cert
    ServerAdmin MYWEBGUY@localhost
    DocumentRoot /var/www
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    <Directory /var/www/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
    </Directory>
    
    
    ErrorLog ${APACHE_LOG_DIR}/errorSSL.log
    
    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn
    
    CustomLog ${APACHE_LOG_DIR}/accessSSL.log combined
    
    </VirtualHost>
    
    Run Code Online (Sandbox Code Playgroud)

虽然许多其他虚拟主机配置将/etc/apache2/sites-enabled//etc/apache2/sites-available/其中可用,但/etc/apache2/httpd.conf解决所有问题是很重要的.

了解更多信息:

http://wiki.vpslink.com/Enable_SSL_on_Apache2

http://httpd.apache.org/docs/2.0/ssl/ssl_faq.html#selfcert

*生成自己的证书(自签名)将产生一个证书,其权限是用户的浏览器无法识别的.因此,浏览器将尖叫血腥谋杀,用户将不得不在浏览器实际打开页面之前"了解风险"十几次.所以,它只适用于测试目的.话虽如此,这是HOW-TO:

  1. 转到apache文件夹(在ubuntu12中/etc/apache2/)
  2. 创建一个像ssl(或任何适合你的文件夹,名称不是系统要求)的文件夹
  3. 转到所选目录 /etc/apache2/ssl
  4. sudo openssl req -new -x509 -nodes -out MYSITE.COM.crt -keyout MYSITE.COM.key
  5. 在标签中使用MYSITE.COM.crtMYSITE.COM.key<VirtualHost>

名称格式不符合严格的系统要求,必须与文件相同:) - 名称之类的212-MYSITE.COM.crt,june2014-Godaddy-MYSITE.COM.crt应该有效.

  • 我做了所有这些没有一个成功...幸运的是,实际上使用`sudo a2ensite default-ssl.conf`启用该站点是一个正确的解决方案......呃. (4认同)
  • 对我来说,这是缺少的“&lt;Directory/&gt;”设置 (2认同)

Ale*_*hko 21

我在chrome中遇到了同样的错误(在Firefox,IE中也有不同的错误).另外在error.log我得到了[error] [client cli.ent.ip.add] Invalid method in request \x16\x03 按照此站点的说明我改变了我的配置FROM:

<VirtualHost subdomain.domain.com:443>

   ServerAdmin admin@domain.com
   ServerName subdomain.domain.com

   SSLEngine On
   SSLCertificateFile conf/ssl/ssl.crt
   SSLCertificateKeyFile conf/ssl/ssl.key
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

至:

<VirtualHost _default_:443>

   ServerAdmin admin@domain.com
   ServerName subdomain.domain.com

   SSLEngine On
   SSLCertificateFile conf/ssl/ssl.crt
   SSLCertificateKeyFile conf/ssl/ssl.key
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

现在它工作得很好:)

  • 请澄清对哪些文件成功的更改,因为您可以编辑`httpd.conf`以及`sites-enabled/000-default`,`sites-available/default-ssl`,`sites-available/yoursite.com `.还必须检查SSL是否在服务器上运行. (2认同)

小智 6

我想为这种情况建议的一个常见原因:

有时客户正在运行Skype,它使用端口443而没有意识到它.当他们开始启动Tomcat或Apache时,它似乎启动但无法与端口443绑定.这是用户在浏览器中收到的确切消息.解决方法是停止端口443上运行的内容并重新启动Web服务器,以便它可以与端口443绑定.

客户可以在启动网络服务器后重新启动Skype,Skype将检测到正在使用的端口443并选择使用其他端口.


小智 6

#Make sure that you specify the port for both http and https ie.
NameVirtualHost:80
NameVirtualHost:443
#and 
<VirtualHost *:80>
<VirtualHost *:443>

#mixing * and *:443 does not work it has to be *:80 and *:443
Run Code Online (Sandbox Code Playgroud)


Sye*_*bli 5

正确启用 SSL 的步骤。

sudo a2enmod ssl  
sudo apt-get install openssl
Run Code Online (Sandbox Code Playgroud)

在可能位于 /etc/apache2/sites-available 的 SSL 配置文件 (default-ssl.conf) 中配置 SSL 证书的路径。我已将证书存储在 /etc/apache2/ssl/ 下

SSLEngine On
SSLCertificateFile /etc/apache2/ssl/certificate.crt
SSLCertificateChainFile /etc/apache2/ssl/ca_bundle.crt
SSLCertificateKeyFile /etc/apache2/ssl/private.key
Run Code Online (Sandbox Code Playgroud)

启用 SSL 配置文件

sudo a2ensite default-ssl.conf
Run Code Online (Sandbox Code Playgroud)