如何让boa网页服务器支持HTTPS

背景

boa是一个常用于嵌入式的web server,本身是无法支持https的连接的。
这里就是要解决这个问题。

思路

这里并没有采用修改boa的思路,而是增加其他部件来间接实现。
这里,选择了反向代理pound或ssl包装器stunnel。
客户发送的web请求,先到pound/stunnel监听的端口那,pound/stunnel将SSL连接转换为普通的HTTP,再送给boa服务器。
这样,通过简单的增加一层的方式,来漂亮的解决这个问题!

实现

可以采用ssl包装器 stunnel或反向代理pound来实现,stunnel会比pound更简单。

应用stunnel
交叉编译

下载stunne源码,例如我下载的是stunnel-5.38

交叉编译
./configure --host=arm-none-linux-gnueabi

stunnel比pound好的一个地方就是可以支持openssl0.9.8,这样,单板无需额外拷贝新版本的openssl库
stunnel

编写配置文件
[web_https]
accept = 8080
connect = 127.0.0.1:80
cert = stunnel.pem

stunnel.conf

pem文件

上面配置文件中出现的pem文件,是一个将private key和certificate合并的文件,具体知识可以google。
制作方法如下:

openssl genrsa -out key.pem 2048
openssl req -new -x509 -key key.pem -out cert.pem -days 1095
cat key.pem cert.pem >> stunnel.pem

这个是我做出来的pem文件。
stunnel.pem

运行

上面产生了全部的三个文件:
stunnel (执行程序)
stunnel.conf (配置文件)
stunnel.pem (认证文件)
假设都放在一个目录下
./stunnel stunnel.conf
即可运行

应用pound

下载pound源码,例如我下载的是Pound-2.7

交叉编译
./configure --host=arm-linux-gnueabi --with-ssl=/usr/arm-linux-gnueabi/openssl

注意:如果需要静态链接, 上面加上LDFLAGS=”-static” 即可
下面是一个使用静态链接做出来的pound(免得库不一致带来的问题)。
pound

编写配置文件

假设命名配置文件为pound.cfg
下面的配置的意思是,所有到单板8080端口的https都会变成http发送到本地的80端口

ListenHTTPS
        Address 0.0.0.0
        Port    8080
        Cert    "pound.pem"

        Service
                BackEnd
                        Address 127.0.0.1
                        Port    80
                End
        End
End

pound.cfg

pem文件

同stunnel.pem,重命名即可
pound.pem

运行

上面产生了全部的三个文件:
pound (执行程序)
pound.cfg (配置文件)
pound.pem (认证文件)
假设都放在一个目录下
./pound -f pound.cfg &
即可运行

限制

以上功能,需要在内核>=2.6.28,才能使用。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值