在CentOS上设置Godaddy SSL?

我以前从来没有在Linux上build立SSL,但对它的工作原理有一个总体的了解。 服务器规格如果有帮助:

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

所以,我有4个域共享一个单一的Magento安装和IP地址。 假设我的一个域名是“mywebsite1.com”我现在想为这个域名启用SSL,但是我遇到了错误。 我究竟做错了什么? 这是我的工作stream程:

  1. 我从Godaddy购买了一个SSL,然后用它们给出的命令生成了csr和key:

    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. 一个。 第一次尝试,我打开了/etc/httpd/conf.d/ssl.conf并更新了默认的 VirtualHost块的SSLCertificate File,KeyFile和ChainFile值,以指向正确的位置。

    湾 第二次尝试,遵循http://dev.antoinesolutions.com/apache-server/mod_ssl我修改了ssl.conf并添加了这个指令:

    NameVirtualHost *:443

    C。 然后我删除了整个默认的 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 …把​​我带到谷歌…


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”没有扩展名。 然而,他们给我一个这样的延伸,这是奇怪的。
  4. 这只是发展阶段,一旦我们启动生产服务器,这个变化将需要一个新的SSL和不同的域名快速复制。

我已经尝试了所有的步骤3次(见5a-5c),但仍然没有运气让SSL为我的领域的一个工作。 我怎样才能使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 

更新:得到它的工作..但..

我设法通过更改虚拟主机指向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会给我一个错误,端口和非端口不能混合。

UPDATE

修复迈克尔·汉普顿的build议。 多谢你们。

您有一堆没有定义端口号的<VirtualHost>条目。 因此,当你的apachectl -S输出显示时,定义被应用到所有侦听端口。 为每个<VirtualHost>定义一个端口号。

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

ErrorLog logs / ssl_error_log TransferLog logs / ssl_access_log LogLevel警告

尝试摆脱:

SSLCertificateChainFile /etc/pki/tls/certs/gd_bundle.crt

并确保您的证书没有复制粘贴中的缺失行。

如果遇到问题,请先尝试使用自签名证书进行testing: 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