为apache提供http2支持

截至2015年末,主要的浏览器的最新版本已经支持HTTP/2协议。其中:Google Chrome、Mozilla Firefox、Microsoft Edge和Opera已支持HTTP/2,并默认启用。Internet Explorer自IE 11开始支持HTTP/2,并预设启用。
下面简述ubuntu16.04 下apache下开启http2的几种方法。

1、使用ppa:ondrej
UBUNTU 16.04默认源里的APACHE为2.4.18版,没有HTTP2模块,直接启用HTTP2会找不到模块。

a2enmod http2
ERROR: Module http2 does not exist!

ppa:ondrej是一个比较知名的源,最新的apache版本是2.4.38

sudo add-apt-repository ppa:ondrej/apache2
sudo apt update
sudo apt install apache2
a2enmod http2

安装Let’s Encrypt,在默认配置文件的SERVERNAME下添加一行:

<VirtualHost x.x.x.x:443>
Protocols h2 http/1.1


</VirtualHost>

重启apache

service apache2 restart

2、编译apache 2.4.41
我们需要安装 nghttp2(http2 的 C 语言库)

#安装编译工具等
sudo apt-get install git g++ make binutils autoconf automake autotools-dev libtool pkg-config \
zlib1g-dev libcunit1-dev libssl-dev libxml2-dev libev-dev libevent-dev libjansson-dev \
libjemalloc-dev cython python3-dev python-setuptools libpcre3 libpcre3-dev openssl

#编译安装nghttp2
git clone https://github.com/tatsuhiro-t/nghttp2.git
cd nghttp2
autoreconf -i
automake
autoconf
./configure
make
make install

安装PRCE

#apt-get install libpcre3 libpcre3-dev

#已经安装

编译apache

cd ~
wget http://archive.apache.org/dist/httpd/httpd-2.4.18.tar.gz
wget https://www-us.apache.org/dist/apr/apr-1.7.0.tar.gz
wget https://www-us.apache.org/dist/apr/apr-util-1.6.1.tar.gz
tar xzf httpd-2.4.18.tar.gz
tar xzf apr-1.7.0.tar.gz
tar xzf apr-util-1.6.1.tar.gz
mv apr-1.7.0 httpd-2.4.18/srclib/apr
mv apr-util-1.6.1 httpd-2.4.18/srclib/apr-util
cd httpd-2.4.18

./configure –prefix=/usr/local/apache2.4.18 –enable-so –enable-deflate=shared –enable-ssl=shared –enable-expires=shared –enable-headers=shared –enable-rewrite=shared –enable-static-support –with-included-apr –with-mpm=event –enable-http2

make && make install

#添加启动脚本apache2到service

sudo cp /usr/local/apache2.4.18/bin/apachectl /etc/init.d/apache2

cd ..

#添加apache2到环境变量
sudo echo ‘export PATH=$PATH:/usr/local/apache2.4.18/bin’ > ./apache2.sh
sudo chmod a+x apache2.sh

# 拷贝脚本至目录
sudo cp apache2.sh /etc/profile.d

# 更新脚本状态
source /etc/profile.d/apache2.sh
#添加apache2到开机启动项
sudo nano /etc/rc.local

#将/etc/profile.d/apache2.sh添加到exit 0之前

/etc/profile.d/apache2.sh

exit 0

#启动apache2

sudo systemctl start apache2

不过因为编译安装的apache2设置文件集中放在httpd.conf,使用起来不是很方便,还要一堆设置,不推荐使用,重点是利用编译好的http2.so模块。

以上在linode编译成功,不同IDC可能稍有不同,请自行甄别。

3、直接使用上一步编译好的http2.so模块,推荐

sudo cp /usr/local/apache2.4.18/modules/mod_http2.so /usr/lib/apache2/modules/

然后为HTTP2模块编写一个配置文件:

sudo nano /etc/apache2/mods-available/http2.load

在其中写入以下:

LoadModule http2_module /usr/lib/apache2/modules/mod_http2.so

LogLevel http2:info

注意:

nghttp2还是要安装的,要不apache2重启会报错。同时不要忘记设置VirtualHost

<VirtualHost x.x.x.x:443>
Protocols h2 http/1.1


</VirtualHost>

