月度归档:2013年01月

在Apache上使用客户端证书认证

前阵子在nginx上做了客户端证书认证,发现满足感大大的有,于是一发不可收拾,在RaspberryPi上的Apache也做了一个。

上参考:

http://www.adintr.com/article/blog/192

http://httpd.apache.org/docs/2.2/mod/mod_ssl.html

 

首先,第一步是做证书。

这部分是老生常谈了,懒人表示继续在路由上用easyrsa做(参考1参考2),写了一份server的key和crt之后就可以拿来用了。(之前我有CA证书和客户端证书了)

然后到手3个文件, server.key server.crt ca.crt。

修改/etc/apache/sites-available/default-ssl

找到这些字段

SSLCertificateFile
SSLCertificateKeyFile
SSLVerifyClient
SSLCACertificateFile
SSLVerifyClient

去掉注释之后,分别填上 server.crt的位置,server.key的位置,”on”,ca.crt的位置,”require”,就像这样

SSLEngine on
SSLCertificateFile    /etc/apache2/certs/pi.crt
SSLCertificateKeyFile /etc/apache2/certs/pi.key
SSLCACertificateFile /etc/apache2/certs/ca.crt
SSLVerifyClient require

配置也完成了。

然后启用一下ssl的mod和这个默认的ssl配置,就是分别做一下软连接。

最后启动/重启apache服务器,好了,看到浏览器问你要证书了。

在Nginx中使用客户端证书认证

其实这个东西很久以前就想搞的了,一直没动手,直到最近总在外面跑,有时候就考虑连回家里,于是稍微动了一下手。

选nginx是因为这个服务器够轻型,做前端最好了,而且做前端的话以前也做过,有经验。

上连接:

http://blog.csdn.net/kunoy/article/details/8239653



http://blog.csdn.net/jinhill/article/details/2573777
签证书什么的感觉略微有点麻烦了,于是果断的用了openvpn的easyrsa,这套脚本帮我很轻松的完成了证书的签署。主要用到了build-ca build-key-server build-key,根据名字就看出来了,生成ca证书,生成服务器证书,生成私有证书。这部分根据不用的系统,生成的证书在不同的位置,详情再自行Google之。我是在openwrt上做的,签好的证书在/etc/easyrsa/keys下。

如果真心想认真学习签证书的话还是去做多点的Google吧。

证书和密钥到手,这时候比较推荐导出一下客户端证书,使用以下命令

openssl pkcs12 -export -inkey client.key -in client.crt -CAfile ca.crt -chain -out client.pfx

就能得到一份可以导入的私有证书了。(暂时我只找到这种笨办法)

 

证书都准备好之后就是服务器的配置了。

先要处理一下openssl.conf,主要是这几行

dir            = /etc/easy-rsa/keys         # top dir  
database       = $dir/index.txt          # index file.  
new_certs_dir  = $dir/newcerts           # new certs dir  

certificate    = $dir/ca.crt         # The CA cert  
serial         = $dir/serial             # serial no file  
private_key    = $dir/ca.key  # CA private key  
RANDFILE       = $dir/.rand      # random number file 

countryName = match  
stateOrProvinceName = match  
organizationName = match  
organizationalUnitName = match  
localityName            = optional  
commonName              = supplied  
emailAddress            = optional

上半部分是证书文件的位置,下半部分是认证哪些内容是相同,自己看着修改。

openssl弄好之后就是重头戏了,nginx本身的配置。

默认的配置文件里有https服务器的实例,参照着就能弄好一个认证服务器端证书的,只要稍微加上几行就能加上私有证书的认证了。

    # HTTPS server

    server {
        listen       443;
        server_name  Router;

	charset utf8;

        ssl                  on;
        ssl_certificate      /etc/easy-rsa/keys/ferrets.imzone.in.crt;
        ssl_certificate_key  /etc/easy-rsa/keys/ferrets.imzone.in.key;

	ssl_client_certificate /etc/easy-rsa/keys/ca.crt; #客户端证书认证所需要的ca证书

        ssl_session_timeout  5m;
        ssl_protocols  SSLv2 SSLv3 TLSv1;
        ssl_ciphers  HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers   on;
	ssl_verify_client on; #启用客户端证书认证

        location / {
            proxy_pass ;
		proxy_redirect default;
        }
		location /transmission {
			proxy_pass ;
			proxy_redirect default;
		}
    }

嗯,像上面一样的配置文件我就是做的代理服务器,转发到192.168.1.1和192.168.1.1:9091,方便远程管理路由和transmission。

感觉一下子强力了好多啊。

