阿里云个人站点基于nginx代理搭建https协议支持
准备工作
1.个人服务器
2.安装了ssl_moudle的nginx
3.一个静态页面
购买免费个人版dv证书
一、阿里云
官方操作文档
1.兑换免费证书扩容包
之前可以直接在付费页面购买免费的dv证书,但是2021年开始,需要先兑换免费证书扩容包,然后再用扩容包兑换免费dv证书
购买免费证书扩容包
购买免费证书扩容包直通车
https://common-buy.aliyun.com/?spm=a2c4g.11186623.2.11.2adc1565Y43ZeV&commodityCode=cas_dv_public_cn)
2.使用免费证书扩容包兑换dv证书
进入ssl管理控制台
兑换单域名证书
3.申请签发证书
下一步以后,如果是阿里云买的域名,会自动添加一条dns解析记录,用于验证信息等,如果是别的地方买的域名,可以手动添加一条,添加好后,点击验证,验证成功后,等待签发,一般1分钟左右就会签发证书
二、腾讯云
#购买直通车
https://buy.cloud.tencent.com/ssl?fromSource=ssl
1.直接访问ssl证书购买页,选中个人免费版,即可
2、签发证书,后续操作与阿里云同理
三、下载nginx的证书文件
配置nginx
前提是nginx安装了ssl_moudle,否则会在启动的时候报错说没有ssl_moudle
1.安装nginx(不多说)
2.配置nginx
user root;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
pid /usr/local/nginx/logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
#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 logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
server {
listen 80;
server_name *.xxxx.com;
#将所有HTTP请求通过rewrite指令重定向到HTTPS。
rewrite ^(.*)$ https://$host$1;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
server {
listen 443 ssl;
#配置HTTPS的默认访问端口为443。
#如果未在此处配置HTTPS的默认访问端口,可能会造成Nginx无法启动。
#如果您使用Nginx 1.15.0及以上版本,请使用listen 443 ssl代替listen 443和ssl on。
server_name www.xxxx.com; #需要将xxxx.com替换成证书绑定的域名。
root html;
index index.html index.htm;
ssl_certificate cert/xxxxxxxxx.pem; #需要将cert-file-name.pem替换成已上传的证书文件的名称。
ssl_certificate_key cert/xxxxxxx.key; #需要将cert-file-name.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; #表示使用的TLS协议的类型。
ssl_prefer_server_ciphers on;
location / {
root /dir/xxx/xxx/xx; #站点目录。
index index.html index.htm;
}
}
}
需要注意的地方:
1、证书文件的存储位置:
ssl_certificate cert/xxxxxxxxx.pem; #需要将cert-file-name.pem替换成已上传的证书文件的名称。
ssl_certificate_key cert/xxxxxxx.key;
位置随意,名称随意,但是配置的时候需要填写相对于nginx.conf文件的相对路径
2、如果nginx版本低于1.15,需要将
listen 443 ssl;
更改为
listen 443;
ssl on;
3、证书绑定的域名
server_name www.xxxx.com; #需要将xxxx.com替换成证书绑定的域名。
由于阿里云使用扩容包兑换的证书只能兑换单域名的证书,所以这里需要写成证书绑定的域名,例如:pj.xxxx.com需要使用pj.xxxx.com的证书,stu.xxxx.com需要使用stu.xxxx.com的证书
4、项目的目录
nginx必须要有被代理的目录的访问权限,要么将nginx的用户角色设置高一点,要么将目录的读写权限开放
5、http协议重定向到https协议
这个配置非必须,知识http依然是非安全的,https是安全的,两者分开
开放防火墙端口
本人使用CenterOS7
1.查看已经开放的端口
firewall-cmd --list-ports
2.开放443端口
firewall-cmd --zone=public --add-port=80/tcp --permanent
–zone #作用域
–add-port=80/tcp #添加端口,格式为:端口/通讯协议
–permanent #永久生效,没有此参数重启后失效
3.阿里云ECS控制台新增安全组放行443以及80端口
检测是否成功
在浏览器使用https访问域名的项目,如果浏览器路径栏带有小锁的标志,则成功