title: 为博客设置https协议
categories:
- 博客优化
date: 2023-04-06
url_dir: Blog_optimization
url_name: setting_https
博客优化内容
http协议的网站总是显示不安全,为了开启小绿锁,在这里准备部署https协议。我的博客是hexo架构,部署在阿里云上的。
在阿里云首页中选择 产品
-> 安全
-> 数字证书管理服务(原SSL证书)
-> 选购SSL证书
选择免费证书
点击立即购买
个人可以获得20个免费的证书
然后创建一个证书,点击证书申请,填写你的域名,姓名信息后向CA提交申请。待申请成功后,下载证书,然后按照根据你部署方式的不同查阅帮助,在服务器端进行部署
我用的是nginx所以这里以nginx为例,nginx的部署分为虚拟主机和独立主机的区别,首先在服务器端判断你的机器属于哪一类,我的服务器是ECS服务器,属于独立主机,刚刚申请到的SSL证书即是阿里云的云盾证书。
将下载的压缩包中的两个文件上传到服务器,上传的目录为 /etc/nginx/cert/
运行 nginx -t
命令查看你的nginx配置文件路径。打开配置文件
nginx -t
# nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
# nginx: configuration file /etc/nginx/nginx.conf test is successful
vim /etc/nginx/nginx.conf
在http{}
内添加以下配置,这里添加的是443端口的配置
#以下属性中,以ssl开头的属性表示与证书配置有关。
server {
#配置HTTPS的默认访问端口为443。
#如果未在此处配置HTTPS的默认访问端口,可能会造成Nginx无法启动。
#如果您使用Nginx 1.15.0及以上版本,请使用listen 443 ssl代替listen 443和ssl on。
listen 443 ssl;
#填写证书绑定的域名
server_name <yourdomain>;
root html;
index index.html index.htm;
#填写证书文件名称
ssl_certificate cert/<cert-file-name>.pem;
#填写证书私钥文件名称
ssl_certificate_key cert/<cert-file-name>.key;
ssl_session_timeout 5m;
#表示使用的加密套件的类型
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
#表示使用的TLS协议的类型,您需要自行评估是否配置TLSv1.1协议。
ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
location / {
#Web网站程序存放目录
root html;
index index.html index.htm;
}
}
若你想将所有http访问自动跳转到https,可以将下面的代码添加到servers{}
代码段 后面,当然如果你已经配置了80端口,可以将配置的一部分放到80端口的servers中
server {
listen 80;
#填写证书绑定的域名
server_name <yourdomain>;
#将所有HTTP请求通过rewrite指令重定向到HTTPS。
rewrite ^(.*)$ https://$host$1;
location / {
index index.html index.htm;
}
}
重启nginx服务
nginx -s reload