记一次linux httpd的https配置

今天从阿里云上购买了一个免费的ssl证书,整个过程从购买到审核十分钟左右,就可以下载证书文件了。

解压得到一个证书文件、私钥、和chain文件。

chain文件帮助浏览器识别你的证书和内置CA的关系,如果你的颁发CA是由另一个CA颁发的。

 

上到自己服务器,使用命令" httpd -M " 查看httpd的模块,发现缺少mod_ssl模块,这是编译时没有开启ssl参数。

使用 httpd -v 查看版本 ,发现版本比较早了,去github上找历史版本。

把对应版本的源码下载回来,解压,进入 http-2.4.6/modules/ssl 目录,使用apsx工具把该模块动态编译进去:

 

i  此选项表示需要执行安装操作,以安装一个或多个动态共享对象到服务器的modules目录中。

-a  此选项自动增加一个LoadModule行到httpd.conf文件中,以激活此模块,或者,如果此行已经存在,则启用之。

-A  与 -a 选项类似,但是它增加的LoadModule命令有一个井号前缀(#),即此模块已经准备就绪但尚未启用。

-c  此选项表示需要执行编译操作。它首先会编译C源程序(.c)files为对应的目标代码文件(.o),然后连接这些目标代码和files中其余的目标代码文件(.o和.a),以生成动态共享对象dsofile 。如果没有指定 -o 选项,则此输出文件名由files中的第一个文件名推测得到,也就是默认为mod_name.so

 

注意,你的系统可能会因为缺少openssl或openssl文件缺失而失败,确保openssl正确安装。

-a 参数自动再httpd.conf 增加LoadModule行

 

安装完成后重启httpd,再次使用httpd -M查看模块,发现模块已经编译进去了。

进入httpd的目录,找个地方把下载的证书文件放好,这里我选择在conf下创建ssl目录,把证书放进去。

接下来增加有关ssl的配置文件,我在conf.module.d目录下创建00-ssl.conf,这个目录下的 *.conf都会被包含进去。 

这里我直接复制我windows的apache ssl配置文件并修改。

修改端口号为8043,并把ProtocolsHonorOrder和Protocols注释,因为查官方文档发现这两个配置项需要在版本大于等于2.4.17

修改下面的对应端口的 VirtualHost 配置项:

SSLEngine on

SSLCertificateFIle 公钥文件即上述提到的 public.crt

SSLCertificateKeyFile  私钥文件

SSLCertificateChainFile  chain文件,没有可省略

 

可根据官方文档指示需要关闭或开启一些选项。

接下来,做一个原来的端口重定向。修改 conf.d/httpd-vhost.conf

在对应的VirtualHost中添加:

RewriteEngine on

RewriteCond %{HTTPS} !=on

RewriteRule ^(.*) https://%{SERVER_NAME}:8043$1 [R=301]

 

最后别忘了打开防火墙的端口和阿里云的端口,如果原访问端口能重定向即配置成功。

 

顺便简单总结https连接的基本流程,https使用非对称加密区加密对称密码的密钥。

1. client向https端口请求,请求中携带支持的加密算法和哈希算法、随机数

2. server收到请求,选择支持的算法,发送自己的证书

3. client检验证书 合法性,可信任或不可信任

4. client生成用于加密传输数据的对称加密密钥,并用证书上的公钥加密,连同支持的对称加密算法通过http请求发送给server

5. server使用私钥解密得到对称加密的密钥,选择加密算法,并使用此密钥加密响应返回,

6. client使用对称加密密钥解密响应并验证,https通信建立。

 

证书检验过程。

client收到证书后,获取证书上的颁发机构,查找此机构是否为系统中内置的受信任的证书机构,取出该机构的公钥(机构也有自己一套非对称加密算法),使用该公钥解密证书上的指纹和指纹算法,使用该指纹算法计算证书上的内容是否和指纹一致。

 

 

参考

https://www.linuxidc.com/Linux/2018-08/153555.htm

http://httpd.apache.org/docs/2.4/mod/mod_ssl.html

https://segmentfault.com/q/1010000000203950

https://www.2cto.com/shouce/ApacheManual/programs/apxs.html

https://www.jianshu.com/p/14cd2c9d2cd2 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值