Apache/Nginx博客网站部署SSL证书支持HTTPS协议

Web TOMORROW 10个月前 (07-02) 785次浏览 0个评论 扫描二维码

 

现在大部分浏览器的网址栏都会有一个小绿锁的标志,显示该当前网站的安全性。其实就是表示当前网站链接使用的是https协议,拥有 ssl 证书。本文将讲述如何在Apache和 Nginx 环境下,部署安装SSL证书,使得全站支持https

在安装部署SSL的过程中,如果有开启 cdn 加速的,最好关闭 cdn 加速。目前腾讯云和阿里云的 Cdn 加速都是支持部署SSL的,先部署完源站再来部署 cdn 的,否则出现问题难以定位。

安装了宝塔面板之类的服务器管理工具

首先,如果网站服务器使用了宝塔面板之类的服务器管理工具,那么就直接使用面板所提供的网站管理工具快速部署SSL证书。因为,面板的配置文件优先级要比Apache和 Nginx 服务器程序的配置文件要高。

如下图所示,将密钥复制粘贴到左边,将证书文件粘贴到右边。

开启强制 HTTPS,实际上就是全站 http 设置成 301 重定向到https连接。

Apache/Nginx 博客网站部署 SSL 证书支持 HTTPS 协议

Apache环境

  1. Apache的安装目录下创建 cert 目录,并且将下载的全部文件拷贝到 cert 目录中。将对应的私钥文件放到 cert 目录下并且命名为 private.key;
  2. 打开 apache 安装目录下 conf 目录中的 httpd.conf 文件,找到以下内容并去掉“#”:
    #LoadModule ssl_module modules/mod_ssl.so (如果找不到请确认是否编译过 openssl 插件)
    #Include conf/extra/httpd-ssl.conf
    #LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
    
  3. 打开 apache 安装目录下 conf/extra/httpd-ssl.conf 文件 (也可能是 conf.d/ssl.conf,与操作系统及安装方式有关), 在配置文件中查找以下配置语句,搜索配置语句就能找到,例如第一条配置语句搜索“SSLProtocol”,然后修改后面的配置,注意证书文件的文件名,根据实际情况修改:
    # 添加 SSL 协议支持协议,去掉不安全的协议
    SSLProtocol all -SSLv2 -SSLv3
    # 修改加密套件如下
    SSLCipherSuite HIGH:!RC4:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!EXP:+MEDIUM
    SSLHonorCipherOrder on
    # 证书公钥文件配置
    SSLCertificateFile cert/public.pem
    # 证书私钥文件配置
    SSLCertificateKeyFile cert/private.key
    # 证书链文件配置,如果该属性开头有 '#'字符,请删除掉
    SSLCertificateChainFile cert/chain.pem
    
  4. 然后重启 Apache,尝试用https访问网站。如果能能访问则表明证书安装正确,但是可能会出现一些资源无法加载导致排版乱等问题。

Nginx 环境

  1. 在 Nginx 的安装目录下创建 cert 目录,并且将下载的全部文件拷贝到 cert 目录中。如果申请证书时是自己创建的 CSR 文件,请将对应的私钥文件放到 cert 目录下并且命名为 private.key;
  2. 打开 Nginx 安装目录下 conf 目录中的 nginx.conf 文件,找到:
    # HTTPS server
    # #server {
    # listen 443;
    # server_name localhost;
    # ssl on;
    # ssl_certificate cert.pem;
    # ssl_certificate_key cert.key;
    # ssl_session_timeout 5m;
    # ssl_protocols SSLv2 SSLv3 TLSv1;
    # ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
    # ssl_prefer_server_ciphers on;
    # location / {
    #
    #
    #}
    #}
    
  3.  将其修改为 (以下属性中 ssl 开头的属性与证书配置有直接关系,其它属性请结合自己的实际情况复制或调整),注意证书相关文件根据实际文件名调整 :
    server {
        listen 443;
        server_name localhost;
        ssl on;
        root html;
        index index.html index.htm;
    #cert.pem 文件是由 public.pem + chain.pem 拼接成的文件
        ssl_certificate   cert/cert.pem;
    #证书私钥文件
        ssl_certificate_key  cert/private.key;
        ssl_session_timeout 5m;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers on;
        location / {
            root html;
            index index.html index.htm;
        }
    }
    
  4.  重启 Nginx。通过 https 方式访问您的站点,测试站点证书的安装配置。如果能访问则表明证书安装正确,但是可能会出现一些资源无法加载导致排版乱等问题。

WordPress全站开启https

如果是WordPress网站,成功部署完成 SSL 证书后,可以通过以下配置,完美解决网站部分资源不支持 https 协议的问题。

  • 首先,在网站根目录找到 wp-config.php 文件并打开,找到其中的
    * @package WordPress
    */
    

    然后在其下方添加以下代码:

    $_SERVER['HTTPS'] = 'on';
    define('FORCE_SSL_LOGIN', true);
    define('FORCE_SSL_ADMIN', true);
    
  •  登录WordPress后台,安装really-simple-ssl插件并启用;
  • 然后WordPress全站就开启了 https,并且一些主题附带的其他的资源例如 css 文件、头像等也会强制改成 https 连接,浏览器的小绿锁就完全变绿了,而不会再有黄色叹号之类的情况。

 


TOMORROW 星辰 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Apache/Nginx 博客网站部署 SSL 证书支持 HTTPS 协议
喜欢 (0)
TOMORROW
关于作者:
TOMORROW星辰第一作者。如有疑问或者发现错误,请留言作者。
开心的钻石发表我的评论  请填写正确的 个人信息
取消评论
表情 加粗 斜体 签到