处理了lighttp上的wordpress用Jetpack的问题

嗯,以前用着用着都是没问题的,前几天看着评论栏直接无法访问了(蛋疼的防火墙),于是干脆关掉了,可是关掉之后发现好怀念那东西的网站统计啊……好想要回来啊,于是又重新启用,结果出问题了。

得到了这样的东西

Your Jetpack has a glitch. Something went wrong that’s never supposed to happen. Guess you’re just lucky: xml_rpc-32601

Try connecting again. Error Details: The Jetpack server could not communicate with your site’s XML-RPC URL. If you have the W3 Total Cache plugin installed, deactivate W3 Total Cache, try to Connect to WordPress.com again, reactivate W3 Total Cache, then clear W3 Total Cache’s cache.

卧槽,用的好好地怎么就突然出问题了呢?

经过啦大量的搜索,找到了解决的办法,原来是跟lighttpd的rewrite有关。

根据http://en.forums.wordpress.com/topic/jetpack-instl-issue-with-ssl-and-lighttpd(要求跨越防火墙),找到了解决的办法。
有一位有类似情况的人,将rewrite规则从

#Jetpack is broken with these rules
url.rewrite-once=(
 "^/(wp-.+).*/?" => "$0",
 "^/images/.*/?" => "$0",
 "^/temp/.*/?" => "$0",
 "^/(sitemap.xml)" => "$0",
 "^/(xmlrpc.php)" => "$0",
 "^/keyword/([A-Za-z_0-9\-]+)/?$" => "/index.php?keyword=$1",
 "^/.*?(\?.*)?$" => "/index.php$1"

改成了

#Jetpack works with these rules
url.rewrite-if-not-file = (
 "^/(wp-.+).*/?" => "$0",
 "^/images/.*/?" => "$0",
 "^/temp/.*/?" => "$0",
 "^/keyword/([A-Za-z_0-9\-]+)/?$" => "/index.php?keyword=$1",
 "^/.*?(\?.*)?$" => "/index.php$1"
 )

之后,Jetpack好了。我改成这样也没问题了。

给RaspberryPi装上Samba服务器

果断地,在Pi入手之后必须的工作之一就是samba了,还记得再之前从来都不知道这东西的好,用上了之后就发现离不开了。

虽然说其实在linux环境下面的话sftp也就满足了,可是平时都是用的windows,所以还是用samba比较舒服,虽然性能实在不怎么样……

首先吐槽一下软件源那边的问题,尼玛,全世界都在说用这个“testparm”来测试samba的配置文件有没有问题,但是我照着各种教程安装上samba4-common-bin之后还是没有这东西,于是还是只能手动修改配置文件了。

因为路由上也有samba,于是果断的参考一下,发现一个很蛋疼的事实,raspbian的samba在安装完成之后,默认的配置文件里面有个

passdb backend = tdbsam

但是根据openwrt的samba配置文件来看,openwrt用的是smbpasswd,而这东西是负责密码的。

然后就我嘞个擦,这尼玛密码怎么弄?

直接参照smbpasswd来改密码的方法不可能,因为没有tdbsam这东西(为什么什么都没有!)

在网上查了很久之后发现原来密码后端换成了pdbedit,要添加用户的话就用

pdbedit -a -u <用户名>

来添加用户,添加过之后就看到了很多信息,看起来比smbpasswd高级好多。

添加完之后就基本上能用了。

剩下的就是处理一下共享文件夹,格式如下看起来像这样子

[Disks]
	path           = /media/
	comment        = Mounted USB Disks
	browsable      = yes
	read only      = no
	create mask    = 777
	directory mask = 777

然后就能看到并且读写了。

更多详细的设定就去samba的官网查吧。

通关了HalfLife BlackMesa

嘛~因为看到有这么一个重制版,于是下下来重温了一下。但是再次让我感受到了国内的软件的流氓性。
顺便放个连接

下完了,安装之后一眼看过去那个启动器,不对,要管理权限?阴谋,大大的阴谋!果断的丢sandbox里面去跑,看到了一堆奇怪的东西
play.exe
cmd.exe
hl2.exe
rundll32.exe

好吧,仔细检查,play.exe是启动器,一个需要权限的启动器,毫无疑问是有问题的;cmd.exe嗯,你想干什么?hl2.exe的话是halflife本身,没问题,rundll32.exe是系统的,嗯,也没问题。

那么,问题就是这个play.exe和cmd.exe了。

play.exe做了什么,很遗憾,我还没检查出来,估计也是改一下ie主页之类的……

cmd.exe的话就好说了,打开任务管理器,切换到进程页,看看命令行,就发现了一个奇怪的东西。
一个play.bat在临时文件夹里面。

打开一看,发现以下内容

cd "www.d9zx.net RAS"
cd BMS
ren ep3_gamestats.dat gameinfo.txt
cd..
ren bink.dll Steam.dll
hl2.exe -game BMS
ren Steam.dll bink.dll
cd BMS
ren gameinfo.txt ep3_gamestats.dat
cd..
cd..

非常简陋的脚本,简陋的我都能写出来(别吐槽我,我对windows不熟悉)
脚本的内容很简单,找到”www.d9zx.net RAS\BMS”,将ep3_gamestats.dat重命名成gameinfo.txt(游戏的信息,缺失时无法游戏),然后返回”www.d9zx.net RAS”,将bink.dll重命名成Steam.dll,然后开始游戏。游戏完毕之后,再次将这两个正确的文件名改成错误的。

看到这东西的时候我差点一口水喷屏幕上……这事是人干的么……偷偷改掉几个文件名,然你不用他的启动器无法进行游戏,但是偏偏又是用这个傻瓜的方式来做,这是发布组技术不行还是良心发现?

明明是好好的一个脚本,都写好了,就直接让大家跑就是了,什么问题也没有,为什么还要费尽心思去大家用他们的启动器呢?很明显是这东西有问题……什么问题我就不知道了,我实在没有能力去反编译这个启动器。

另外还有一个问题,这个rundll32.exe在启动的时候必须联网,不联网的话游戏无法启动(尼玛死怎么这个多奇奇怪怪的东西)。

经过追踪发现,连接了65.55.162.27:443。嗯?安全连接?查询ip之后发现是微软的ip,尝试用https连接之后发现是games.metaservices.microsoft.com。卧槽,我玩个游戏而已,微软你跑出来捣什么乱?你要查就查咯,你查不到不给我玩是怎么回事?

最后这个问题还是没法解决……即使我关掉了游戏资讯查询之类的还是无法在没有联网的状况下启动游戏(启动之后就不关事了)。嘛将就着玩吧,幸好这个不是问题。

終於讓RaspberryPi用上HDMI輸出了

今天剛從亞馬遜哪裡弄回來了HDMI線和無線網卡,於是打算將輸出換到了HDMI,畢竟RCA那輸出實在看不上眼啊……雖然那種距離下用RCA更加能看清楚文字(手上只有電視有HDMI口,另外一個顯示屏有另外的人用,而且是沒有HDMI接口)。

換上了之後,打開電視,發現完全沒有輸出,我嘞個去,這搞毛?上網搜索一番之後,找到了一份config.txt的設定的詳細說明,仔細看了一番之後,稍微改動了一下,去掉了一些註釋,添加了一些修改。

在去掉這句的註釋之後

hdmi_safe=1

就發現HDMI有輸出了,但是分辨率依然慘不忍睹,只有可憐的500多x400多,於是繼續查下去,找到一些需要設定的地方

hdmi_drive 決定HDMI的輸出模式

hdmi_drive=1 DVI輸出,沒有聲音
hdmi_drive=2 HDMI模式,如果有聲音輸出並且被啟用的話就會有聲音輸出

hdmi_group 選擇模式分組,具體原理不明,根據這裡和下面的列表選擇分辨率

hdmi_group=1   CEA
hdmi_group=2   DMT

hdmi_mode 根據分組,下面分別有下列兩個表的效果

These values are valid if hdmi_group=1 (CEA)
hdmi_mode=1    VGA
hdmi_mode=2    480p  60Hz
hdmi_mode=3    480p  60Hz  H
hdmi_mode=4    720p  60Hz
hdmi_mode=5    1080i 60Hz
hdmi_mode=6    480i  60Hz
hdmi_mode=7    480i  60Hz  H
hdmi_mode=8    240p  60Hz
hdmi_mode=9    240p  60Hz  H
hdmi_mode=10   480i  60Hz  4x
hdmi_mode=11   480i  60Hz  4x H
hdmi_mode=12   240p  60Hz  4x
hdmi_mode=13   240p  60Hz  4x H
hdmi_mode=14   480p  60Hz  2x
hdmi_mode=15   480p  60Hz  2x H
hdmi_mode=16   1080p 60Hz
hdmi_mode=17   576p  50Hz
hdmi_mode=18   576p  50Hz  H
hdmi_mode=19   720p  50Hz
hdmi_mode=20   1080i 50Hz
hdmi_mode=21   576i  50Hz
hdmi_mode=22   576i  50Hz  H
hdmi_mode=23   288p  50Hz
hdmi_mode=24   288p  50Hz  H
hdmi_mode=25   576i  50Hz  4x
hdmi_mode=26   576i  50Hz  4x H
hdmi_mode=27   288p  50Hz  4x
hdmi_mode=28   288p  50Hz  4x H
hdmi_mode=29   576p  50Hz  2x
hdmi_mode=30   576p  50Hz  2x H
hdmi_mode=31   1080p 50Hz
hdmi_mode=32   1080p 24Hz
hdmi_mode=33   1080p 25Hz
hdmi_mode=34   1080p 30Hz
hdmi_mode=35   480p  60Hz  4x
hdmi_mode=36   480p  60Hz  4xH
hdmi_mode=37   576p  50Hz  4x
hdmi_mode=38   576p  50Hz  4x H
hdmi_mode=39   1080i 50Hz  reduced blanking
hdmi_mode=40   1080i 100Hz
hdmi_mode=41   720p  100Hz
hdmi_mode=42   576p  100Hz
hdmi_mode=43   576p  100Hz H
hdmi_mode=44   576i  100Hz
hdmi_mode=45   576i  100Hz H
hdmi_mode=46   1080i 120Hz
hdmi_mode=47   720p  120Hz
hdmi_mode=48   480p  120Hz
hdmi_mode=49   480p  120Hz H
hdmi_mode=50   480i  120Hz
hdmi_mode=51   480i  120Hz H
hdmi_mode=52   576p  200Hz
hdmi_mode=53   576p  200Hz H
hdmi_mode=54   576i  200Hz
hdmi_mode=55   576i  200Hz H
hdmi_mode=56   480p  240Hz
hdmi_mode=57   480p  240Hz H
hdmi_mode=58   480i  240Hz
hdmi_mode=59   480i  240Hz H
H means 16:9 variant (of a normally 4:3 mode).
2x means pixel doubled (i.e. higher clock rate, with each pixel repeated twice)
4x means pixel quadrupled (i.e. higher clock rate, with each pixel repeated four times)
These values are valid if hdmi_group=2 (DMT)
hdmi_mode=1 640x350 85Hz
hdmi_mode=2 640x400 85Hz
hdmi_mode=3 720x400 85Hz
hdmi_mode=4 640x480 60Hz
hdmi_mode=5 640x480 72Hz
hdmi_mode=6 640x480 75Hz
hdmi_mode=7 640x480 85Hz
hdmi_mode=8 800x600 56Hz
hdmi_mode=9 800x600 60Hz
hdmi_mode=10 800x600 72Hz
hdmi_mode=11 800x600 75Hz
hdmi_mode=12 800x600 85Hz
hdmi_mode=13 800x600 120Hz
hdmi_mode=14 848x480 60Hz
hdmi_mode=15 1024x768 43Hz DO NOT USE
hdmi_mode=16 1024x768 60Hz
hdmi_mode=17 1024x768 70Hz
hdmi_mode=18 1024x768 75Hz
hdmi_mode=19 1024x768 85Hz
hdmi_mode=20 1024x768 120Hz
hdmi_mode=21 1152x864 75Hz
hdmi_mode=22 1280x768 reduced blanking
hdmi_mode=23 1280x768 60Hz
hdmi_mode=24 1280x768 75Hz
hdmi_mode=25 1280x768 85Hz
hdmi_mode=26 1280x768 120Hz reduced blanking
hdmi_mode=27 1280x800 reduced blanking
hdmi_mode=28 1280x800 60Hz
hdmi_mode=29 1280x800 75Hz
hdmi_mode=30 1280x800 85Hz
hdmi_mode=31 1280x800 120Hz reduced blanking
hdmi_mode=32 1280x960 60Hz
hdmi_mode=33 1280x960 85Hz
hdmi_mode=34 1280x960 120Hz reduced blanking
hdmi_mode=35 1280x1024 60Hz
hdmi_mode=36 1280x1024 75Hz
hdmi_mode=37 1280x1024 85Hz
hdmi_mode=38 1280x1024 120Hz reduced blanking
hdmi_mode=39 1360x768 60Hz
hdmi_mode=40 1360x768 120Hz reduced blanking
hdmi_mode=41 1400x1050 reduced blanking
hdmi_mode=42 1400x1050 60Hz
hdmi_mode=43 1400x1050 75Hz
hdmi_mode=44 1400x1050 85Hz
hdmi_mode=45 1400x1050 120Hz reduced blanking
hdmi_mode=46 1440x900 reduced blanking
hdmi_mode=47 1440x900 60Hz
hdmi_mode=48 1440x900 75Hz
hdmi_mode=49 1440x900 85Hz
hdmi_mode=50 1440x900 120Hz reduced blanking
hdmi_mode=51 1600x1200 60Hz
hdmi_mode=52 1600x1200 65Hz
hdmi_mode=53 1600x1200 70Hz
hdmi_mode=54 1600x1200 75Hz
hdmi_mode=55 1600x1200 85Hz
hdmi_mode=56 1600x1200 120Hz reduced blanking
hdmi_mode=57 1680x1050 reduced blanking
hdmi_mode=58 1680x1050 60Hz
hdmi_mode=59 1680x1050 75Hz
hdmi_mode=60 1680x1050 85Hz
hdmi_mode=61 1680x1050 120Hz reduced blanking
hdmi_mode=62 1792x1344 60Hz
hdmi_mode=63 1792x1344 75Hz
hdmi_mode=64 1792x1344 120Hz reduced blanking
hdmi_mode=65 1856x1392 60Hz
hdmi_mode=66 1856x1392 75Hz
hdmi_mode=67 1856x1392 120Hz reduced blanking
hdmi_mode=68 1920x1200 reduced blanking
hdmi_mode=69 1920x1200 60Hz
hdmi_mode=70 1920x1200 75Hz
hdmi_mode=71 1920x1200 85Hz
hdmi_mode=72 1920x1200 120Hz reduced blanking
hdmi_mode=73 1920x1440 60Hz
hdmi_mode=74 1920x1440 75Hz
hdmi_mode=75 1920x1440 120Hz reduced blanking
hdmi_mode=76 2560x1600 reduced blanking
hdmi_mode=77 2560x1600 60Hz
hdmi_mode=78 2560x1600 75Hz
hdmi_mode=79 2560x1600 85Hz
hdmi_mode=80 2560x1600 120Hz reduced blanking
hdmi_mode=81 1366x768 60Hz
hdmi_mode=82 1080p 60Hz
hdmi_mode=83 1600x900 reduced blanking
hdmi_mode=84 2048x1152 reduced blanking
hdmi_mode=85 720p 60Hz
hdmi_mode=86 1366x768 reduced blanking

基本上設定好之後就沒問題了,系統自帶那改屏幕分辨率的東西實在不行呢~

又一個老表結婚了

老表們都結婚了(不是回老家結婚),感覺壓力很大,咱連個妹子都還沒有呢…

不過說,怎麼說,仔細想想的話,咱說著“真想要個妹子啊…”之類的,想想如果真有個妹子的話,會是個什麼狀況呢…想象不能…對某個人走過心動的感覺確實有,嗯,因為妹子很漂亮…就是那種驚艷之後的心動。要說那種刻骨銘心的話,那還真沒有…或許是性格的問題?自我感覺是因為個人性格太過軟弱了,也太以自我為中心,不願意付出。嗯,個人也確實是吝嗇了點,也不太懂得主動和別人分享。還要慢慢學呢…

前天晚上還為了穿什麼衣服被父母數落了一頓,說我這麽大了還不會打扮,說都要工作了,要學會穿西裝,會打領帶。而且那是正式的場合,要穿得正經點。結果因為沒有西裝,做後還是穿著往常的衣服過去了。然後發現老表這些搞音樂的朋友都沒幾個穿西裝的,還有幾個紮著小辮子,巨有藝術家氣息…

早上吃完早飯(12點)就過去迎新娘,一堆禮數,沒有老嬤子的話估計沒法做出來…回到家附近就是喜聞樂見的玩新人時間。新娘子因為身孕逃過一劫,但是新郎官就沒那麽好運了。被逼穿上了bra和內褲(在西裝外面),bra裏各放一瓶益樂多,胯下吊著一個大香蕉,套著一個避孕套,遊街…還經歷了二鍋頭漱口+芥末刷牙,可憐的新郎眼淚嘩啦啦的流…回到家之後又是一頓拜神,倒茶…接著就轉移會場了。

路上在旁邊聽著瑩表姐和三姑媽在旁邊blablabla,又了解到光姐夫那不為我所知的另一面(當然是不好的一面),為人轉橫,而且對老人也不尊重。愛護孩子的同時卻給予了錯誤的教育…在酒席的時候這熊孩子說想去哪裡,瑩表姐調戲這熊孩子說開那輛xxx(反正不是豪車)載他去,這孩子爆了一句“我要寶馬”。我不知道當時我的表情有多微妙,反正我在心裏233。

继续阅读