我们通常会用cdn套到服务器ip上,来为网站或者后端程序做加速、防御。可是nginx在设计上有个小缺陷,会因为ssl证书泄露网站的原IP

原理

用Nginx部署网站,在默认或不正确的配置下,网站开启ssl,直接访问ip的443端口,即ip:443,Nginx会返回默认一个站点的ssl证书,间接的能让别人扫到这个ip对应的域名。

原理就是对ip的443端口发送clienthello,对方回复的 serverhello中有ssl证书,ssl证书里的common name 有域名信息。这样就知道了解析这个ip的域名。所以更准确的说是IP的443端口可能会暴露了域名。

动作再大一点,批量扫描机房的ip段,把对应的域名-ip 的多值映射表统计起来。以后想查某个域名对应的源站 ip 查这个表就够了,这是黑产喜欢干的事。

同时也是很多站点,明明套上了cdn,依然能被打到源站IP的原因。

解决办法

禁止直接访问IP

# 禁止IP直接访问网站
server {listen       80 default_server;listen       [::]:80 default_server;server_name  _;return 444;
}

自签IP的SSL证书,返回444

自签证书的目的不是为了访问,而是避开Nginx的这个缺陷。生成自签的IP SSL证书可以用开源的Mkcert(https://myssl.com/create_test_cert.html)工具。Mkcert使用起来稍微麻烦,或者用一个测试证书的在线网页工具:https://myssl.com/create_test_cert.html

在填写域名的位置填上IP地址,点生成按钮会自动测试证书展示在下面,各自保存为.pem文件和.key文件。然后在nginx里配置上“return 444”,类似配置大概:

{
listen 80 ;
listen 443 ssl http2 default_server;
server_name ip;#HTTP_TO_HTTPS_ENDssl_certificate    xxxx.pem;ssl_certificate_key   xxxx.pem;ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;return 444;}

购买合法IP站点的SSL证书

花点小钱买个合法的IP SSL证书配置到nginx里,IP证书一般一二百左右。

加钱,世界触手可及。

仅允许指定cdn的IP访问

Nginx仅允许指定cdn的IP访问,避免放到公网上被任何人扫。以腾讯云CDN段为例,在Nginx网站配置文件里,添加如下:

location / {
allow   58.250.143.0/24;
allow   58.251.121.0/24;
allow   59.36.120.0/24;
allow   61.151.163.0/24;
allow   101.227.163.0/24;
allow   111.161.109.0/24;
allow   116.128.128.0/24;
allow   123.151.76.0/24;
allow   125.39.46.0/24;
allow   140.207.120.0/24;
allow   180.163.22.0/24;
allow   183.3.254.0/24;
allow   223.166.151.0/24;deny    all;
}

查一下使用的CDN商家的文档,如果有新的IP段更新,也加到里面。

别让SSL证书暴露了你的网站服务器IP相关推荐

  1. win10无法检验服务器出示的ssl证书,大师解决win10系统网站启用ssL安全证书的问题...

    win10系统是很多电脑用户首选的装机系统,然而有不少用户在使用过程中可能会碰到win10系统网站启用ssL安全证书的情况.大部分用户电脑技术都是菜鸟水平,面对win10系统网站启用ssL安全证书的问 ...

  2. 免费SSL证书,如果是阿里云服务器,直接登录阿里云搜索SSL,申请免费证书即可

    免费SSL证书,如果是阿里云服务器,直接登录阿里云搜索SSL,申请免费证书即可. 如果迁移服务器,原证书未到期的情况下可以转移继续使用.把证书的key  pem的内容配置到新服务器里即可.但是这里要注 ...

  3. 安装SSL证书后不能访问https网站怎么办

    很多朋友在安装配置完SSL证书后不能访问https网站,搞不清楚问题出在哪里,更不知道如何解决.下面就以nginx配置SSL证书为例,来讲一下安装SSL证书后不能访问的解决方法. 1.确保可以以htt ...

  4. 免费SSL证书大全,加速普及网站实现HTTPS加密

    免费SSL证书大全,加速普及网站实现HTTPS加密 SSL 证书用于加密 HTTP 协议,实现网站通过HTTPS加密协议访问.随着国内外各大网站实现全站 HTTPS 协议,以及搜索引擎对使用 HTTP ...

  5. tomact配置好ssl证书后访问不到tomact_服务器上配置HTTPS的操作方法!

    数据信息安全得到更多人的重视,尤其在网站传输敏感数据时,更应该保证信息的安全性.而如今保护数据最有效的方式之一,就是启用HTTPS.这种新型加密模式的安全度高,黑客很难从中拦截到数据. 服务器上配置H ...

  6. 申请阿里云服务器并配置SSL证书(附带微信公众号配置服务器)

    首先大家要了解到自己的笔记本连接wifi是没有公网的,当然建议大家在公司测试,毕竟在工作空余时间学习学习提升一下技术还是比较好的 首先服务器配置,最重要的一点 要有自己的服务器, 如果有公网的话 可以 ...

  7. 部署SSL证书,为您的网站保驾护航

    随着<网络安全法>的出台和实行,使得互联网安全上升到国家安全的高度,与此同时,越来越多的主流网站都开始部署SSL证书对网站隐私和数据传输加以保护. SSL证书是数字证书的一种,类似于驾驶证 ...

  8. 通过Python脚本下载【来此加密的免费HTTPS SSL证书】并自动更新到服务器和阿里云CDN

    异想之旅:本人原创博客完全手敲,绝对非搬运,全网不可能有重复:本人无团队,仅为技术爱好者进行分享,所有内容不牵扯广告.本人所有文章仅在CSDN.掘金和个人博客(一定是异想之旅域名)发布,除此之外全部是 ...

  9. 8.0强行转换后变成了7_如何在服务器上安装SSL证书,让你的网站变成https

    本文适合任何人了解,图形化操作.下面以腾讯云为例,并且服务器(linux)也安装了宝塔面板. 1.登陆腾讯云账号进入控制台,找到SSL的产品 2.按要求申请并填写表单,记住私钥密码 3.提交后,待腾讯 ...

最新文章

  1. Servlet 传输中文乱码解决方法
  2. 新发现为类脑计算机开辟了道路
  3. 关于封装了gevent的request grequest库的使用与讨论
  4. Mybatis用法小结
  5. centos7.5 使用报错:用户名 不在 sudoers文件中,此事将被报告。
  6. 11位大咖带你玩转WebRTC开发(内附PPT资料下载)
  7. java 接口数据类型_Java 数据类型(中): 抽象类与接口
  8. php控制器,php模型和控制器之间交互
  9. 无需无线路由,将系统为win7的笔记本变成wifi的方法
  10. 2010工作代码总结之三(repostioryItemGridLookUpEdit下拉框)
  11. java 调用tomcat api,tomcat处理http请求-下
  12. 一、理解网络编程和套接字
  13. 计算机中MAX函数是求什么,MAX函数
  14. 计算机网络-什么是网络协议?
  15. 微电子学前沿讲座三-国产EDA的困境-刘伟民博士
  16. 卡尔曼滤波原在温度测量中的应用
  17. 牛客网ACM模式 JsV8和Java输入输出练习
  18. Bash Shellshock(Bash远程代码执行)漏洞分析及利用思路
  19. ROS学习记录(二)阿克曼转向车运动学模型及在gazebo中搭建仿真环境
  20. AXI - 4KB边界

热门文章

  1. 15 位学神争霸!2019 清华本科生特奖答辩入围名单公布
  2. leveldb源码分析:Open启动流程
  3. 在O(1)时间删除链表节点
  4. python进程执行带有参数的任务(args、kwargs)
  5. 2021-04-06 符号执行是啥?
  6. 2005年上半年 网络工程师 上下午试卷【附带答案】
  7. 为什么图像处理如此困难
  8. 飞行时间(TOF)相机优缺点及其应用领域
  9. php动态语言静态化
  10. centos7.2安装mysql