使用浏览器时,您与此网站之间建立的连接不安全 的提醒很碍眼,所以今天为本站添加了SSL证书,启用 https://
申请SSL证书
在阿里云的 云盾证书服务(包年),免费的SLL证书,要先点击Symantec 和 一个域名,就会出现 免费型DV SSL 的选项,然后就可以0元购买。
有两种域名验证方式:
- DNS验证方式
- 文件验证方式
通过验证就申请成功了。然后在证书控制台,下载并安装证书。
下载.pem 和 .key 文件,然后上传到服务器,知道路径就行。
安装SSL证书
这部分,主要是Nginx的操作。虽然使用LNMP一键安装包安装LNMP,但没有使用 lnmp ssl add 添加证书。
我的操作是,修改/usr/local/nginx/conf/vhost 路径下相应站点的 .conf 文件。
server
    {
        listen 80;
        #listen [::]:80;
        server_name blog.francis67.cc francis67.cc;
        index index.html index.htm index.php default.html default.htm default.php;
        root  /home/wwwroot/blog.francis67.cc;
        #SSL配置从这里新增
        listen 443;
        ssl on;
        ssl_certificate   /usr/local/nginx/conf/vhost/cert/xxx.pem;
        ssl_certificate_key  /usr/local/nginx/conf/vhost/cert/xxx.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;
        #SSL配置到这里结束
        include rewrite/other.conf;
        #error_page   404   /404.html;
        # Deny access to PHP files in specific directory
        #location ~ /(wp-content|uploads|wp-includes|images)/.*\.php$ { deny all; }
        include enable-php-pathinfo.conf;
        location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
         {
            expires      30d;
        }
        location ~ .*\.(js|css)?$
        {
            expires      12h;
        }
        location ~ /.well-known {
            allow all;
        }
        location ~ /\.
        {
            deny all;
        }
        access_log  /home/wwwlogs/y.log;
        }
重启Nginx服务 /etc/init.d/nginx restart
参考:
typecho设置
- 配置config.inc.php
文件位于typecho根目录,新增如下内容:
    /** 开启SSL */
    define('__TYPECHO_SECURE__',true);
- 后台设置
后台管理—>基本设置—>站点地址,将 https://blog.francis67.cc 换成 https://blog.francis67.cc
- 更换全站链接
使用phpMyadmin在SQL中中执行:
UPDATE typecho_contents SET TEXT = REPLACE( TEXT, 'http://www.opdev.me/', 'https://www.opdev.me/');
- Chrome警告
找到站点主题目录下的comments.php文件,并搜索$this->commentUrl(),将其替换为:echo str_replace("http","https",$this->commentUrl()); 最后保存。
参考:
强制全站https
此时http和https应该都是可以访问的,如果想只使用https,我们可以我通过Ningx将80端口(HTTPS)重定向到443端口(HTTPS),强制全站HTTPS。
修改/usr/local/nginx/conf/vhost 路径下相应站点的 .conf 文件。
把前面的listen 80;注释掉,再添加一段
server
{
    listen 80;
    server_name blog.francis67.cc francis67.cc;
    rewrite ^(.*) https://blog.francis67.cc$1 permanent;
}
参考:
目前有三张免费SSL证书,分别用在了blog.francis67.cc 、blog.francis67.cc 和 file.francis67.cc,都已经启用了https://