今天好累呢,就少写一点吧。

上网其实就是向远程服务器下载网页,浏览器通过翻译把网页变成我们现在看到的样子。我们在浏览器地址栏输入www.gmail.com到最后我们看到gmail登陆界面分成两个过程:

  1. 请问“www.gmail.com”的IP地址是多少?dns服务器会告诉你,“www.gmail.com的ip地址是216.58.221.133”。
  2. 请转交给216.58.221.133,内容为【我想下载“/ ”这个网页】。

什么叫中间人攻击呢?

假设你在Starbuck上wifi,想登陆gmail邮箱,那么你就会问www.gmail.com的ip地址是多少。正常情况下你应该等你的dns服务器告诉你,但是某个黑客会告诉你:www.gmail.com的ip地址是10.0.1.99(其实是黑客电脑的ip地址)。

你会问:我有那么傻么,为啥我不看看这个是不是8.8.8.8发来的?你应该继续想想,你该看什么?有什么是不能伪造的?事实上,你询问www.gmail.com的那条消息会被拦截,最后你的dns根本收不到你的请求,你只会收到一份应答,你不会怀疑它的真实性。

接下来你在浏览器里面输入www.gmail.com之后,访问的其实是黑客提供给你的一个假网站(跟真的一模一样)。你输入的密码会被黑客记录下来。然后黑客会把你的请求转发给gmail,gmail以为是黑客在登陆你的邮箱,而且账号密码是对的,gmail会把你邮箱的信件发送给黑客,黑客再把内容转交给你。

这有点像中学时候传纸条,男生A坐在最后一排,女生B坐在第一排,男生A给女生B传纸条,需要经过也喜欢女生B的男生C!

男生C会偷看纸条的内容(窃取密码等)。如果男生C想要改写纸条的内容,他需要把男生A的每张纸条都撕掉,然后自己写一份纸条,这样自己的纸条前后字迹看起来才是一样的,女生B也不会怀疑,为什么两封信的字迹不一样。

那么有个问题,如果女生B跑去问老师,这个纸条的字是谁写的,这不就露馅了么?这个想法很好,这是SSL根证书策略的精华:

  1. 根据字迹判断身份(https协议下ssl证书保证网页内容的发布方身份)
  2. 由老师的信誉保证(1)的判断是真实的(ssl证书中会说明其颁发单位,该颁发单位保证证书是真实有效的)。

所以,https协议相对更加安全。

  1. 页面加载时间过长,经过查看发现是因为调用了http资源:1是腾讯的云平台,3是腾讯管家。于是,停用腾讯云平台及管家,禁用discuz tips(修改plugin/manyou/Service/DiscuzTips.php)。
  2. [media]代码无法正常显示,仔细阅读代码后发现必须按照[media=type,width,height]写入。另外,in_array(count($params), array(3, 4))的判断条件非常奇怪,因为第4个参数永远用不到。
  3. 全站http化之后ku6的swf无法正常插入。解决方法1:仅保留登陆时https。解决方法2:允许混合内容。

一般的使用情景:

  1. 你不希望你的公司的员工上班的时候打游戏、聊qq、刷微博,所以你只是把公司内部的电脑互相连起来了,它们组成了一个局域网。
  2. 但是你自己想上网,于是你拥有整个公司里唯一一个可以上网的电脑:你可以打游戏、聊qq、浏览google、YouTube、Twitter等网页。
  3. 由于工作需要,你的一部分员工需要和客服发邮件怎么办呢?你跟他们说,如果你想上mail.126.com,你就在浏览器里面输入:theOnly2WebsitesYouShouldGo-1.dingxf.cn。然后果然,那个员工登录了mail.126.com,就跟在家里登录126一模一样。

这是怎么实现的呢?

  1. 用户输入theOnlyWebsiteYouShouldGo.dingxf.cn之后,他的请求会发送到公司里唯一一台可以上网的电脑那里,这台电脑就是反向代理(Reverse Proxy Server)。
  2. 这台电脑(Reverse Proxy Server)查看用户的请求以及老板(你)的记录:
    1. theOnly2WebsitesYouShouldGo-1.dingxf.cn对应mail.126.com
    2. theOnly2WebsitesYouShouldGo-2.dingxf.cn对应www.dingxf.cn
  3. 根据记录,Reverse Proxy Server访问mail.126.com
  4. Reverse Proxy Server把126服务器传回的内容转交给用户
  5. 外界看来,是Reverse Proxy Server在访问126服务器,他们并不知道是哪个用户在访问126服务器;而对于用户,他们通过Reverse Proxy Server终于可以上网了。

以上是基本原理。

以下是设置方法:

拥有一个顶级域名(例如www.example.cn)

添加一个VirtualHost:

<VirtualHost *:443>
ServerName www.example.cn:443
DocumentRoot “/phy/dir/on/your/machine/”
Include conf.d/ssl.conf.default

SSLProxyEngine On
ProxyPass / https://www.google.com/
ProxyPassReverse / https://www.g.com/
ProxyPassReverseCookieDomain https://www.g.com/ /
ProxyPassReverseCookiePath / /
</VirtualHost>

conf.d/ssl.conf.default的内容:

ErrorLog logs/ssl_error_log
TransferLog logs/ssl_access_log
LogLevel warn

SSLEngine on
SSLProtocol all -SSLv2 -SSLv3
SSLCipherSuite ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS
SSLCertificateFile /your/crt/file
SSLCertificateKeyFile /your/private/key/file
SSLCertificateChainFile /your/ca-bundle/file

<Files ~ “\.(cgi|shtml|phtml|php3?)$”>
SSLOptions +StdEnvVars
</Files>

SetEnvIf User-Agent “.*MSIE.*” \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0

CustomLog logs/ssl_request_log “%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \”%r\” %b”

我省略了很多内容,后面的帖子会慢慢讲~

2015.08.24,再次开通了博客。域名是blog.dingxf.cn,依旧用了LocVPS。这次不写英文博客啦!宣传自己的页面就用neutrino.dingxf.cn好了,这个是英文的。默认的主站是(www.)dingxf.cn目前还是七夕主题~)。另外还有一个acg的论坛:acg.dingxf.cn

我会不定期的更新一些文章,包括服务器搭建、neutrino方面的话题等等。

 

又到4点半啦~ 晚安!