常见的Magento SSL配置问题解决方法

2018/8/21 下午4:50
shi yong

安全套接字层(SSL)已成为电子商务网站的一个重要方面。SSL确保客户与网站之间的双向通信在整个交易期间保持安全。

使用SSL保护网站表明网站所有者非常重视保护客户的个人信息。就SERP(搜索引擎结果页面)的标准而言,拥有SSL的网站排名越来越高。

安装和维护SSL证书可能是网站所有者的麻烦。如果处理不当,该问题可能严重妨碍访客的体验。结果是网站的收入和声誉显著降低。

使用Magento SSL时,网站所有者应确保:

  • SSL已正确安装
  • 安全URL已设置
  • 安全URL在前端和后端实现
  • SSL证书设置为包括www
  • 网站里没有不安全的链接

现在将讨论困扰网站的最常见的Magento SSL相关问题。此外,我还将提供解决问题的方法。

1. Magento SSL无效

按照以下步骤从Magento后台激活SSL :

  • 导航到 System > Configuration > General > Web
  • 单击"Secure"选项卡
  • 启用"Use Secure URLs in the frontend"选项为"yes"
  • 启用"Use Secure URLs in the Admin" 选项为"yes"
  • 检查offload header为"SSL_OFFLOADED"

激活Magento SSL后,网站的URL将从"HTTP"  更改为"HTTPS"

如果问题仍然存在,则问题可能出在数据库层上。请按照以下步骤来解决问题:

  • 选择数据库表"core_config_data"
  • 运行查询:"Select * from core_config_data where path = ‘%web/secure/base_url%’;"
  • 检查列值。如果是"HTTPS",则表示后台设置已完成。

如果SSL仍无效,则您的网站的SSL设置存在问题。有时,在成功安装和激活SSL后会出现此问题。Ajax调用或第三方URL调用中的问题也可能导致此问题。以下是如何解决这些问题:

Ajax 调用

如果Ajax调用中存在任何设置问题,请更改以下代码:

echo Mage::getUrl(‘MYMODULE/MYCONTROLLER/MYACTION’, array(‘_secure’ => Mage::app()->getStore()->isCurrentlySecure()));

第三方URL调用

替换掉不是"https"的第三方URL,比如"HTTPS://www.example.com",替换成"HTTPS://www.example.com"

2.Magento SSL结账页面重定向

当Magento SSL无法正常工作时,会出现此问题。在许多情况下,结帐页面会被重定向到其他页面,例如主页或index页面。

以下是修复结帐重定向问题的过程:

  • 在Magento网站中安装SSL证书。
  • 导航到 Admin > System > Configuration > General > Web
  • 转到"secure settings"并将base URL更改为"HTTPS://"
  • 保持"Base link URL"为“{{secure_base_url}}”
  • 保持Skin, Media, and JavaScript设置为“{{secure_base_url}}skin/etc”
  • 选择“Use Secure URL for frontend”为"yes"
  • 最后,单击"Save"以应用设置。

以上过程适用于所有Magento版本。

3.无法获得本地颁发者证书

若要解决此问题,请按照下列步骤操作:

  • 创建证书到本地副本并将其保存在服务器上的安全位置。
  • 如果您使用的是Linux,请将文件保存在:"/etc/ssl/example_com.crt "
  • 在服务器(以apache为例)中正确配置:
     
    ServerName example.com 
    DocumentRoot /var/www/
    
    SSLEngine on 
    SSLCertificateFile /etc/ssl/example_com.crt 
    SSLCertificateKeyFile /etc/ssl/private/example_com.key 
    SSLCertificateChainFile /etc/ssl/example_com.ca-bundle 
    
  • 根据保存文件的位置更新文件。
  • 最后,重启服务器以更改应用配置。

4.安装Magento SSL使后台无法访问