最后启用HTTP2模块:

sudo service apache2 restart
sudo a2enmod http2

sudo service apache2 restart

大功告成。

4、参见

https://new.blog.cloudflare.com/tools-for-debugging-testing-and-using-http-2/

在Apache上安装Let’s Encrypt多域名证书

背景

因为WoSign(沃通)未经授权就为GitHub的域名之一颁发了证书,这促使了一项Mozilla和安全社区合作进行的公开调查,调查发现了许多其他WoSign误解的案例,调查还发现Wosign已经秘密收购StartCom,并且后者已经开始使用Wosign的基础设施、员工、政策、签发系统。

最终,从Chrome 56开始,由WoSign和StartCom在2016年10月21日00:00:00 UTC后颁发的证书不受信任。

Apple Root Certificate Program 2016年10月01日 正式宣布在即将发布的安全更新中对沃通的 “WoSign CA Free SSL Certificate G2” 取消信任,所有已经发布到 CT 的旧证书不受影响。正在采取进一步的措施,将阻止来自WoSign和StartCom根CA的证书。

Mozilla 于10月20日公布了对 沃通CA 的最终处理意见,它不再信任在10月21日之后签发的WoSign和StartCom根CA的证书,从 Firefox 51 起移除对4个沃通根证书的信任。

使用Let’s Encrypt免费证书

去年3月以来,behindgfw.com使用的是startcom的免费证书,因为旧的证书还可以用,所以一直没有更换。now,it’s time。

使用Let’s Encrypt官方推荐使用certbot客户端,因为要支持SNI多域名,在tanteng.me上使用了acme-tiny完成验证签发,看了半天觉得还是比较繁琐。研究最后发现certbot也是可以达到SNI多域名功能。示例如下:

wget https://dl.eff.org/certbot-auto
chmod a+x certbot-auto
./certbot-auto certonly --webroot -w /var/www/behindgfw.com/public_html  -d behindgfw.com -d www.behindgfw.com -w /var/www/behindgfw.org/public_html -d behindgfw.org -d www.behindgfw.org

certonly –webroot选项可以在发证过程中不停止Web服务器,使用本地网络服务器验证,–webroot-path或-w使用包含由您的Web服务器提供的文件的顶级目录(“web根目录”)。

……

Saving debug log to /var/log/letsencrypt/letsencrypt.log

……

Performing the following challenges:
http-01 challenge for behindgfw.com
http-01 challenge for www.behindgfw.com
http-01 challenge for behindgfw.org
http-01 challenge for www.behindgfw.org
Using the webroot path /var/www/behindgfw.org/public_html for all unmatched domains.
Waiting for verification…
Cleaning up challenges
Generating key (2048 bits): /etc/letsencrypt/keys/0000_key-certbot.pem
Creating CSR: /etc/letsencrypt/csr/0000_csr-certbot.pem

IMPORTANT NOTES:
– Congratulations! Your certificate and chain have been saved at
/etc/letsencrypt/live/behindgfw.com/fullchain.pem. Your cert will
expire on 2017-06-13. To obtain a new or tweaked version of this
certificate in the future, simply run certbot-auto again. To
non-interactively renew *all* of your certificates, run
“certbot-auto renew”

……

使用/etc/letsencrypt/live目录下的fullchain.pem、privkey.pem修改Apache设置:

SSLCertificateFile /etc/letsencrypt/live/behindgfw.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/behindgfw.com/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/behindgfw.com/fullchain.pem

android、iphone、ipad连接不上L2TP解决方案

参照Linode VPS PPTP VPN 安装配置教程如何在 Debian / Ubuntu 服务器上架设 L2TP / IPSec VPN文章在Ubuntu 12.04 LTS上架设了PPTP、L2TP服务器,windows系统连接正常,但是android、iphone、ipad设备无法连接到L2TP,搜索了n多文章,终于找到解决方案,分享如下关键部位已经用红字表示,主要部分就不罗列了:
/etc/ipsec.conf

version 2.0
config setup
nat_traversal=yes
virtual_private=%v4:10.0.0.0/8,%v4:192.168.0.0/16,%v4:172.16.0.0/12
oe=off
protostack=netkey

conn L2TP-PSK-NAT
rightsubnet=vhost:%priv
also=L2TP-PSK-noNAT

