如何使用openssl s_server搭建可测试Web应用的简易HTTPS服务器?
如何使用openssl s_server搭建可测试Web应用的简易HTTPS服务器?
嗨,我来帮你搞定这个问题!看你已经成功生成了自签名证书,也启动了OpenSSL的HTTPS服务器,但打开浏览器看到的是状态页而不是你的Web应用内容,对吧?问题其实出在启动命令的一个小细节上,我给你梳理下正确的操作步骤:
一、你已经做对的步骤(证书生成)
首先要夸夸你,生成自签名证书的命令完全没问题:
openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 365 -nodes
这条命令生成了有效期1年的密钥和证书,-nodes参数让密钥不加密,正好适合测试场景用,不用每次启动都输密码。
二、修正服务器启动命令(核心问题)
你之前用了小写的-www参数,这个参数的作用是让openssl s_server显示它内置的状态页面,而不是加载你的Web应用文件!要让它服务你的静态Web内容,只需要把参数改成**大写的-WWW**就行:
场景1:当前终端已经在Web应用的根目录下
直接执行这条命令:
openssl s_server -key key.pem -cert cert.pem -accept 4433 -WWW
启动后终端会显示ACCEPT,说明服务器已经在监听请求了。
场景2:Web应用在其他路径,不想切换目录
如果你的Web应用根目录是/path/to/app/,并且你的OpenSSL版本是1.1.0及以上,可以用-directory参数直接指定根目录:
openssl s_server -key key.pem -cert cert.pem -accept 4433 -WWW -directory /path/to/app/
三、测试访问
用浏览器打开https://你的服务器IP:4433/(比如你之前用的https://192.168.2.122:4433/),处理完浏览器的自签名证书警告(测试环境下直接选择继续访问即可),就能看到你的Web应用内容了!
额外小提示
如果你需要测试动态内容(比如PHP),那openssl s_server就不太够用了,因为它只能处理静态文件。这种情况下你可以继续用php -S启动HTTP服务器,再搭配反向代理方案,不过先满足你当前的静态测试需求完全没问题~
备注:内容来源于stack exchange,提问作者AlanQ
相关产品推荐
相关产品推荐

