嵌入式web server——Goahead启用SSL
前言
之前已经介绍过如何把goahead移植到linux平台,现在再介绍goahead应用SSL的一些关键要点。因为此博文是继承于上一篇关于移植的博文,有不明白的请先回看。移植篇点这里。
移植环境
goahead-3.4.9
arm + linux 2.6,交叉编译器arm-uclibc-gcc
移植要点
1、把me.h中和SSL相关的两个宏置为1。
#define ME_COM_OPENSSL 1
#define ME_COM_SSL 1
2、把原来删除掉的goahead-openssl/openssl.c再恢复回来。
3、修改makefile,把依赖的源文件加上,如下。
SOURCE_FILE = *.c goahead-openssl/openssl.c
4、此时编译可能会有问题,应该都是与openssl相关的,未声明或未定义之类的。是因为openssl版本低的问题。在我的编译环境中查看openssl版本,如下:
[root]$ openssl version
OpenSSL 0.9.8e-fips-rhel5 Jul
因此我决定自己下载openssl,自己编译成静态库,让goahead直接使用我编译的openssl库。我下载的openssl版本是openssl-1.0.0q,已经移植成功,编译之后的有用的内容包括lib/libssl.a、include、bin/openssl、ssl/openssl.cnf。关于openssl的移植请点这里。
5、再修改makefile文件,使用我们自己编译的openssl。
CC=arm-uclibc-gcc
#CC=gcc #-Werror
FLAGS = -Wall -fPIC -g -O2 -s -ldl -lm -o LIB = -lstdc++ \
-lssl SSL_ARM_INCLUDE = ./openssl/arm/ssl/include
SSL_ARM_LIB = ./openssl/arm/ssl/lib
OBJ_ARM = libhttpspost_arm.so SSL_X86_INCLUDE = ./openssl/x86/ssl/include
SSL_X86_LIB = ./openssl/x86/ssl/lib
OBJ_X86 = libhttpspost_x86.so ifeq ($(CC),gcc)
SSL_INCLUDE = $(SSL_X86_INCLUDE)
SSL_LIB = $(SSL_X86_LIB)
OBJ = $(OBJ_X86)
else
SSL_INCLUDE = $(SSL_ARM_INCLUDE)
SSL_LIB = $(SSL_ARM_LIB)
OBJ = $(OBJ_ARM)
endif SOURCE_FILE = *.c goahead-openssl/openssl.c goahead: $(SOURCE_FILE)
$(CC) $(FLAGS) $@ $(SOURCE_FILE) -I$(SSL_INCLUDE) $(SSL_LIB)/libssl.a $(SSL_LIB)/libcrypto.a clean:
rm -rf goahead .PHONY: clean
6、重新编译goahead,应该能编译得过,可能会有一些warning。
7、使用编译出来的openssl生成私钥。
#生成私钥前先设置环境变量,否则会提示【WARNING: can't open config file: /usr/local/ssl/openssl.cnf】
export OPENSSL_CONF=../ssl/openssl.cnf #key名要符合me.h中的定义 #define ME_GOAHEAD_SSL_KEY "self.key"
openssl genrsa -out self.key 1024
8、使用编译出来的openssl生成证书。
#读书名要符合me.h中的定义 #define ME_GOAHEAD_SSL_CERTIFICATE "self.crt"
openssl req -new -x509 -key self.key -out self.crt -days
9、布署。把goahead、self.key、self.crt布署到板上,他们三个是在同一个目录下。
10、执行,此时执行goahead会有一些问题,提示
goahead: : Unable to set cipher list ......
此时最直接了当的解决办法是把openss.h中的相关一段代码注释掉即可。
/*
Configure cipher suite
*/
/*
if (ME_GOAHEAD_SSL_CIPHERS && *ME_GOAHEAD_SSL_CIPHERS) {
ciphers = ME_GOAHEAD_SSL_CIPHERS;
} else {
ciphers = OPENSSL_DEFAULT_CIPHERS;
}
ciphers = mapCipherNames(ciphers);
trace(5, "Using OpenSSL ciphers: %s", ciphers);
if (SSL_CTX_set_cipher_list(sslctx, ciphers) != 1) {
error("Unable to set cipher list \"%s\"", ciphers);
sslClose();
wfree(ciphers);
return -1;
}
*/
11、注释后编译再执行,服务器的log会提示已经监听ssl服务的端口443,在浏览器中输入https://ip即可访问。
[/mnt/goahead]./goahead
goahead: : This system does not have IPv6 support
goahead: : Upload directory is /tmp
goahead: : Configuration for Embedthis GoAhead
goahead: : ---------------------------------------------
goahead: : Version: 3.4.
goahead: : BuildType: Debug
goahead: : CPU: arm
goahead: : OS: linux
goahead: : Host: 0.0.0.0
goahead: : Directory: /mnt/goahead
goahead: : Documents: web
goahead: : Configure: me -d -q -platform linux-x86-default -configure . -with openssl -gen make
goahead: : ---------------------------------------------
goahead: : Started http://*:80
goahead: : Started https://*:443
goahead: :
^^^^^^^^^^^ web start successful ^^^^^^^^^^^
嵌入式web server——Goahead启用SSL的更多相关文章
- 嵌入式web server——Goahead移植要点
前言 在嵌入式设备中,在没有液晶显示的情况下,可以使用web来访问设备,查看设备的运行状态以及进行参数设置,类似于路由器设置.网上有很多关于各种web server的优劣的评论,在此不讨论,只是介绍其 ...
- 嵌入式 Web Server 温度检测系统
1. Web Server 服务器后台表单处理程序:使用 CGI 程序接口编写后台程序的 Web 服务器. 2. Boa 服务器
- (4.22)Microsoft 管理控制台启用 SSL 加密的 SQL Server 实例
如何通过使用 Microsoft 管理控制台启用 SSL 加密的 SQL Server 实例 关键词:MSSQL加密,sql server加密,sql server客户端与服务器传输内容加密 转自:h ...
- Web API 2 使用SSL
在Server上启用SSL 稍后我会想在IIS 7 上配置SSL,现在先往下看. 本地测试,您可以启用SSL的IIS Express Visual Studio.在属性窗口中,启用SSL设置为True ...
- GoAhead 嵌入式web
https://embedthis.com/goahead/ 入手了一个360 4g wifi :使用jquery .goahead Goahead webserver编辑 GoAhead We ...
- Thawte SSL Web Server 多域型SSL证书
Thawte SSL Web Server 多域型SSL证书,最多支持25个域名,需要验证域名所有权和申请单位信息,属于企业验证型SSL证书,提供40位/56位/128位,最高支持256位自适应加密. ...
- Thawte SSL Web Server
Thawte SSL Web Server ,需要验证域名所有权和申请单位信息,属于企业验证(OV)型SSL证书,提供40位/56位/128位,最高支持256位的自适应加密.被2048位的根证书签 ...
- 嵌入式web服务
:boa.thttpd.mini_httpd.shttpd.lighttpd.goaheand.appweb和apache等. Boa 1.介绍 Boa诞生于1991年,作者Paul Philips. ...
- ZeroC Ice启用SSL通讯的配置
Zeroc ICE ( Internet Communications Engine )中间件号称标准统一,开源,跨平台,跨语言,分布式,安全,服务透明,负载均衡,面向对象,性能优越,防火墙穿透,通讯 ...
随机推荐
- windwos server 2008下iis7各种操作
1.发布一个asp程序带access数据库的 默认server 08是安装了iis7的,但是它默认没支持asp这项,这时你可以直接去控制面板--程序和功能--打开或关闭windows功能(双击打开)- ...
- MVC视图中ViewStart/RenderSection/Layout/Partial
1.母板页_Layout.cshtml 2.部分视图 3.默认Layout引用的使用(_ViewStart.cshtml) Layout = "~/Views/Shared/_Layout. ...
- 《锋利的Jquery第二版》读书笔记 第三章
DOM操作的分类 1.DOM Core不专属JavaScript,任何一种支持DOM的程序设计语言都可以使用它,也可以处理XML等标记语言编写出来的文档,getElementById().setAtt ...
- linux 多线程基础2
6. 名称:: pthread_detach 功能: 使线程进入分离状态. 头文件: #include <pthread.h> 函数原形: int pthread_detach(pthre ...
- WORD文档的长串数字如何粘贴到excel
有问题,才有提高 问题描述: 现 word 文档中有好多长长的数字(如下),我需要将它们弄进 Excel 中 直接[复制],[粘贴],结果显示如下: 然后再设置单元格格式中的数字,无论选哪一个都得不到 ...
- 转载:monkeyrunner工具
前言: 最近开始研究Android自动化测试方法,对其中的一些工具.方法和框架做了一些简单的整理,其中包括 android测试框架.CTS.Monkey.Monkeyrunner.benchmark. ...
- Webform Repeater的灵活运用
案例:模拟购物列表 封装实体类: 数据访问类: 用Repeater展示: 1 <%@ Page Language="C#" AutoEventWireup="t ...
- 【设计模式 - 24】之访问者模式(Visitor)
1 模式简介 访问者模式的定义: 访问者模式将数据结构与数据操作进行了分离,解决了稳定的数据结构和易变的数据操作的耦合问题. 访问者模式的优点: 1) 符合单一职责原则: 2) ...
- WindowsService的调试方法
本人转载:http://www.cnblogs.com/xiebin1986/archive/2011/12/15/2288893.html 调试WindowsService,以前用过一个附加到进程的 ...
- 数位DP问题整理(一)
第一题:Amount of degrees (ural 1057) 题目链接:http://acm.timus.ru/problem.aspx?space=1&num=1057 题意:[x,y ...