记录DCOS中SSL证书的配置和调试过程

本文详细记录了在Mesosphere上配置HTTPS的过程,包括解决marathon-lb的SSL证书配置问题,以及如何正确设置HAProxy来处理HTTPS请求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • mesosphere已经基本搭建完成,安装了marathon-lb做请求分发,最后需要将所有的请求转为https处理。由于不准备做全局的证书,所以只能针对每个应用单独进行证书配置。
  • 起初没在意marathon-lb,认为他只是简单的请求分发,SSL跟他无关,就在 应用的nginx中配置了80443两种访问方式,注意有个误打误撞的操作:在完整配置SSL的情况下,比如listen 443 ssl;或者ssl on;的情况下会导致400错误:“The plain HTTP request was sent to HTTPS port”。修改方法:屏蔽ssl on,另外只要写listen 443就好了,不需要完整配置。这样配置之后发现通过浏览器访问时一直说连接不安全。。
  • 在理清整个请求的处理流程后越发觉得证书应该是在lbHAProxy中进行配置,所以在此进行尝试,但是无果。。具体做法是在marathon-lb中添加了volume映射试着将证书放进去,想办法让证书生效。反复修改了marathon-lb中的HAPROXY_SSL_CERT参数,但是无论是指定路径,或是按照网上说的用sed输出文件内容之类的,都不行。。
  • 在网上找了完整的单独的HAProxy配置之后对HAProxy有了一个初步的概念(虽然多年以前将LVSHAProxyNginx摸得烂熟,但是多年不用还是忘记了)。
  • 同时发现一个奇怪的现象:在marathon-lb启动之后,有的时候/marathon-lb/haproxy.cfg是存在的,有的时候又不存在。多尝试几次并结合marathon-lb的日志发现这里存在这样一种机制:marathon里的应用在启动(或更新重启)之后,marathon-lb会自动检测应用的新配置,并与老配置进行对比,如果有变化就会更新/marathon-lb/haproxy.cfg并重启。当应用中有错误的配置时候,就无法生成/marathon-lb/haproxy.cfg。比如我一开始设置label中的HAPROXY_0_MODEhttps(一开始是http,我以为修改成https就会从443端口走了),日志中就报错,https这个模式是错误的。查找官方文档后发现http这个模式可以处理httphttps的请求,那么问题还不在这里。同时发现另一个问题,我在label中配置了"HAPROXY_0_SSL_CERT": "/data/nginx/certs/214997784440115.pem",但是marathon-lb说这个文件不存在,心里咯噔一下,有戏。。文件不存在那让它存在就好了。之前已经在marathon-lb中配置了volume的映射,将几个证书的文件映射到了marathon-lb的内部(我使用了相同的路径名称),检查后发现早上在测试时候我将21xxx.pem命名为了cert.pemHAProxy默认会去找/etc/ssl/cert.pem,我将pem改了文件名并拷贝了过去),于是乎将pem文件名字改回来,重启marathon-lb发现文件是找到了,但是有新的报错,如下:
    1.png
  • 可以看到说是priveate key找不到,但是我记得这是在key文件里头的,于是又在应用的HAPROXY_0_SSL_CERT中将文件改为21xxx.key,这下又有了新的报错:
    2.png
  • 这下说明他丫的公私两个文件都要,那么整个证书的配置确实是在这边处理就好了,想办法把两个文件都配置进去,写成了“21xxx.pem,21xxx.key”,但是这个格式还是有点问题:
    3.png
  • 没办法,只能放大招。。将key文件里头的东西拷贝粘贴到pem文件后头,启动成功!
  • 到这里为止,HAProxy的证书算是配置完成了,但是发现还是有点问题,生成的haproxy.cfg中一直监听10101端口,检查应用的配置后发现portDefinitions段中ports端口设置成了10101,于是将它改为0,重启后访问还是有问题。。
  • 回想到haproxy.cfg中的listen字段,再细想一下浏览器的请求,浏览器的https协议默认的是443端口,那么只要HAProxy没有指定443端口,证书就依旧无法生效。所以将ports改为443,重启后发现一切OK了。。
  • 接下来还可以做一个测试,将应用的Nginx修改为只监听80的普通http,然后应用对外映射80端口,我估计这样也是可行的(还未测试)。。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值