起因
这几天因为一些原因我从CentOS迁移到了Ubuntu,在我重装宝塔面板后当我想要开启那个ssl双向认证的时候发现:欸?之前的宝塔ssl站点去哪里了?以前我ssl双向认证的方式是通过修改面板nginx配置(ssl_verify_client和ssl_client_certificate)实现的,然而我发现最新版本的宝塔面板已经不再使用nginx作为ssl支持(找了一晚上才发现换了实现方式),难道ssl双向认证真的就只能用官方那个插件完成了吗,哈哈根本不可能,钱我是一分都不会掏的,秉承着省钱的理念开始了整活之旅~
过程以及思路
W:先备份你的文件再去操作!!!
W:先备份你的文件再去操作!!!
W:先备份你的文件再去操作!!!
因为最新版本不再使用nginx所以需要找出真正监听端口的程序:
使用lsof -i:<Bt-port>
可以看到宝塔面板实际是由一个BT-Panel进程来提供服务的,而这个文件就在/www/server/panel/BT-Panel这个位置,这个文件是一个没有加密的Python文件
通过分析代码发现WebServer是由WSGIServer来实现
其中代码明确指出了ssl相关的参数:ssl_context
顺藤摸瓜,找到了ssl双向认证相关配置
能确定是这些代码的原因是bt的开发人员写了几行注释,而且正常ssl用不到吊销列表
修改代码:
crlfile = '你的吊销列表路径'
rootcafile = '你的根证书路径'
没有相关文件的可以通过这篇教程来实现:传送门
修改完成后还有一个变量需要修改:is_ssl_verify
is_ssl_verify = os.path.exists('/www/server/panel/data/ssl_verify_data.pl')
if is_ssl_verify:
可以看到变量is_ssl_verify是通过判断/www/server/panel/data/ssl_verify_data.pl这个文件是否存在来赋值的,我们可以通过修改
is_ssl_verify = True
或者创建/www/server/panel/data/ssl_verify_data.pl这个文件来开启ssl认证功能
全部修改完成后保存文件在终端输入/etc/init.d/bt reload来重载面板,出现:
Reload Bt-Panel.. done
即代表成功,这时候在浏览器刷新面板界面就会发现已经有ssl双向认证
不懂这个功能是干什么的请不要乱搞,出事本人概不负责
仅供参考和学习使用,如侵权请联系我
转载请注明出处