10-3-29 用https代替传统访问
由于一个众所周知的原因,就是为了打击大量非法网站的建设,在清查了一遍全国的IDC后,中国电信(网通不清楚)陆陆续续的封掉了家用ADSL的对外80端口.目的只有一个,就是让动态域名+家用服务器的小型网站从这个星球上消失。
当然,整顿非法网站我不反对。因为据我的经验,这些个站长的素质(或者说是职业道德)普遍不高。他们的网站上大多充斥着恶意脚本和后台木马、病毒等.这些都是为广大网民深恶痛绝的。
所以说,于情于理也都应该清理掉这些互联网的污垢.
可是这也给我带来了困扰,就是我用自己家里的一台Windows Server 08 r2系统搭建的web + ftp 的网络共享平台,也受到了影响,当然只是web方面.
本来想换个端口吧,开始毕竟我的朋友中有些人是不习惯这么奇怪的url的,一定程度上影响他们的使用。
后来又想,要不直接用ftp,因为21、22、23 端口是不受影响的。不过,有些人的电脑没有ftp 客户端,而且还要花时间去教他们怎么用。费事费力,再次搁浅.
面对80端口的时不时的抽风,我忽然想到了用https连接访问的方法.对啊!这是个好办法。因为https默认端口是443.
而且http与https仅有一字之差,很难分辨.
主意一定,我便开始行动了.
因为我的apache是集成了mod_ssl(提供openssl库的接口)的,所以不需要单独去下载openssl套件.
首先进入apache所在的目录,如"c:\program files\apache software foundation\apache2.2\",确保/bin 下存在 openssl.exe 程序.
我所要做的就是生成*.key、*.crt 两个文件,一个证书key和一个自签名证书.
请注意,我生成的是自签名证书(self-signed SSL Certificate).为什么呢?
因为我不可能,也没必要去到什么Verisign、Thawte等机构去申请一个。我启用SSL访问的唯一原因是为了不走80端口,仅此而已.不用那么麻烦,而且需不需要费用和通不通过还说不准.
用官方的话来讲,也可以是测试目的,呵呵
开始动手,
进入命令行,把当前目录定位到apache的/bin 下,
先生成key:
openssl genrsa -des3 -out server.key 1024
记住输入的pass-phrase,启动apache要用到.
如果和我一样是windows系统的话,最好不要加入pass-phrase,因为windows 不支持内置短语.
启动apache会报"Error: SSLPassPhraseDialog built-in is not supported on Win32"错.
如果已经生成,可以用
openssl rsa -in server.key -out srv.key
去除掉pass-phrase.
ps:不要忘了注掉httpd-ssl.conf 下的SSLPassPhraseDialog.
之后生成证书:
openssl req -new -x509 -nodes -sha1 -days 365 -key srv.key -out server.crt -config ..\conf\openssl.cnf
ps:openssl config的路径可能会不一样.
最后,把bin目录下生成的srv.key(最好改下名)和server.crt 复制到别处,如C盘根目录下.
在apache 配置文件httpd-ssl.conf 下定义路径
SSLCertificateFile "C:/server.crt"
SSLCertificateKeyFile "C:/server.key"
再添加好virtuahost,重启apache.即可
如果像我一样,想彻底的抛弃http访问,一律使用https的话,可以考虑利用地址重写达到目的.
编辑httpd.conf文件,加入:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
或者
RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://cnserver.homeftp.org/$1 [R,L]
这样都可以了.
现在我就可以对电信的行为表示影响不大了,呵呵
更多SSL/TLS设置,参见:http://httpd.apache.org/docs/2.2/ssl/
看不太懂的说
这个技术比较适合你,因为你是搞外挂网站
嗯。 不过私有的SSL 每次会提示是否查看内容。。
的确,做下载还是可以的.
上次看到comodo在做免费SSL证书的活动,很不错
不过有效期是90天,我已经申请了.
可以去看看:http://www.instantssl.com/ssl-certificate-products/free-ssl-certificate.html