下载代码
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
交叉编译的问题
gen_test_char
和test_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
- 找不到头文件
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