↓ 跳过正文
  1. 文章/

终于加上小绿锁

··1280 字·3 分钟
sshuo
作者
sshuo
松鼠A(sshuo),安全研究者。记录渗透测试、安全研究与折腾日常。

前几天在某大佬群里水的时候大家无意间提到了小绿锁(https)都在说自己用了什么什么协议用的哪里哪里的证书。于是弱弱的问了一句:“大佬们都是上了锁吗?”

于是就被鄙视了。

其实我个人是懒的去上锁的,当初https大范围应用时全网速度都下降了一个层次。(后来证实是上游DNS被攻击的缘故)所以对上锁有点抗拒。说是更安全,其实我觉得没什么用处。有人想办法赚钱就有人想办法偷钱,过于在意没什么意义。但是现在大家都上了那我就也跟随大众吧(据说谷歌现在都划标识了)。

自己一直用的amh面板,平时实验多所以环境装的很乱。加小绿锁时遇到了很多问题,所以写篇文章来纪念下我死去的脑细胞。

申请证书之类的都和网上大多一样,这个过程就不说了。

拿到了证书文件之后在amssl里配置。遇到的第一个问题是模块使用问题。

这里需要先填写数据然后创建,才能填CSR数据。(不能一次性提交,差评)

第二个坑,应用证书是失败,提示  nginx: [warn] conflicting server name "sshuo.cc" on 0.0.0.0:80, ignored

想不通是为什么,百度上查大多是说nginx配置问题,但是检查了并没有什么错误。

后来突然想起来以前的旧博客其实并没有删除,只是把它放到其他环境并且不解析了。那就对了。打开看了看果然那个旧的博客上还绑着sshuo.cc这个域名。因为域名冲突所以才会提示这个错误,删了之后果然就可以了。

第三个坑,cdn设置。因为没配过小绿锁所以不知道cdn是需要特殊设置的。我用的阿里的CDN,在控制台找了半天终于找到HTTPS设置。需要上传你的证书。我是在amh直接获取的,在阿里这里填的时候没注意顺序死活填不对。冷静下来后慢慢仔细的看,才发现两个地方给的顺序不一样。amh先给的私钥,阿里那边是先填的公钥,两个弄反了所以总是失败。(如果服务器上设置了强制跳转阿里那里就别设置了,会出问题的)

第四个坑,资源链接重写。当你配完以上步骤时网站已经可以正常访问了。然而访问时你的资源都丢了(图片、视频、js、css…)

因为你的资源链接都没改,所以无法访问。这时候基本改两个地方就行了。登上你的后台,在网站的基本设置里更改网站地址,把http改为https就好了。

然后进入到数据库执行一个sql语句(以tyoecho为例):

UPDATE typecho_contents SET text = REPLACE(text,'http://xx.com/usr/uploads/','https://xx.com/usr/uploads/');

执行后文章中的所有引用链接就全都加上了https,正常访问get

其实到这里就基本结束了,以下两个坑是我自己的,正常人应该遇不到。

加上锁以后顺手换了主题,结果发现主题css丢了一些。可是各种找问题找不到,最后仔细想了想大概是CDN和DNS的锅。

用户访问域名需要通过DNS解析然后找到资源,而CDN则把资源“预存”到了各个节点上去。那么问题就出现了,资源不可能实时更新“预存”,而DNS也需要时间去同步。当我因为加了小绿锁重新配置了CDN后CDN节点开始“预存”资源,并且DNS开始将访问请求通过CDN提供的CNAME解析把请求分配到各个节点,然后各个节点开始和全球进行同步。最后就出现了CDN刷新时间+DNS同步时间=我睡一觉的时间。所以就出现了我这个“反应迟钝”,没想通的时候以为站炸了,其实只是没刷新过来而已。

最后吐槽一句:学校自有DNS真的辣鸡

相关文章

一个二维码活码系统思路

··450 字·1 分钟
习惯放图 前阵子无聊写了个简单的活码系统谁知道竟然好多人要买(雾草….我瞎写的啊…)。无意间又看到了老司机写的。人家界面又好看,功能又齐全,真的很厉害。于是准备把自己的那个自行车改装下,不说改的多好起码得能看得过去。

寻仙问道,梦回少年

··665 字·2 分钟
两天前老弟突然对我说想玩一个游戏,还贼兮兮的告诉我特别古老。还在想FC游戏时这家伙就说漏了嘴–《问道》。

一个简易授权demo

··538 字·2 分钟
在页面中引用,比如: <?php echo'1111'; include ('shouquan.php'); echo'1111'; ?> 授权操作 $url=$_SERVER['SERVER_NAME']; include ('key.php'); $curl = curl_init(); //设置抓取的url curl_setopt($curl, CURLOPT_URL, 'http://localhost/api/api.php'); //设置头文件的信息作为数据流输出 curl_setopt($curl, CURLOPT_HEADER, 0); //设置获取的信息以文件流的形式返回,而不是直接输出。 curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); //设置post方式提交 curl_setopt($curl, CURLOPT_POST, 1); //设置post数据 $post_data = array( "domain" => "$url", "key" => "$key" ); curl_setopt($curl, CURLOPT_POSTFIELDS, $post_data); //执行命令 $data = curl_exec($curl); //关闭URL请求 curl_close($curl); //echo "$data"; if ($data=='true') { echo '域名验证成功!<br>'; } else { exit(); }`</pre> key文件,用于存储激活码、授权码 <pre>`<?php $key='123456';//输入激活码 ?>`</pre> api文件,接受客户端post请求并返回相应数据 <pre>`<?php $api=$_POST['key']; $domain=$_POST['domain']; $servername = "localhost"; $username = "root"; $password = "root"; $dbname = "selectdata"; // 创建连接 $conn = new mysqli($servername, $username, $password, $dbname); // Check connection if ($conn->connect_error) { die("连接失败: " . $conn->connect_error); } $rs = mysqli_query($conn,"SELECT * FROM data WHERE domain='$domain'"); $aa=mysqli_fetch_array($rs); if ($api==$aa[1]) { echo'true'; } else { echo'false'; } 将程序重要函数/操作/行为添加到shouquan.php中并对其加密混淆,以达到防破解的目的 嗯...暂时就想到这么多。 2018.12.1 客户端代码 <?php //获取不带端口号的域名前缀 $servername = trim($_SERVER['SERVER_NAME']); //获取服务端授权文件校验 $verifyurl = file_get_contents('http://www.toyean.com/zb_users/upload/copyright.php?domain='.$servername); if(!empty($verifyurl)){ echo "已授权!"; //授权成功 }else{ die("未授权!"); //授权失败 } ?>``` 服务端代码 ```<?php</span> <pre>`//获取域名 $domain = $_GET['domain']; //授权域名列表 $Array = array('127.0.0.1','localhost'); //校验结果 echo in_array($domain, $Array) ? 'yes' : ''; ?> 感谢@慕若曦的指点