如何给自己的网站添加小绿锁

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

之前我的博客是用的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配置文件 供大家参考。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
# 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 等等其他,这些每个系统都有细微的区别,大家根据自己的系统来操作就好了。