在 CentOS 上设置 GoDaddy SSL?

在 CentOS 上设置 GoDaddy SSL?

我之前从未在 Linux 上设置过 SSL,但大致了解它的工作原理。以下是服务器规格,如果有帮助的话:

服务器:CentOS Linux 6 工作站:Windows 7

因此,我有 4 个域,它们都共享一个 Magento 安装和 IP 地址。假设我的一个域是“mywebsite1.com”,我现在正在尝试仅为这个域启用 SSL,但遇到了错误。我做错了什么?这是我的工作流程:

  1. 我从 GoDaddy 购买了 SSL,然后使用他们提供的命令生成了 csr 和密钥:

    openssl req -new -newkey rsa:2048 -nodes -keyout mywebsite1.key -out mywebsite1.csr

  2. 我将两个文件复制到 /etc/pki/tls/private

  3. 我打开 mywebsite1.crs,然后将代码复制并粘贴到 Godaddy。

  4. 我生成 crt 文件并从 GoDaddy 下载,上传到我的服务器,然后将它们移动到 /etc/pki/tls/certs

  5. a. 第一次尝试,我打开 /etc/httpd/conf.d/ssl.conf 并更新 默认VirtualHost 块的 SSLCertificate File、KeyFile 和 ChainFile 值指向正确的位置。

    b. 第二次尝试,如下 http://dev.antoinesolutions.com/apache-server/mod_ssl我修改了 ssl.conf 并添加了该指令:

    NameVirtualHost *:443

    然后我把整个默认VirtualHost 块(相当长)。

    最后一次尝试,我在修改后的 ssl.conf 中添加了以下内容

<VirtualHost *:443>

    SSLEngine on

    SSLCertificateFile /etc/pki/tls/certs/mywebsite1.com.crt
    SSLCertificateKeyFile /etc/pki/tls/private/mywebsite1.key
    SSLCertificateChainFile /etc/pki/tls/certs/gd_bundle.crt
    DocumentRoot /var/www/html
    ServerName mywebsite1.com
</VirtualHost>

6..我重新启动Apache

7..然后我去https://mywebsite1.com却发现一些错误导致我无法在各种浏览器中查看该网站。


浏览器:Firefox

SSL received a record with an unknown content type.

(Error code: ssl_error_rx_unknown_record_type)

浏览器:Chrome

Error 107 (net::ERR_SSL_PROTOCOL_ERROR): SSL protocol error.

浏览器:IE...带我进入 Google...


httpd.conf:

NameVirtualHost 12.34.567.89

<VirtualHost 12.34.567.89>
    DocumentRoot  /var/www/html
    ServerName website1.com
</VirtualHost>

<VirtualHost 12.34.567.89>
    DocumentRoot  /var/www/html
    ServerName website2.com
</VirtualHost>

<VirtualHost 12.34.567.89>
    DocumentRoot  /var/www/html
    ServerName website3.com
</VirtualHost>

<VirtualHost 12.34.567.90:80>
    DocumentRoot /var/www/html
    ServerName website4.com
</VirtualHost>

笔记:

  1. 我读到过您必须使用名为“a2enmod ssl”的命令启用 ssl,但我的服务器上不存在该命令。
  2. /etc/httpd/logs 中没有 ssl 错误日志。
  3. 根据 Godaddy 的规定,我被要求将密钥命名为“mywebsite1”,但不带扩展名。但他们却给了我一个带扩展名的 crt,这很奇怪。
  4. 这只是开发阶段,一旦我们启动生产服务器,就需要使用新的 SSL 和不同的域快速重现此更改。

我已尝试所有步骤 3 次(参见 5a-5c),但仍然无法使 SSL 在我的 1 个域中工作。我该如何使 SSL 工作?

更新:apachectl -S

12.34.567.90:80 mywebsite4.com (/etc/httpd/conf/httpd.conf:1021)
12.34.567.89:* is a NameVirtualHost
default server mywebsite3.com (/etc/httpd/conf/httpd.conf:1016)
port * namevhost mywebsite3.com (/etc/httpd/conf/httpd.conf:1016)
port * namevhost mywebsite1.com (/etc/httpd/conf/httpd.conf:1026)
port * namevhost mywebsite2.com (/etc/httpd/conf/httpd.conf:1031)
port * namevhost mywebsite5.com (/etc/httpd/conf/httpd.conf:1036)
wildcard NameVirtualHosts and _default_ servers:
*:443 is a NameVirtualHost
default server mywebsite1.com (/etc/httpd/conf.d/ssl.conf:77)
port 443 namevhost mywebsite1.com (/etc/httpd/conf.d/ssl.conf:77)
Syntax OK

更新:它工作了..但是..

我设法通过将 vhost 更改为指向 mywebsite1 而不是 *:443 来运行 SSL

<VirtualHost mywebsite1.com>
    SSLEngine on
    SSLCertificateFile /etc/pki/tls/certs/mywebsite1.com.crt
    SSLCertificateKeyFile /etc/pki/tls/private/mywebsite1.key
    #SSLCertificateChainFile /etc/pki/tls/certs/gd_bundle.crt
    DocumentRoot /var/www/html
    ServerName mywebsite1.com
    ErrorLog logs/ssl_error_log
    TransferLog logs/ssl_access_log
    LogLevel warn
</VirtualHost>

这会拉起 SSL,但是……HTTP 协议会返回“错误请求”

此更改似乎影响了网站的非 SSL 查看。我无法指定端口,因为重新启动 apache 会给我一个错误,即端口和非端口不能混合。

更新

根据 Michael Hampton 的建议进行了修复。谢谢大家。

答案1

你有一堆<VirtualHost>条目已定义端口号。因此,如您的apachectl -S输出所示,该定义将应用于所有监听端口。为每个<VirtualHost>端口定义一个端口号。

答案2

如果您使用默认的 /etc/httpd/conf.d/ssl.conf,您应该有日志:

错误日志/ssl_error_log TransferLog 日志/ssl_access_log LogLevel 警告

尝试摆脱:

SSL证书链文件 /etc/pki/tls/certs/gd_bundle.crt

并且还要确保您的证书没有因复制粘贴而缺失的行。

如果遇到问题,请先尝试使用自签名证书进行测试: http://httpd.apache.org/docs/2.0/ssl/ssl_faq.html#selfcert

这应该有助于解决其他问题:

http://www.instantssl.com/ssl-certificate-support/server_faq/ssl-server-certificate-apache.html

相关内容