前言

之前已经介绍过如何把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的更多相关文章

  1. 嵌入式web server——Goahead移植要点

    前言 在嵌入式设备中,在没有液晶显示的情况下,可以使用web来访问设备,查看设备的运行状态以及进行参数设置,类似于路由器设置.网上有很多关于各种web server的优劣的评论,在此不讨论,只是介绍其 ...

  2. 嵌入式 Web Server 温度检测系统

    1. Web Server 服务器后台表单处理程序:使用 CGI 程序接口编写后台程序的 Web 服务器. 2. Boa 服务器

  3. (4.22)Microsoft 管理控制台启用 SSL 加密的 SQL Server 实例

    如何通过使用 Microsoft 管理控制台启用 SSL 加密的 SQL Server 实例 关键词:MSSQL加密,sql server加密,sql server客户端与服务器传输内容加密 转自:h ...

  4. Web API 2 使用SSL

    在Server上启用SSL 稍后我会想在IIS 7 上配置SSL,现在先往下看. 本地测试,您可以启用SSL的IIS Express Visual Studio.在属性窗口中,启用SSL设置为True ...

  5. GoAhead 嵌入式web

    https://embedthis.com/goahead/ 入手了一个360  4g  wifi :使用jquery  .goahead Goahead webserver编辑 GoAhead We ...

  6. Thawte SSL Web Server 多域型SSL证书

    Thawte SSL Web Server 多域型SSL证书,最多支持25个域名,需要验证域名所有权和申请单位信息,属于企业验证型SSL证书,提供40位/56位/128位,最高支持256位自适应加密. ...

  7. Thawte SSL Web Server

      Thawte SSL Web Server ,需要验证域名所有权和申请单位信息,属于企业验证(OV)型SSL证书,提供40位/56位/128位,最高支持256位的自适应加密.被2048位的根证书签 ...

  8. 嵌入式web服务

    :boa.thttpd.mini_httpd.shttpd.lighttpd.goaheand.appweb和apache等. Boa 1.介绍 Boa诞生于1991年,作者Paul Philips. ...

  9. ZeroC Ice启用SSL通讯的配置

    Zeroc ICE ( Internet Communications Engine )中间件号称标准统一,开源,跨平台,跨语言,分布式,安全,服务透明,负载均衡,面向对象,性能优越,防火墙穿透,通讯 ...

随机推荐

  1. android 更新uI主线程

    http://www.cnblogs.com/wenjiang/p/3180324.html handleMessage 好用

  2. C# 关键字 default

    在泛型类和泛型方法中产生的一个问题是,在预先未知以下情况时,如何将默认值分配给参数化类型 T: T 是引用类型还是值类型. 如果 T 为值类型,则它是数值还是结构 http://msdn.micros ...

  3. ListControl常用操作汇总

    本文根据本人在项目中的应用,来谈谈CListCtrl的部分用法及技巧.当初学习时,查了很多资料,零零碎碎的作了些记录,现在主要是来做个总结,方便以后查阅.主要包括以下十三点内容:基本操作.获取选中行的 ...

  4. Qualcomm 8X camera daemon进程浅析

    Camera 先看一下抽象层的主要流程: 首先启动一个守护进程 int qcamsvr_start(void)( qcamsvr.c) { 1. server_fd = open(server_dev ...

  5. forward和redirect 的区别

    一.使用区别 1.从地址栏显示来说 forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器.浏览器根本不知道服务器发送的内容从哪里来 ...

  6. dp hdu-4433 locker

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4433 题目大意: 给两个长度相等的数字串s1,s2.每次操作可以把连续的最多三位都+1或-1,如果超 ...

  7. Apache Shiro 集成-Cas

    http://blog.csdn.net/peterwanghao/article/details/8825008 Shiro集成CAS是在1.2版本里新增的功能. Shiro-cas模块将应用作为C ...

  8. jquerymobile-可折叠内容(Collapsible content)

    可能我们在开发中遇到过这样的问题,我们只是看到一个题目或者简单的介绍,然后一点击会在下面展开对应的详细的内容.在jqm中实现这个效果很简单.下面给出一段例子代码: <!DOCTYPE html& ...

  9. 【Java】通过DES加密和解密工具,对字符串进行加密和解密操作

    分享一个非常不错的字符串加密和解密的程序. 可以指定不同的密钥对同一字符串进行不同的加密操作,增强加密性能. Java代码如下: package com.app; import java.securi ...

  10. 深入了解Angularjs指令中的ngModel

    关于AngularJs的指令的知识学习,请参考... 这次我们接上次没讲完的知识继续. 前端人员在设计表单逻辑时, 在大部分情况下,我们需要为表单定义很多指令, 比如比较两个input内的值是否相同, ...