conn L2TP-PSK-noNAT
authby=secret
pfs=no
auto=add
keyingtries=3
rekey=no
ikelifetime=8h

dpddelay=30
dpdtimeout=120
dpdaction=clear

keylife=1h
type=transport
left=你服务器公网ip地址
leftid=你服务器公网ip地址

leftnexthop=%defaultroute

leftprotoport=17/1701
right=%any
rightprotoport=17/%any

rightnexthop=%defaultroute
forceencaps=yes

 

 

/etc/ppp/options.xl2tpd

require-mschap-v2
ms-dns 208.67.222.222
ms-dns 208.67.220.220
asyncmap 0
auth
crtscts
lock
hide-password
modem
debug
name l2tpd
proxyarp
lcp-echo-interval 30
lcp-echo-failure 4

mtu 1400
noccp
connect-delay 5000

期间还有各种错误处理:
1、错误 789、792
由于缺省的Windows XP L2TP 传输策略不允许L2TP 传输不使用IPSec 加密,在注册表HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Rasman\Parameters下建立“DWORD值”
“ProhibitIpSec”=“1”

2、sudo ipsec verify校验不过

sudo dpkg-reconfigure dash

记得这里还有一个不过,后来服务器重新启动下就ok了。

3、忘记了上面哪个配置文件,文件内容前要留空,顶格写的话也是报错。

SpeedTouch 515在Ubuntu下的PPPOE拨号设置

本来是安装好Modem就想写出来,可是一拖再拖。记得刚安装的时候还是ubuntu 5.x,现在都6.x了才终于成文。
电信安装adsl时,附送的是阿尔卡特speedtouch 515,这款猫的性能功能还不错,同时提供了usb和网卡接口。xp下安装没有任何问题,但是linux呢?其实最困难的是如何找到speedtouch 515的驱动。把阿尔卡特官网翻了个底朝天也没看见linux驱动字样,不过最后还是在sourceforge找到了linux驱动(曾经gfw把sourceforge封了,真是猪脑!)。
接下来就简单了:
1、sudo dpkg -i –force-overwrite speedtouch_1.3.1-2_i386.deb
记得去年安装的时候还没有.deb包下载,还得用alien转换下。
2、配置PPPOE
sudo dpkg-i|grep -i PPPOE
或者
sudo apt-get install pppoeconf
sudo pppoeconf
3、拨号
pon dsl-prvider
断网
poff
你还可以用plog命令查询一些诸如ip地址等信息。

现在ubuntu wiki上有一篇文章介绍如何通过升级Modem固件来安装驱动(under Ubuntu 6.06),有兴趣可以参考下。

<!– ckey=”1D78E065″ –>

ckey=”1D78E065″

Linus Torvalds为新概念病毒打“补丁”

旧闻:上周国内很多媒体都对这种实验性概念病毒做了报道,但是Linus Torvalds说由于一个缺陷,该病毒实际上在linux 2.6.16下不能运行,因此他为这个病毒写了一个”补丁”。
Newsforge is reporting that Linus Torvalds took a few minutes to review the cross-platform proof of concept virus covered yesterday and has proven that the virus does indeed not work with latest kernel version 2.6.16 and even released a patch in order to fix this “problem.” From the article: “The
reason that the virus is not propagating itself in the latest kernel
versions is due to a bug in how GCC handles specific registers in a
particular system call. […] So the virus did a number of strange
things to make this show up, but on the other hand the kernel does try
to avoid touching user registers, even if we’ve never really
_guaranteed_ that. So the 2.6.16 effect is a mis-feature, even if a
_normal_ app would never care. It just happened to bite the infection
logic of your virus thing.”
瑞星反病毒反木马一周播报(2006.04.24-04.30)将该病毒命名为:“Bi病毒(Parasite.Bi)”。

安装Linux应该做好十项准备

ZDNet的这篇文章详细介绍了安装Linux操作系统应该做好的十项准备,相信对那些准备安装Linux的新朋友会有所帮助。这十项准备包括:

  • 安装最新的补丁
  • 创建并配置用户帐户
  • 保护根用户访问
  • 保护物理接入
  • 清除并且/或者禁用不必要的系统服务
  • ……