本篇文章主要记录下自己的博客网站实现https请求的步骤和自己遇到的一些问题。
环境说明
因为我的网站是部署在腾讯云上的,腾讯云同时也提供了免费的SSL证书(有效期1年)。
我们进入SSL证书管理控制台,点击【申请证书】
按照步骤就能申请对应的证书了。
DNS验证域名身份
腾讯云提供DNS验证域名身份,前提是你得开通DNS,然而DNS需要根据流量收费,对于我这个小博客来说不是很值得,所以没有忽略该方法。
这种方式无需你配置什么,只需要在控制台简单操作几步就可以了,具体可以参考腾讯云官方文档,这里就不过多介绍了。
Nginx 证书部署
首先到你的腾讯云下载你的证书www.***.com.zip
的压缩包,解压后有不同服务器的证书文件,这里只要Nginx的就可以了
将Nginx文件中的1_www.***.com_bundle.crt
和2_www.***.com.key
上传至你的服务器中,我将文件放在了/etc/nginx
下。
接下来修改你的Nginx配置文件nginx.conf
:
server {
listen 443;
server_name www.****.com; #填写绑定证书的域名
ssl on;
ssl_certificate 1_www.***.com_bundle.crt;
ssl_certificate_key 2_www.***.com.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #按照这个协议配置
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;#按照这个套件配置
ssl_prefer_server_ciphers on;
location / {
root html; #站点目录
index index.html index.htm;
}
}
配置完成后,先用bin/nginx –t
来测试下配置是否有误,正确无误的话,然后通过service nginx restart
重启nginx。就可以使 https://www.****.com
来访问了。
这里有几个问题需要注意下:
- 配置文件的证书文件的地址一定要指定对,可能你没有放在Nginx的根目录下。
- 端口问题,http是80端口,但https是443,在配置nginx的时候千万别忘记修改端口。
相关参数说明供参考:
http自动跳转https
配置到这里如果没有意外的话已经可以通过https访问了,但可能很多用户还是会通过http访问,所以需要将你原来的http重定向到你的https上。
只需要在Nginx配置中加入下面配置:
rewrite ^ https://$http_host$request_uri? permanent;
但要注意的是,不是在你原来443端口下加,这样会死循环的,而是另外启个server,类似于下面的配置:
server {
listen 80;
server_name www.***.com;
rewrite ^ https://$http_host$request_uri? permanent; # force redirect http to https
}
server {
listen 443;
server_name www.****.com; #填写绑定证书的域名
ssl on;
ssl_certificate 1_www.***.com_bundle.crt;
ssl_certificate_key 2_www.***.com.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #按照这个协议配置
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;#按照这个套件配置
ssl_prefer_server_ciphers on;
location / {
root html; #站点目录
index index.html index.htm;
}
}
这样就能实现重定向了。
如果想同时启用Http和Https,也可以这样配置:
server {
listen 80;
listen 443 ssl;
server_name www.***.com;
ssl_certificate www.***.com.crt;
ssl_certificate_key www.***.com.key;
...
}
总结
配置的时候还是需要仔细,跟着步骤来,人品好的话一次就能搞定啦。大家可以亲身试验下。
最后推荐下我的博客:https://www.bug2048.com/