翼度科技»论坛 云主机 LINUX 查看内容

Nginx如何配置HTTPS详解

4

主题

4

帖子

12

积分

新手上路

Rank: 1

积分
12
1. 什么是HTTPS?

HTTPS(全称:Hypertext Transfer Protocol Secure),是以安全为目标的 HTTP 通道,在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性。HTTPS在HTTP的基础下加入SSL,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。HTTPS存在不同于HTTP的默认端口及一个加密/身份验证层(在HTTP与TCP之间)。这个系统提供了身份验证与加密通讯方法。它被广泛用于万维网上安全敏感的通讯,例如交易支付等方面 。
1.1 HTTPS好处


  • 使用 HTTPS 协议可认证用户和服务器,确保数据发送到正确的客户机和服务器;
  • HTTPS 协议是由 SSL+HTTP构建的可进行加密传输、身份认证的网络协议,要比 HTTP安全,可防止数据在传输过程中被窃取、改变,确保数据的完整性。
  • HTTPS 是现行架构下最安全的解决方案,虽然不是绝对安全,但它大幅增加了中间人攻击的成本;
1.2 HTTPS缺点


  • 相同网络环境下,HTTPS 协议会使页面的加载时间延长近 50%,增加10%到20%的耗电。此外,HTTPS 协议还会影响缓存,增加数据开销和功耗
  • HTTPS 协议的安全是有范围的,在黑客攻击、拒绝服务攻击和服务器劫持等方面几乎起不到什么作用,最关键的是,SSL证书的信用链体系并不安全。特别是在某些国家可以控制CA根证书的情况下,中间人攻击一样可行;
  • 成本增加。部署HTTPS后,因为HTTPS 协议的工作要增加额外的计算资源消耗,例如 SSL 协议加密算法和 SSL交互次数将占用一定的计算资源和服务器成本。在大规模用户访问应用的场景下,服务器需要频繁地做加密和解密操作,几乎每一个字节都需要做加解密,这就产生了服务器成本。随着云计算技术的发展,数据中心部署的服务器使用成本在规模增加后逐步下降,相对于用户访问的安全提升,其投入成本已经下降到可接受程度。
2. Nginx配置HTTPS

2.1 申请SSL证书

可以去申请阿里云免费CA证书 https://www.aliyun.com/product/cas
腾讯云: https://cloud.tencent.com/product/ssl
2.2 申请腾讯云免费证书

这里已经提前申请下来了。直接在腾讯云下载即可。


2.3 在服务器端解压
  1. [root@haitang-nginx-test tls]# ls
  2. nginx.malusspectabilis.top_nginx.zip
  3. [root@haitang-nginx-test tls]# unzip nginx.malusspectabilis.top_nginx.zip
  4. Archive:  nginx.malusspectabilis.top_nginx.zip
  5.    creating: nginx.malusspectabilis.top_nginx/
  6.   inflating: nginx.malusspectabilis.top_nginx/nginx.malusspectabilis.top.csr  
  7.   inflating: nginx.malusspectabilis.top_nginx/nginx.malusspectabilis.top_bundle.crt  
  8.   inflating: nginx.malusspectabilis.top_nginx/nginx.malusspectabilis.top_bundle.pem  
  9.   inflating: nginx.malusspectabilis.top_nginx/nginx.malusspectabilis.top.key  
复制代码
2.4  配置HTTPS

具体可参考官方文档;https://nginx.org/en/docs/http/ngx_http_ssl_module.html
配置https功能基于模块ngx_http_ssl_module,编译安装需安装这个模块开启ssl功能。yum安装的nginx默认是开启这个模块ngx_http_ssl_module。
  1. [root@haitang-nginx-test conf.d]# cat haitang-https.conf
  2. server{
  3.    listen 443 ssl;  是否启用ssl功能
  4.    charset utf-8;   字符集utf-8
  5.    server_name nginx.malusspectabilis.top;   域名
  6.    ssl_session_timeout 5m;  客户端连接可复用ssl 缓存有效时间
  7.    ssl_certificate /apps/nginx/conf.d/tls/nginx-malusspectabilis.top/nginx.malusspectabilis.top_bundle.pem;  当前虚拟主机的CA证书信息,一般是Crt文件
  8.    ssl_certificate_key /apps/nginx/conf.d/tls/nginx-malusspectabilis.top/nginx.malusspectabilis.top.key;  当前虚拟主机的私钥文件,一般为key文件
  9.    ssl_session_cache shared:sslcache:20m;    配置ssl缓存
  10.    ssl_protocols TLSv1.2 TLSv1.3;   支持的ssl协议版本,早期为ssl现在为tls;
  11.    location / {
  12.      root "/data/nginx/html/haitang/";
  13. }
  14. }
  15. 语法检查正常。
  16. [root@haitang-nginx-test conf.d]# nginx -t
  17. nginx: the configuration file /apps/nginx/conf/nginx.conf syntax is ok
  18. nginx: configuration file /apps/nginx/conf/nginx.conf test is successful
复制代码
2.5 准备访问页面
  1. [root@haitang-nginx-test ~]# echo "海棠"  > /data/nginx/html/haitang/index.html
复制代码
2.6 加载Nginx并检查端口是否启动
  1. [root@haitang-nginx-test ~]# nginx -s reload
  2. [root@haitang-nginx-test conf.d]# ss -tnlp | grep 443
  3. LISTEN     0      128          *:443                      *:*                   users:(("nginx",pid=1802,fd=7),("nginx",pid=1801,fd=7),("nginx",pid=1800,fd=7),("nginx",pid=1799,fd=7),("nginx",pid=1798,fd=7),("nginx",pid=1761,fd=7))
复制代码
2.7 配置本地hosts解析
  1. sh-3.2# echo "xxxxxxx nginx.malusspectabilis.top" >> /etc/hosts
复制代码
2.8 测试是否是https访问




来源:https://www.cnblogs.com/xunweidezui/p/17184305.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

举报 回复 使用道具