交叉编译Apache httpd for PPC

下载代码

git clone https://github.com/apache/httpd.git
cd  httpd

当前的最新发布版本为 2.4.46 官网链接;注意官网有这么一句话Apache HTTP Server version 2.4.43 or newer is required in order to operate a TLS 1.3 web server with OpenSSL 1.1.1.

git checkout 2.4.46

下载一个叫srclib/apr的东西

svn co http://svn.apache.org/repos/asf/apr/apr/trunk srclib/apr

生成configure,如果下载的是源码包(*.tar.gz or *.tar.bz2),里面configure是生成好的,不需要buildconf

./buildconf

配置生成Makefile;相关配置信息参考./configure --help信息

./configure --host=powerpc-linux --target=powerpc-linux 

编译

make -j 8 

交叉编译的问题

  1. gen_test_chartest_char.h 错误
    这两个文件都在源码的server目录下,gen_test_char是一个elf文件,由makefile得知,他是由一些.c生成的elf,然后通过运行这个elf文件再生成一个test_char.h
    make -> gen gen_test_char -> gen test_char.h
    在交叉编译环境,生成的gen gen_test_char不能运行,导致生成的test_char.h是个空文件
    解决办法是先不进行交叉编译配置(删除--host和--target选项),生成一份主机可运行的gen_test_char
    
    make distclean
    ./configure
    make
    cp server/gen_test_char ../
    cp server/test_char.h ../
    make distclean
    ./configure --host=powerpc-linux --target=powerpc-linux 
    make
    #此时报错
    mv ../gen_test_char server/
    mv ../test_char.h server/
    make
    
  2. 找不到头文件pcre.h
    这个头文件在交叉编译器的路径下存在,但是编译时找不到
    通过搜索确定,只在 server/util_pcre.c 这个文件中引用,修改头文件包含的语句,使用绝对路径
    #include "/opt/eldk-5.5.2/powerpc/sysroots/powerpc-linux/include/pcre.h"
    

安装,因为安装路径在生成的配置文件中也有使用,所以在主机这边安装的时候直接安装到板上的对应路径,避免下载到板子上,再修改配置文件

mkdir -p /usr/local/apache2/
make install PREFIX=/usr/local/apache2/

运行时的库,都在交叉编译器里了(openssl,expat,pcre可能需要下载代码编译获得)

libcrypto.so
libcrypto.so.1.0.0
libexpat.so
libexpat.so.1
libexpat.so.1.6.0
libpcrecpp.so
libpcrecpp.so.0
libpcrecpp.so.0.0.2
libpcreposix.so
libpcreposix.so.0
libpcreposix.so.0.0.7
libpcre.so
libpcre.so.1
libpcre.so.1.2.12
libssl.so
libssl.so.1.0.0

私有证书生成过程

1、创建密钥
使用openssl工具生成一个RSA私钥

openssl genrsa -des3 -out server.key 2048

注意:生成私钥,需要提供一个至少4位,最多1023位的密码。

2、生成CSR(证书签名请求)

openssl req -new -key server.key -out server.csr

说明:需要依次输入国家,地区,城市,组织,组织单位,Common Name和Email。其中Common Name,可以写自己的名字或者域名,如果要支持https,Common Name应该与域名保持一致,否则会引起浏览器警告。

可以将证书发送给证书颁发机构(CA),CA验证过请求者的身份之后,会出具签名证书,需要花钱。另外,如果只是内部或者测试需求,也可以使用OpenSSL实现自签名。

3、删除密钥中的密码

openssl rsa -in server.key -out server.key

说明:如果不删除密码,在应用加载的时候会出现输入密码进行验证的情况,不方便自动化部署。

4、生成自签名证书

内部或者测试使用,只要忽略证书提醒就可以了。

openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

5、生成pem格式的公钥

有些服务,需要有pem格式的证书才能正常加载,可以用下面的命令:

openssl x509 -in server.crt -out server.pem -outform PEM

修改板上的服务器配置extra/httpd-ssl.conf

SSLCertificateFile "/usr/local/apache2//conf/server.crt"
SSLCertificateKeyFile "/usr/local/apache2//conf/server.key"
SSLCertificateChainFile "/usr/local/apache2//conf/server.crt"

在PC上,安装server.crt,需要安装到受信任的证书颁发机构

win+r 运行mmc;
文件>添加删除管理单元;
在可用的管理单元中选择”证书“,点击添加》确定;
在控制节点中展开证书》受信任的证书颁发机构》证书,右击所有任务》导入.

启动服务器

/usr/local/apache2/bin/apachectl -f /usr/local/apache2/conf/httpd.conf
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值