在前一篇文章中,我给小伙伴们介绍了 OpenLiteSpeed
(以下简称 OLS
) 的基础安装以及使用方法,简单易上手,基本上不用手动编辑配置文件。
参考文章:《用 Laravel 吗,从 Nginx 切换到 OpenLiteSpeed 的那种》
链接:https://www.sysadm.cc/index.php/webxuexi/810-give-up-nginx-then-using-laravel-with-openlitespeed
看过之前的这篇文章,就算是小白也可以轻松入门(我就是这么入门的)。
不过文章最后我们留了一个扣,就是如何才能让 OLS
支持 SSL
的问题,现在还果奔 http
的应该不多见了吧?
网络传输涉及到安全问题,所以现在绝大部分网站的网址都冠以 https
。
有了 https
加持,你就会看到网址前多了一把小锁,也就说明连接是安全的。
OLS
官网的知识库中的确有相关设置 SSL
的内容,但似乎又太过于简略,需要重点说明的却一笔带过。
官网知识库链接:https://openlitespeed.org/kb/ssl-setup/
本着为人民服务的宗旨,发挥一不怕死、二不怕苦的老一辈的奋斗精神,我按照知识库文章中的介绍,初步实现了在监听器上支持 SSL
的目标。
这里事先说明一下,因为像 Let's Encrypt
之类的互联网证书如何设定的教程网上有大把,所以本文仅仅拿如何导入自签名证书来做演示。
只不过之后在虚拟主机的设定上又遇到了一个坑,浪费了不少时间。
具体是什么坑呢,请听我慢慢道来。
一、安装 OpenSSL
工具
工欲善其事,必先利其器。
生成我们所需的密钥和证书文件,通常会用到 OpenSSL
这款神器。
在这儿我准备给小伙伴们介绍一下 OpenSSL for Windows
。
手头上没有 Linux
的小伙伴们不用急,这个是可以在 Windows
下使用的哦!
OpenSSL
是在 Linux
下经常被使用的常用于通讯加密的开源加密软件,但早先在 Windows
下好像并没有它的身影。
还好总有些爱好者,他们组织在一起开发了 OpenSSL for Windows
,终于在 Windows
下我们也可以用上 OpenSSL
了。
不过吧其网站有点怪怪的,不知道为啥它并不是 https
开头的。
产品链接页面:http://slproweb.com/products/Win32OpenSSL.html
打开产品链接,你可以找到最新版本的 OpenSSL for Windows
下载,分为轻量版和32/64位版。
一般轻量版的就够用了,我选择了最靠前的一个。
备用下载:Win64OpenSSL_Light-1_1_1j.exe (3.54M)
下载链接:https://www.90pan.com/b2354310
提取码:

★扫码关注公众号, 发送【000814】获取阅读密码
<文章ID:000814>
下载完成后开始安装,最初它会提示你系统中没有安装 Microsoft Visual C++ 2017 Redistributables
。
如果你点是,它会帮你下载,但只有上帝才知道它什么时候能下载完,微软的速度你懂的。
所以我找到了以前安装 WampServer
时用到的组件包,其中就有这个版本的组件。
当然,OpenSSL
是64位的自然所需64位的组件,不过我这32位的也有,就打包放一起吧。
备用下载:Visual C++ Redistributable Packages for Visual Studio 2017.7z (19.6M)
下载链接:https://www.90pan.com/b2354295
提取码:

