文章目录
- 前言
- 一. 域名
- 1. 购买域名
- 2. 添加记录
- 二. ssl证书
- 创建测试证书
- 购买正式证书
- 证书签发
- 证书申请
- 提交审核
- DNS验证
- 审核通过
- 下载证书
- 三. 部署nginx
- 上传ssl证书
- 配置nginx.conf文件
- 找到nginx.conf文件
- 编辑nginx.conf文件
- 重启nginx
前言
当你创建了一个网站后,通过http协议进行访问,固然很方便,但随着安全性的要求,就会开始要求使用https进行数据传输,这个时候就需要你通过证书绑定域名的方式,来进行安全验证。特殊笔记,这次购买证书,到绑定域名映射,到nginx配置的全过程
一. 域名
1. 购买域名
关于域名的购买牵涉到隐私,且比较简单,就自行搜索进行购买吧。此处不做过多解释
2. 添加记录
- 从运解析DNS,点击你购买的域名,然后点击添加记录,可配置多个子域名,比如我个人要用到的就有@、www、ht
- 填写“添加记录”
记录类型:默认A,就是域名指向一个IPV4地址
主机记录:@表示example.com,www表示www.example.com,ht表示ht.example.com
记录值:由于“记录类型”选的是A,所以这里对应就是服务器的ip,请根据你服务器的ip自行填写
TTL:解析结果在DNS服务器上缓存的时间,你可以看做指定时间刷新一次,有时候设置后域名指向没有当即生效,就是因为还未过TTL时间
- 配置多个主机记录,实现多个子域名:
- 前台访问,使用example.com和www.example.com,他们可以看做是一个,会自行跳转,且这两个域名可以用一个单域名证书,不需要专门购买两个个
- 后台管理访问,使用ht.example.com,如果是单域名的证书方式,需要专门给他购买一个ssl证书
二. ssl证书
如果是测试环境,可以使用这种免费证书,但如果是正式环境,还是付费购买正式的证书比较好
创建测试证书
- 从ssl证书——ssl证书管理——免费证书——创建证书进入
- 对于免费证书,每个阿里云用户有20个3个月免费的DV证书和1个12个月免费的DV-pro证书,说明几点:
- 证书申请后,到期或者吊销,不会返还使用额度,就是说用一个少一个,每个用户只有20+1个
- 12个月的DV-pro证书,可以通过续费的方式继续使用,3个月的DV证书到期后只能重新购买,重新部署
- 免费证书都是单域名证书,不是通配符型,就是说www你要用一个证书,ht你要用一个证书
购买正式证书
从ssl证书——ssl证书管理——免费证书——立即购买,进入
由于个人只需使用2个单域名,就根据以下进行配置,性价比高一点
- 产品:SSL证书
证书签发
证书申请
证书管理——证书申请
提交审核
填写信息进行域名绑定,
- 证书类型:选择你购买的
- 证书规格:默认即可
- 域名名称:填写你要绑定的域名,域名千万别输错,签发后是无法修改的
- 年限:默认1即可
- 快捷签发:勾选,勾选后下面会多出选项
- 域名验证方式:默认即可
- 联系人:根据你的需求选择
- 所在地:根据你的需求选择
- 密钥算法:RSA
- CSR生成方式:默认系统生成即可
DNS验证
- 此处阿里云会自行添加记录值到你的域名中,前提是你的域名和ssl都是阿里云购买的
- 然后点击“验证”
审核通过
可以看到example.com和www.example.com是公用一张单域名ssl证书的,不要傻傻的买两张证书哈
下载证书
- 状态变成已签发后,点击后面“下载”按钮
- 由于服务器是使用nginx进行跳转的,所以下载相应版本到本地
下载后是两个文件,.key文件是公钥也就是public_key,.pem文件里是密钥这个不要泄露给别人,有安全风险
三. 部署nginx
上传ssl证书
通过shell登陆第一步中域名主机记录指向的服务器,然后自行通过任何方式,把.key和.pem文件上传到服务器
文件夹所在位置,可自行定义
配置nginx.conf文件
对于nginx的安装这里就不做赘述,可自行GPT
找到nginx.conf文件
通过以下指令可以很快找到你的nginx.conf文件
find / -name nginx.conf
编辑nginx.conf文件
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
proxy_headers_hash_max_size 1024;
proxy_headers_hash_bucket_size 128;
# http跳转到https
server {
listen 80;
server_name ht.example.com www.example.com;
return 301 https://$host$request_uri;
}
# example.com和www.example.com使用ssl证书进行验证通信
server {
listen 443 ssl;
server_name example.com www.example.com;
# 配置验证证书
ssl_certificate /home/cert/example.com/example.com.pem;
ssl_certificate_key /home/cert/example.com/example.com.key;
# 该服务的根目录和index文件名
root /home/example-frontend/origin/main/dist;
index index.html;
# 域名下/的请求,到该内容中查找文件,这是前端代码的请求
location / {
try_files $uri $uri/ /index.html;
}
# 域名下/seascross的请求,代理到本地的8081端口,这是后端接口的请求
location /seascross {
proxy_pass http://localhost:8081;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
}
重点看第二个server
- server_name:要对应你的域名,会被引用到的,这里需配置example.com www.example.com缺一不可
- ssl_certificate、ssl_certificate_key:分别配置ssl证书的密钥和公钥
- location:配置路由对应跳转访问什么地方
重启nginx
systemctl restart nginx
自此https配置完成