在平常的开发过程中,我们经常需要部署项目。开发环境、测试环境等,主要是通过 IP 地址和端口访问,但是在生产环境中,主要是开启 SSL 使用 https 方式访问,https 是在 http 协议的基础上加了 SSL/TSL 协议,https 数据是加密传输的、安全性高。适用于敏感数据及对数据安全性要求高的场景。今天我们来总结下项目通过 https:域名 访问的主要步骤(
一:购买域名
如果没有域名。用户访问不方便,访问地址难以记忆,一般不对公网 IP 签发证书,无法实现开启 SSL,访问不安全。用户访问服务的时候只能通过IP地址和端口访问,在 nginx.conf 中,如果没有指定 server_name 或者 listen 指令绑定到特定的 IP 地址,Nginx 会默认监听 localhost。如果需要实现局域网内其他设备访问,将 listen 指令绑定到服务器的 IP 地址。
购买域名一般可以在阿里云(万网)、腾讯云、华为云、百度云等平台。可以搜索想要的域名、域名类型等然后根据引导流程进行购买,博主在阿里云购买了域名。
购买域名用户访问更加的方便,便于用户记忆。可以申请 SSL 证书和域名配合使用,对数据加密,确保数据安全。一般对公网 IP 不会签发证书,公网 IP 可能会被动态分配或者重新使用,增加了证书管理和身份验证的复杂度。
二:ICP 备案
是否需要进行备案可以查看相关的资料,主要是看网站或者 App 解析服务器的位置。如果备案是个人使用,填写个人相关信息、上传资料、流程相对简单,按要求填写完成提交即可,审核期间可能会有电话确认、短信验证等,注意接听电话或者查看短信。备案一般大概需要几个工作日时间不等,耐心等待即可。
三:获取证书
1:证书颁发机构
商业版CA:提供多种类型的证书,审核更加的严格。证书从如 CFCA、DigiCert、GlobalSign、vTrus、DigiCert Pro 等网站获取,提供付费的证书,适用于企业官网、电子商城等,主要适用于企业或者对安全性要求高的项目。证书的有效期一般比较长,可以根据自己的需求选择。
免费版CA:主要提供基础的 DV 证书,主要验证域名所有权,审核相对简单,如从 Let's Encrypt、JoySSL1、阿里云等地方申请免费的证书,免费的证书一般有效期为三个月、一年等等。主要可以用于测试或者个人网站。免费版 CA 证书有效期通常比较短,一般为三个月或者稍微更长一点,需要频繁的更换证书。
2:证书类型
组织验证(OV):支持特殊域名的签发,验证域名、组织信息,可以为公网 IP 签发证书,但是一般不建议使用公网 IP 签发证书,因为存在安全风险、IP地址因为某些原因变动等。该类型证书企业首选,需付费。 域名验证(DV):验证域名所有权,无法为特殊后缀(如org、.gov)的域名或者公网 IP 签发证书,适合个人测试使用,价格相对较低。 扩展验证(EV):最高级别的密码安全等级验证,确保网站数据传输安全,适合大型企业,费用高。
3:获取证书
博主使用证书主要是个人部署学习使用,所以此处可以申请个人免费证书或者购买个人证书。博主申请证书的相关操作是在阿里云。个人免费证书现在有效期只有三个月,如果有效期太短不太符合个人使用需求,那么可以购买个人测试证书,有效期长,价格相对便宜。如果是正式项目使用,建议购买付费的证书。免费的证书是 DV 域名验证类型证书。可以在对应域名控制台找到数字证书管理服务中找到 SSL 证书管理,可以进行证书的购买及证书管理。
(1):创建证书
主要是选择证书类型、输入域名,然后填写证书数量点击提交即可。
(2):证书申请
证书创建完成后进行证书申请,证书申请绑定域名、域名验证方式、秘钥算法、选择联系人、CSR生成方式等,选择完成后点击提交,待证书审核签发,一般在几分钟内会进行证书签发,页面如下:
(3):证书下载
证书签发完成后,可以根据服务器类型选择证书下载,页面如下:
四:通过域名访问配置
1:什么是DNS解析?
DNS(Domain Name System Resolution)解析是将域名转换为计算机可以识别的 IP 地址的过程,DNS 解析是互联网运行的基础,用户无需记 IP 地址,只需要通过域名访问网站即可。
DNS 解析的作用:
(1):将域名转换为 IP 地址,用户通过域名访问即可。
(2):DNS 缓存可以减少重复解析的时间。
(3):DNS 可以将一个域名解析到多个 IP 地址,实现负载均衡。
DNS 记录类型:
A 记录:将域名解析到 IPV4 地址
AAAA 记录:将域名即系到 IPV6 地址
CHAME 记录:将域名解析到另一个域名(别名)
MX 记录:指定邮件服务器的地址
等等类型记录。
2:配置DNS解析记录
配置 DNS 解析,登录域名注册商,找到域名控制台管理,然后添加域名解析记录,主要是配置服务器的公网 IP,如果不知道当前服务器的公网 IP,可以用 curl ifconfig.me ,命令进行查看。如下图为阿里云服务添加域名解析配置:
添加 DNS 解析记录时,记录类型一般选择 A,A 含义为指向一个IPv4的地址,主机记录主要是添加域名的前缀,如 www,或者 @,或者 ab即二级域名,或者 ab.cd 多级域名,记录值就是填写对应服务器的地址。TTL 一般默认值即可,TTL 全称是 Time to Live,表示 DNS 记录的缓存存活时间。表示在这个时间段内,解析器会直接直接缓存的结果,而不是去查询 DNS 服务器。新建解析记录时,可以先将 TTL 时间设置为一分钟左右,先让记录快速生效。生效后可以将 TTL 时间改为一个较大的合适值。DNS 解析记录如下所示:
配置完 DNS 解析后,通常需要等几分钟或者几小时配置才能生效,具体取决于 TTL 时间设置和 DNS 缓存。可以使用 ping 域名 进行测试,如 ping xxxxxx.com,如果返回的 IP 是你服务器的 IP 地址,则说明 DNS 配置完成。在服务器中进行域名 DNS 解析测试,如下图:
当看到如图所示信息时,表示能进行数据交互,网络良好,即表明 DNS 配置成功。
3:服务器防火墙设置
根据服务器的内核版本,使用对应的命令查看防火墙的端口设置及添加端口,查看服务器内核版本的命令:cat /etc/os-release,如果内核是 Centos 相关版本,防火墙设置相关命令如下:
(1):查看防火墙开的端口:firewall-cmd –zone=public –list-ports
(2):若端口未开,则添加,比如开放 8008 端口:firewall-cmd –zone=public –add-port=8008/tcp –permanent
firewall-cmd –permanent –add-service=http http 是开放 80 端口 firewall-cmd –permanent –add-service=https https 是开放 443 端口
(3):修改完成后,重启防火墙:firewall-cmd –reload
4:nginx.conf 配置
user nginx;
worker_processes auto;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
server {
listen 80;
# 替换为你的域名
server_name xxxxxx.com;
charset utf-8;
location / {
proxy_pass http://127.0.0.1:9016;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
}
5:通过 http:域名 进行访问
通过域名访问,http:域名,页面如下:
可以看到浏览器提示不安全,因为没有 SSL/TSL 证书,导致是明文传输,访问不安全,不建议输入个人隐私、敏感信息。https 通过 SSL/TLS 协议对数据进行加密,确保传输过程中数据的安全性。验证服务的真实性,通过加密防止数据被篡改,保证数据的安全性。
五:配置 SSL 证书
1:上传 SSL 证书
.pem 文件:是 Base64 编码的文件,通常包含服务器的公钥、域名信息、颁发机构等。主要用于身份验证和加密通信。当访问 https 网站时,浏览器会验证服务器提供的 .pem 证书的有效性,保证访问安全。证书中包含了公钥,用于进行数据加密。
.key 文件:存储的是私钥,与证书配对的私钥,用于解密使用公钥加密的数据。私钥是重要信息,妥善保管。主要用户数据解密和数字签名。使用私钥解密客户端发送的加密数据,使用私钥进行数据前面,客户端用公钥验证签名是否正确,防止被篡改,保证数据安全。
公钥和私钥配合使用,客户端通过证书验证服务器的身份,使用公钥与服务器进行秘钥交换和数据加密,服务器用私钥进行解密和加密。
2:证书目录挂载
在 docker-compose.yml 中设置 nginx 服务证书目录挂载,如下:
# 证书映射
– /docker/nginx/ssl:/etc/nginx/certs
3:配置 SSL 证书
主要配置是监听 443 端口,端口后面配置 ssl,如:listen 443 ssl,然后将有效证书的公钥和私钥目录进行映射。此处注意:如果使用了 docker,那么证书的目录就是容器中的路径,具体路径就是证书挂载目录对应的容器中的目录。
nginx.conf 配置文件如下:
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log notice;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
autoindex on;
keepalive_timeout 65;
server {
# 监听443 端口,443 端口为https默认端口,http默认端口为80,ssl 为开启 SSL 加密
listen 443 ssl;
# 此处替换为你的域名
server_name xxxxxx.com;
# SSL 证书,此处的地址为容器中的目录地址
ssl_certificate /etc/nginx/certs/xxxxxx.pem;
ssl_certificate_key /etc/nginx/certs/xxxxxx.key;
# 启用 SSL 优化
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
charset utf-8;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
}
}
4:通过 https:域名 访问
通过 https:域名 进行访问,测试页面如下:
六:总结
以上为通过 https:域名 访问项目的完整步骤。首先购买域名,购买完成后需要进行备案,备案审核需要一段时间,耐心等待即可。备案完成后在服务器控制台添加 DNS 解析记录,主要作用就是根据域名访问时解析到对应服务器 IP 地址,可以使用 ping 域名 命令进行测试配置是否成功,然后在 nginx.conf 中将 server_name 由 localhost 替换为对应的域名。这个时候可通过域名进行访问,但是浏览器会提示不安全。可以根据自己实际业务场景看是否需要开启 SSL,如果是开发环境或者个人学习使用,不开启 SSL 也可以,但是如果是生产环境一般都建议开启 SSL。获取证书,如果是个人使用,建议使用免费的或者收费的价格相对便宜的即可。创建证书、申请证书、证书一般十几分钟内会进行签发。根据服务器的类型(如 nginx、tomcat)下载对应类型的证书。证书一般包含 .pem 文件和 .key 文件,即证书和私钥。nginx.conf 中监听 443 端口,后面写 ssl,即开启 SSL。ssl_certificate 对应 证书文件(即 .pem 文件),ssl_certificate_key对应私钥文件(即 .key 文件)。配置完成后,重新加载 nginx 配置文件,启动 nginx 容器,然后根据 https:域名 即可。
评论前必须登录!
注册