最近在做MT7688A的的web gui控制,服务器软件用的是boa,这里说一下嵌入式的服务器软件lighttpd也是个不错的选择,功能强大,容易配置,不得不佩服德国人写的软件,本人编译时竟然没看到一个警告。这里选择boa的原因是boa体积小运行内存小。
我们从官方下载的boa是不支持ssl的,本人在网上查找没有找到直接能用的boa ssl版本,另外有用stunnel和pound做代理访问本人在宿主机上编译能正常运行然而板子上跑不起来,有能跑起来的朋友可以一起交流。这里提供的boa是从uClinux中提取的boa,本人修改了一下配置宿主机和板子都能编译运行,希望大家能少走弯路。
下载
项目结构如下:
1. 开启ssl
在src中有Makefile文件
当我们要编译不带ssl的boa时注释掉CONFIG_USER_BOA_WITH_SSL = y,要带ssl功能则要打开。
CONFIG_USER_BOA_LOGGING = y
#是否是使用ssl 注释不使用
#CONFIG_USER_BOA_WITH_SSL = y
#开启开发板编译 n宿主机 y开发板
CONFIG_USER_BOA_EMBED = n
2. 目标平台编译
我们要编译宿主机的目标文件时把CONFIG_USER_BOA_EMBED设置为n
CONFIG_USER_BOA_EMBED = n
要编译开发板时设置为y
CONFIG_USER_BOA_EMBED = y
3. 注意事项
在src目录下面有boa的配置文件boa.conf,里面有log, ServerRoot等配置项和boa.c的#define SSL_KEYF "ssl_key.pem",#define SSL_CERTF "ssl_cert.pem",务必要和自己实际的路径一致否则可能运行不起来,所以大家要是运行不起来可以检查这些配置项是否和自己的实际情况一致。
4. 证书的配置注意事项
经过编译之后boa是运行起来了,但是如果证书生成的不对它还是有一些漏洞的,比如openssl的SSLv2,SSLv3,RC4漏洞。这些一般新的openssl版本已经修复了,所以我们最好是使用新版的openssl.
另外在使用openssl生成证书时使用2048bit生成的key,sha_256生成的cert。至于具体的openssl生成证书和参数的含义大家可以上网查,这不是本文的主题了。以下是我生成证书的过程:
openssl genrsa -des3 -out ssl_key.pem 2048 openssl req -new -out ssl_key.csr -key ssl_key.pem openssl x509 -sha256 -req -in ssl_key.csr -out ssl_cert.pem -signkey ssl_key.pem -days 3650