新系统第一篇正经博客:如何给我的站点添加小绿锁

/ 默认分类 / 1 条评论 / 135浏览

首先 要值得庆祝的是我的网站通过备案了

之前我的博客是用的hexo博客,项目托管在github.io上,在本地使用Markdown写好文章 编译发布到git仓库就可以了。因此也无需备案。不过发现,github的访问速度不稳定,时快时慢就比较坑爹

前一阵刚好赶上了阿里云的双11活动,直接298买了个最低配的3年,寻思买来放放博客,自己的小项目什么的都挺好。
刚好朋友最近推荐了一个java的开源博客项目 就是现在用的tale,而且hexo看久了 也腻了 而hexo且没有后台,要手写markdown然后手动编译再git push 挺麻烦的。
所以我就在阿里云上搭了这个tale。功能比较简洁明了,用的是内置sqlite,总共没有几张表。不依赖容器。
如何安装tale大家直接点连接进去看就可以了,很简单 傻瓜式操作。

接下来讲讲如何给你的网站添加小绿锁

以下提到两个证书供应商都提供免费的ssl DV证书,letsencrypt三个月需要续期,可以自动续期,阿里云免费一年。

使用letsencrypt

给站点添加ssl比较热门和方便的一个方法就是使用letsencryptCertbot自动给你的站点添加证书。
进入到certbot网站可以看到支持的服务器以及系统,本人推荐使用nginx,配置比较方便。
大概过程就是连接到你的服务器,安装certbot,配置一下nginx就ok了。这里不多讲certbot的使用了,因为我用的是阿里云的证书。

阿里云ssl证书

如果你的域名也是在阿里云购买的话,这个过程就会更加方便。

  1. 在阿里云购买的域名--》直接进入阿里云控制台 --域名 点击管理,里面有申请免费的ssl证书。
  2. 不是在阿里云购买的域名就要在阿里云搜索ssl进入根据提示申请一个免费的ssl证书,这里相较于 1 麻烦的就是要手动验证域名的所有权。可能要添加一条text类型的解析记录。

现在假定你已经申请好了证书,可以看到证书管理界面你的证书那里有个下载,点击他,下载完你会拿到一个压缩包,里面有量个主要的文件,一个是以crt结尾的证书文件,一个是以key结尾的私钥文件。


剩下的步骤 阿里云的官方文档已经讲的很清楚了,详见:Nginx/Tengine服务器安装SSL证书
Tomcat的也有,详见:Tomcat服务器安装SSL证书

有一点要注意的是https使用的是443端口,http默认是80端口,所以要到阿里云的安全组添加开放你的443端口

后续配置

做完上边的工作,你的网站应该就可以使用https://your.domain来访问了~
但细心的小伙伴会发现一个问题,这里一定要手动加上https的头,为什么人家的网站都可以直接使用域名访问自动跳转到https呢,其实这里也是后台要配置一个转发,将http的请求全部全部转到https。
下边是我完整的nginx配置文件 供大家参考。

    # For more information on configuration, see:
    #   * Official English Documentation: http://nginx.org/en/docs/
    #   * Official Russian Documentation: http://nginx.org/ru/docs/

    user nginx;
    worker_processes auto;
    error_log /var/log/nginx/error.log;
    pid /run/nginx.pid;

    # Load dynamic modules. See /usr/share/nginx/README.dynamic.
    include /usr/share/nginx/modules/*.conf;

    events {
        worker_connections 1024;
    }

    http {
        log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                          '$status $body_bytes_sent "$http_referer" '
                          '"$http_user_agent" "$http_x_forwarded_for"';

        access_log  /var/log/nginx/access.log  main;

        sendfile            on;
        tcp_nopush          on;
        tcp_nodelay         on;
        keepalive_timeout   65;
        types_hash_max_size 2048;

        include             /etc/nginx/mime.types;
        default_type        application/octet-stream;

        # Load modular configuration files from the /etc/nginx/conf.d directory.
        # See http://nginx.org/en/docs/ngx_core_module.html#include
        # for more information.
        include /etc/nginx/conf.d/*.conf;

        server {
            listen       80 default_server;
            listen       [::]:80 default_server;
            server_name  wasea.top www.wasea.top;
            root         /usr/share/nginx/html;
            rewrite ^(.*)$ https://$host$1 permanent;  # 重要的一个配置,可以自动转到https
            # Load configuration files for the default server block.
            include /etc/nginx/default.d/*.conf;

            location / {
            proxy_pass http://localhost:9000; # 我的tale博客默认使用9000端口
            }

            error_page 404 /404.html;
                location = /40x.html {
            }

            error_page 500 502 503 504 /50x.html;
                location = /50x.html {
            }
        }

    # start aliyun ssl config
    server {
    # listen 443;
     listen       443 ssl http2 default_server;
     listen       [::]:443 ssl http2 default_server;
     server_name wasea.top www.wasea.top;
     ssl on;
     root html;
     index index.html index.htm;
     ssl_certificate   cert/a.pem;
     ssl_certificate_key  cert/a.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 / {
        add_header Content-Security-Policy upgrade-insecure-requests;
        proxy_pass http://localhost:9000;
     }
    }
    # end aliyun ssl config

    }

还有一点值得说的是,我这里省略了linux下一些细节的操作命令,例如给防火墙开放端口、安装nginx 等等其他,这些每个系统都有细微的区别,大家根据自己的系统来操作就好了。

  1. 应该是可以评论了!!!

    回复