有两种方法可以解决这个问题:

  • 手动将"core_config_data"表中的"web/secure/use_in_adminhtml"值更改为"0";或执行SQL语句"INSERT INTO core_config_data (scope,scope_id,path,value) VALUES ('default',0,'web/secure/use_in_adminhtml',1);"
    • 改回表中的URL为“HTTP://your.domain.com/”

    通过删除“/var/cache”文件清除magento缓存

    5.使用SSL ,magento页面显示404 Page Not Found

    SSL有自己的配置文件,有时当SSL不能正常工作时,它可能会给出404(Page not found)错误。通常,文件如下:

    “sudonano /etc/apache2/sites-available/default-ssl”

    您需要将“AllowOverride None”更改为“AllowOverride All”,然后重新启动服务器。

    sudo /etc/init.d/apache2 restart

    重新启动服务器后,您将看到所有页面都正常工作。如果您收到任何与页面内容相关的错误,请检查页面上的任何外部URL。尝试消除外部URL并仅包含相对URL。

    6.在后台使用Magento SSL时出现403(Forbidden)错误

    在以下情况下,有时会故意返回错误代码403(Forbidden):

    • 用户没有进去特定页面的权限。
    • 用户正在尝试访问已将autoindex设置为off的目录。
    • 用户正在尝试访问只能在内部访问的文件。

    但是,出于本文的目的,我将讨论无意中发生错误的情况。

    权限未正确设置

    这是此问题背后最常见的原因。如果要提供文件,则服务器必须读取并执行文件的分层目录中的权限。例如:

    对于/usr/share/myfiles/image.jpg,服务器应具有/,/ usr,/ usr / share/ usr / share / myfiles的读取和执行权限。如果您不希望看到此错误,则需要对目录使用标准755,对文件使用644。

    您可以使用namei来检查路径的权限:

    f: /var/www/vhosts/example.com
     
    drwxr-xr-x root     root     /
     
    drwxr-xr-x root     rootvar
     
    drwxr-xr-x www-data www-data www
     
    drwxr-xr-x www-data www-datavhosts
     
    drwxr-xr-xmconnectmconnect    example.com

    目录索引尚未正确定义

    标准PHP设置的索引指令是:

    "index index.html index.htm index.php;"

    在上面的示例中,服务器将首先提供index.html,然后是index.htm,最后是index.php。如果找不到所有上述目录或没有响应,则返回403 forbidden错误。

    7. HTTP与Https重复内容问题

    Http和HTTPS被视为单独的端口。但是,搜索引擎会将这两个版本的内容视为重复内容。从SEO的角度来看,这是一个严重的问题。此问题有3中修复方法:

    规范链接元素

    规范链接元素被添加到网页的head标签中:

    <link rel="canonical" href="HTTP://www.domain.com/star-wars/toys/cut-outs/luke-skywalker.html"/>

    这些链接元素突出显示内容的规范位置。因此,当搜索引擎抓取网站时,只有Https版本会显示在搜索结果中。

    为Https提供不同的Robots.txt

    在此解决方案中,您允许搜索引擎抓取网站的HTTPS版本。这是你应该做的:

    • 使用.htaccess提供两个不同的Robots.txt文件。将常规非安全HTTP文件另存为robots.txt,并将安全HTTPS文件另存为robots_ssl.txt
    • htaccess文件中添加一下代码:

    RewriteEngine on
    RewriteCond %{SERVER_PORT} ^443$
    RewriteRule ^robots\.txt$ robots_ssl.txt [L]
    RewriteEngine on
    RewriteCond %{SERVER_PORT} ^443$
    RewriteRule ^robots\.txt$ robots_ssl.txt [L]

    • 这将改写服务robots_ssl.txtrobots.txt的

    元机器人标签

    如果上述两种方法无法解决问题,可以使用Meta Robots标记。此标记允许对页面进行抓爬但不对其编制索引。要使用该标记,以下代码将添加到网页的Head标记中:

    
    <?php
    
    if(isset($_SERVER['HTTPS']) &&strtolower($_SERVER['HTTPS']) == 'on') {
    
    echo''. "\n";
    
    }
    
    ?>
    <?php
     
    if(isset($_SERVER['HTTPS']) &&strtolower($_SERVER['HTTPS']) == 'on') {
     
    echo''. "\n";
     
    }
     
    ?>

    8.在Magento管理区域中启用SSL时的无限重定向循环

    当您在Magento管理面板中打开SSL时,可能会遇到此问题。

    问题可能出在模型app/code/core/Mage/Core/Model/Store.php

    public function isCurrentlySecure()
    
    {  
    
                if (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off') {
    
                return true;
    
                }  
    
                if (Mage::isInstalled()) {
    
                            $secureBaseUrl = Mage::getStoreConfig('web/secure/base_route_url');
    
                            if (!$secureBaseUrl) {
    
                                        return false;
    
                            }  
    
                            $uri = Zend_Uri::factory($secureBaseUrl);
    
                            $isSecure = ($uri->getScheme() == 'HTTPS' ) &&isset($_SERVER['SERVER_PORT']) && ($uri->getPort() == $_SERVER['SERVER_PORT']);
    
                            return $isSecure;
    
                 } else {
    
                            $isSecure = isset($_SERVER['SERVER_PORT']) && (443 == $_SERVER['SERVER_PORT']);
    
                            return $isSecure;
    
                 }  
    
    }
    

    当在"core_config_data"表中没有"web/secure/base_route_url",默认的响应"isCurrentlySecure"总是返回false

    您可以通过添加服务器变量"HTTPS"  值来修复它  。

    如Nginx与PHP-FPM一起使用,将这些行添加到“nginx.conf”:

    fastcgi_param HTTPS on;

    重新加载服务器,一切都应该正常工作。

    9. SSL-HTTPS Magento前端布局问题

    使用HTTPS对工作站点的更改包括:
    在配置中,
    在不安全部分中
    基本URL:删除"HTTP"

    在安全部分
    基本URL:添加"HTTPS"

    然后刷新缓存。

    10.启用Magento SSL后,管理员登录失败

    在Magento Admin中启用SSL后,通常会出现此问题。以下步骤将解决此问题:

    • 进入数据库并进入"core_config_data"表中,  更新"web/secure/use_in_admindata"path中的value为"0"
    • 将"web/secure/use_in_frontend"path中的"value"设置为"0"
    • 通过使用SSH,登录到主机帐户,并运行命令"rm -rf ~/public_html/magento/var/cache"

    使用共享服务器或主机时,需要更改缓存目录。

    如何更改Magento基本URL?

    可以根据网站的要求设置Magento基本URL。要更改基本URL,请登录Magento管理面板,导航到"System > Configuration > Web > Unsecure > Base URL and System > Configuration > Web > Secure > Base URL"

    完成更改后,您需要进入“System > Cache Management”刷新缓存

    如果Magento管理面板无法访问,则需要在数据库中进行更改。登录"phpMyAdmin",导航到"core_config_data"表,改变"web/unsecure/base_url" 和 "web/secure/base_url"中的value值

    要应用更改,请通过删除var/cache目录中的所有内容来刷新Magento中的缓存

    11.结帐时Magento SSL相关警告

    当您使用Magento网站时,结帐过程可能需要多次修复和调试。在测试网页时,请密切关注页眉和页脚中的图像,因为它们可以创建大量问题。

    要解决此问题,您应该使用图像的直接链接,而不是使用参考或源链接。

    (简写图片源链接)

    (接图像源链接)

    这会通知浏览器它应该按照当前区域加载重要的资源。特别是,使用Chrome测试网站,因为它可以检测任何网站中的大多数错误。

    这些是一些常见的Magento SSL相关问题的解决方案。我希望您能够自己应用修复程序而不会出现任何问题。如果您遇到问题,请随时与我们联系。


    经常问的问题

    Q1。什么是SSL?

    SSL表示用于使网站安全的安全套接字层。它应该安装在每个电子商务网站中,以确保用户和网站之间的交易过程安全。

    Q2。SSL完全免费使用吗?

    许多SSL证书提供商对此收费,但是如果您想要免费且可靠的SSL证书,那么请选择Let's Encrypt。

    Q3。什么是Robots.txt?

    您网站的一个文本文件,用于与网络抓取工具和其他网络机器人进行通信,称为Robots.txt。