博客全站启用HTTPS
  在 Linux 分类下   4 条评论

博客全站启用HTTPS

  在 Linux 分类下   4 条评论

起因

经过一晚的折腾,终于全站启动了https。为什么要换https呢,当然是为了安全(我才不会告诉你是为了好看)。

现在主流站点全部都启用了https,会在网址前面加一个小锁样式,并且显示链接安全。
1.png

简介

HTTPS经由超文本传输协议(HTTP)进行通信,但利用SSL/TLS来对数据包进行加密。 HTTPS开发的主要目的,是提供对网络服务器的身份认证,保护交换数据的隐私与完整性。这个协议由网景公司(Netscape)在1994年首次提出,随后扩展到互联网上。现在它被广泛用于万维网上安全敏感的通讯,例如交易支付方面。

HTTPS是在HTTP的基础上加入了SSL/TLS协议,依靠SSL证书来验证服务器的身份,并为客户端和服务器端之间建立“SSL加密通道”,确保用户数据在传输过程中处于加密状态,同时防止服务器被钓鱼网站假冒。

那么也就是说,我们要搭建HTTPS服务器,就要先拿到 ssl 证书,那么怎么拿到证书呢?

证书申请

证书类型

DV域名型 https 证书(DVSSL):信任等级一般,只需验证网站的真实性便可颁发证书保护网站;
OV企业型 https 证书(OVSSL):信任等级强,须要验证企业的身份,审核严格,安全性更高;
EV增强型 https 证书(EVSSL):信任等级最高,一般用于银行证券等金融机构,审核严格,安全性最高

证书申请

一般情况下,证书都是收费的,颁发证书的机构也有不少,但是对于我们个人用户来说,DV证书是比较合适的,当然,有免费的……
提供免费DV证书的国内比较不错的就是阿里云、七牛和腾讯,都是一年有效期,其实一年足够了,到期后重新申请就可以了;
本来打算申请阿里的,结果还需要填手机号,等待签证人员拨打电话确认,于是改申请腾讯云的了。
官方网址:SSL证书 - 腾讯云,点下面的免费申请。

2.png

按照提示一步一步填写信息

3.png

紧接着就是让我们选择解析方式,我们这里选择手动DNS验证

4.png

点击确认申请后,弹出提示框,点击查看证书详情,跳转到证书信息页面

5.png

此时,腾讯会等待我们的DNS解析,打开我们的域名管理,按证书给我们的提示,在域名管理中添加CNAME解析记录

解析完成后,证书就会颁发,一般不会超过5分钟;

6.png

下载证书,解压后,能得到4个文件夹,分别对应不同的服务器 我使用Nginx进行配置,所以我们就关注Nginx这个文件夹就好了,将其下面文件上传到服务器。

至此,我们已经拿到了证书;

配置Nginx服务器

更新配置文件

接下来就是配置我们的Nginx服务器:

server {
        listen       443;
        ssl on;
        server_name  buxuhunao.com www.buxuhunao.com;
        ssl_certificate     /usr/local/nginx/ssl/blog/1_www.buxuhunao.com_bundle.crt;
        ssl_certificate_key /usr/local/nginx/ssl/blog/2_www.buxuhunao.com.key;

        root   /home/wwwroot/blog;
        index  index.html index.htm index.php;

        ...

重新加载 Nginx 配置文件

./sbin/nginx -s reload

此时打开你的浏览器访问:https://www.buxuhunao.com/
就可以看到,已经是https的安全连接了;

强制HTTPS

配置重定向

还可以配置将80端口(http)重定向到443端口(https)
修改Nginx配置文件,添加

server
{
        listen 80;
        server_name buxuhunao.com www.buxuhunao.com;
        rewrite ^(.*) https://www.buxuhunao.com$1 permanent;
}

或者可以

listen 80; 
listen 443 ssl; 

#下面两个一样的效果 
if ($scheme = http ) { 
return 301 https://$host$request_uri; 
} 

if ($server_port = 80 ) { 
return 301 https://$host$request_uri; 
} 

#http://nginx.org/en/docs/http/ngx_http_ssl_module.html#errors 
error_page 497 https://$host$request_uri;

还可以

通过HTML跳转

index.html

<html>  
<meta http-equiv="refresh" content="0;url=https://buxuhunao.com/">  
</html> 

Nginx配置文件添加

server {  
    listen 80;  
    server_name buxuhunao.com www.buxuhunao.com;  
  
    location / {  
        #index.html放在虚拟主机监听的根目录下  
        root /home/wwwroot/blog/;  
    }  
} 

这种方法相比第一种的好处是不耗费服务器资源,大家可以评价一下优劣或者根据实际需求进行选择。

TYPECHO 配置

我博客用的typecho程序,还需要额外修改:

登录Typecho后台 -> 设置 -> 基本设置 -> 站点地址改成 https://buxuhunao.com

编辑Typecho站点根目录下的文件config.inc.php加入下面一行配置,否则网站后台还是会调用HTTP资源。

/** 开启HTTPS */
define('__TYPECHO_SECURE__',true);

至此,https已搞定,还是很简单的...

评论已关闭
  1. 搞定了...我按照你的弄了一遍发现了一个更简单的...用宝塔的那个ssl就直接可以添加... icon_twisted.gif

    1. @北七家滞留儿童

      是的,宝塔的话你把它们2个复制填进去就可以。

  2. 写的不错,等等我也弄下试试

    1. @北七家滞留儿童

      怎么样,搞了没有...