★扫码关注公众号, 发送【000814】获取阅读密码
<文章ID:000814>
装完组件,继续安装 OpenSSL for Windows
。
中间有询问你将动态链接库放在哪儿合适的提问,你要是无所谓那就默认放在 Windows
系统文件夹中,要是有强迫症,那就选择和执行文件放一起,其实都可以正常使用。
正像安装进程最后那幅画面提示的那样,爱好者组织看上去非常渴望被捐助。
这也可以从前面那张协议窗口的文本中窥见一斑,爱好者组织对白嫖者虽说不上痛恨,但却抱着嗤之以鼻的态度。
在此也顺便呼吁一下小伙伴们,如果你的确从中受益,即便不予以金钱,但也请表达一下你的支持,比如关注、点赞、分享、外加在看,顺手也关注一把@网管小贾,哈哈。
好了,我们完成安装后,建议大家最好将 OpenSSL
的执行目录加到系统路径中。
这样我们就可以开始创建 SSL
证书了。
二、生成用于 HTTPS
的密钥和证书文件
此处用最最最简单的方法来实现,一共三步三条命令来生成自签名证书。
为了便于今后整理和识别,我们以域名为文件名来区分不同的主机。
比如域名为 sysadm.local
,则可以按以下方式生成私钥和证书。
1、生成私钥文件,以 key
为后缀。
# openssl genrsa -out sysadm.local.key 2048
2、以密钥为基础,生成证书请求,以 csr
为后缀。
# openssl req -new -key sysadm.local.key -out sysadm.local.csr
命令执行后的交互内容其实可以任意填写,但有一个地方必须要填写正确,那就是通用名称,一般来讲应该是主机的域名。
3、有私钥,有请求,那么就可以据此生成相应的证书了,以 crt
为后缀。
# openssl x509 -req -days 3650 -in sysadm.local.csr -signkey sysadm.local.key -out sysadm.local.crt
好了,一共生成三个文件,除了请求文件是用于生成证书的过渡文件外,其他两个文件等会儿就要用到了。
- sysadm.local.key 私钥(备用)
- sysadm.local.csr 请求(不用)
- sysadm.local.crt 证书(备用)
三、给监听器设定证书,开启 SSL
找到监听器,在列表中点击监听器名称。
点击右侧编辑按钮,将端口修改成 443
,加密连接修改成 是
。
在 SSL
选项卡中指定私钥和证书路径。
四、映射虚拟主机并测试效果
我们假定这里有两台虚拟主机,并分别对应两个不同的域名。
至于如何建立虚拟主机,小伙伴们可以参考之前我写的文章。
- 一号虚拟主机:www1.sysadm.local
- 二号虚拟主机:www2.sysadm.local
新建好虚拟主机并映射到监听器后,我们就可以开始测试前面设定 SSL
的效果了。
打开浏览器(比如我这用的火狐),输入虚拟主机域名访问,比如:
https://www1.sysadm.local
可以看到网站的确可以访问,只不过那把小锁带了个感叹号。
其实正是由于我们使用的是自签名证书,所以才会有感叹号提示,不过并不影响实际使用。
点击图中那个不安全连接右边的箭头来查看详细情况,可以看到证书的验证者是 SYSADM.CC
。
一切好像都挺顺利哈,不过当你打开第二个虚拟主机站点时,你会发现它的证书信息中的验证者也同样是 SYSADM.CC
。
这两个站点的信息都一样,都是由同一个 SSL
证书提供的加密保护,这有什么好奇怪的吗?
这种情况的确是由于 SSL
证书设定在监听器级别上,所以多个虚拟主机可共用一个证书。
但是,小伙伴们有没有想过,如果是多个虚拟主机,并且它们分别属于不同的组织、不同的站长或不同的域名,那么有可能使用不同的证书吗?
答案是,当然有可能,要不天底下就一个证书,大家都来用不就乱套了。
可是根据 OLS
官网知识库的说明内容,我却无法正常实现以虚拟主机为单位分别给其设定 SSL
证书。
怎么回事?原来这里有个坑!
五、设定虚拟主机级别的 SSL
证书
我删除了监听器上的证书路径,并按官网说明在虚拟主机的 SSL
选项卡上指定了证书路径。
但是被现实结果啪啪打脸,无论我怎么刷新都无法正常加载网页。
调试了N个小时,愣是找不着北,什么鬼,到底问题出在哪儿了呢?
遇事不决问网络,我搜!
没成想就在 OLS
的官方论坛里找到了版主这么一段奇妙的文字。
试着将鸟语翻译过来,大概是这么个意思。
意思是你得先在监听器那儿设定好证书,然后再在虚拟主机上设定证书。
由于虚拟主机级别设定会覆盖监听器级别的设定,之后访问具体站点时,它会自动跳过监听器证书而读取虚拟主机证书。
哦?真的是这样吗?
我按前面介绍的生成证书的步骤,分别为两台虚拟主机生成了各自的私钥和证书文件。
其中,三个步骤中的第二步,我特意将组织名称区分开来。
- www1.sysadm.local 对应 AAAAAAAA
- www2.sysadm.local 对应 BBBBBBBB
然后,注意这里是重点。
首先,将监听器设定好主证书,其实就是按一开始前面所说的做,确保监听器级别下可以通过 HTTPS
访问。
其次,再到各个虚拟主机的 SSL
选项卡中设定各自的子证书。
这些虚拟主机级别的子证书的制作方法和前面的都是一样的,就是那三个步骤,只是为了各自区分,注意域名填写就行了。
OK,全部设定好后别忘记平滑重启。
再来检查一下两个站点的证书信息,这回终于各归各家了。
最后总结
最终我是花了大概两天时间,初步将 OLS
加装了自签名证书,实现了 SSL
加密通讯访问的效果。
使用自签名证书虽然会有警告提示,但通常在局域网内部使用问题不大,有时也用于测试环境,最最重要的是,它不要钱啊。
另外,还在依赖 Windows
下的诸如 WAMP
之类的集成环境的小伙伴们,OLS
作为 WEB 测试环境中的一个比较好的选择,如果你也使用 Linux
那么完全可以考虑上手。
毕竟像 Laravel
之类的框架官方是不太建议在 Windows
下调试开发的。
说到调试开发,那么多的 PHP
版本可以同时工作、来回切换吗?
有机会的话,我会再探究一下 OLS
的 PHP
多版本的安装与切换。
最后的最后,希望小伙伴们表达一下爱心,关注@网管小贾,给走一波点赞、分享和在看吧!
感谢你们哦!
微信公众号 | @网管小贾