0%

搭建HTTPS服务器

前言

最近网站的多说系统出了点问题,就是必须要使用https才能请求成功,可能是多说系统升级了吧,于是乎,我就升级了一下自己的服务器,让网站支持了HTTPS,这样传输的信息就安全了,你们访问我的Blog就会更安全,虽然这里不需要登陆什么的,不会泄露你的个人信息。

申请证书

特别说明:现在沃通已经关闭了免费证书的申请,现在可以到腾讯云或者阿里云免费申请证书。我现在使用的是腾讯云的HTTPS证书。

网上很多资料,说证书需要自己去生成,但是生成的证书浏览器是不认可的,尽管可以调整自己的浏览器,添加证书信任,但是其他浏览你网页的人却会得到安全警告(如下图),说你的网站不安全,因此,你需要去第三方CA认证申请一个证书。

我所知道的可以申请免费证书的CA机构有两家,分别是沃通WoSign和StartSSL,沃通是国内的一家机构,而StartSSL是国外的,如果你的网站主要是面向国内用户,建议使用沃通的证书。不过这两家张书所有的主流浏览器都是认可的,也就不会出现上面的安全警告了。

我使用的是沃通的证书,免费两年,到期后可以继续免费续费,相当于永久免费。

申请界面如下:

具体申请过程很清楚,按步骤来就可以了。

注意:不要把证书弄丢了,弄丢了需要重新申请!

申请到证书后,会得到一个domain.zip的压缩包,解压后,根据你服务器的类型,选择合适的解压。

安装证书

我使用的nginx服务器,所以我解压了for Nginx.zip

将证书上传到服务器,并在nginx的安装目录下,新建一个sslkey的文件夹,并把解压出的两个文件domain.crt和domain.key放到sslkey文件夹中,nginx安装在默认位置(/etc/nginx/)

1
2
3
sudo mkdir /etc/nginx/sslkey
sudo mv domain.cre /etc/nginx/sslkey/domain.crt
sudo mv domain.key /etc/nginx/sslkey/domain.key

这样证书就按照好了。

安装openssl

在Ubuntu上,使用以下命令:

1
sudo apt-get install openssl

启动HTTPS服务

没有用过StartSSL的证书,可能在ssl的配置上,有些不同,具体情况请百度或谷歌。
找到Nginx的网站配置文件,一般在/etc/nginx/sites-available/xxx,修改这个文件。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
server {
listen 443 default_server; #将原来的 80 改成 443
server_name blog.whaoyu.com;

# 添加以下以ssl开头的内容
ssl on;
ssl_certificate sslkey/domain.crt; # 证书公钥
ssl_certificate_key sslkey/domain.key; # 证书私钥
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers AESGCM:ALL:!DH:!EXPORT:!RC4:+HIGH:!MEDIUM:!LOW:!aNULL:!eNULL;
ssl_prefer_server_ciphers on;

# 以下内容根据不容的网站,内容是不同的,不用修改
index index.html index.htm;
root /home/ubuntu/blog;
}

重启nginx服务,证书安装结束。

1
sudo service nginx restart

端口重定向

新建一个站点配置文件/etc/nginx/sites-available/xxx_80,用来重定向80端口
然后编辑文件:

1
2
3
4
5
server {
listen 80;
server_name domain.com;
return 301 https://$server_name$request_uri;
}

然后重启nginx服务,就可以了。
其端口重定向使用的是HTTP 301永久重定向实现的。

后记

到此为止,HTTPS服务器就正式搭建好了,你可以使用HTTPS(https://yourdomain.com)访问你的网站了。

但是有点问题就是,还是可以通过80端口访问非HTTPS版的网站,解决办法是通过端口重定向,将80号指向443端口。
现在就可以享受HTTPS的安全服务啦。