首先,介绍下使用背景,我要搭建一个简单的支持https协议的服务器,用来存放访问我的egret游戏项目。我的机器是mac电脑,系统是macOS Big Sur 11.3。我原来的apache服务器可以进行http访问,但是不知此https协议。在网上找了好多都不能用,报错。后来在简书上找到一篇,测试可用。参考链接放在文档下面。
一、搭建Web服务器
Mac有自带Apache服务,所以这里我们只需要简单的在终端中敲击一行命令,就能启动Web服务了。
sudo apachectl start
这时我们在浏览器中输入http://127.0.0.1/
,如果出现It Works!
,那么恭喜你Web服务器启动成功。
Web默认访问的文件目录是:/Library/WebServer/Documents/
,可以打开目录,对 index.html
文件进行编辑修改。
二、自签名证书
1、自签名证书
1)、 新建文件夹
先在桌面创建个CustomSSL
文件夹,用来放生成的私钥证书文件
打开终端cd到CustomSSL文件夹
cd desktop/CustomSSL
2)、 在SSL文件夹中生成私钥
openssl genrsa -out server.key 2048
这样是生成rsa私钥,openssl格式,2048位强度。server.key是密钥文件名
3)、 生成自签名证书
openssl req -new -sha256 -x509 -days 365 -key server.key -out server.crt
req是证书请求的子命令,-sha256表示算法,-x509表示输出证书,-days365 为有效期,此后根据提示输入证书拥有者信息;
其中要输入国家、省份、地区、公司、邮箱等信息,按照个人情况随便填下就行。
但 Common Name
应该与域名保持一致(如我的电脑搭建的服务器IP地址为10.73.20.19
)
2、配置Apache服务器SSL
1)、放入证书
将server.crt
和server.key
两个文件拷贝
放到/etc/apache2/
目录
2)、修改配置文件
- 编辑
/etc/apache2/httpd.conf
文件
搜索下面内容,并去掉注释符号#
LoadModule ssl_module libexec/apache2/mod_ssl.so Include /private/etc/apache2/extra/httpd-vhosts.conf Include /private/etc/apache2/extra/httpd-ssl.conf LoadModule socache_shmcb_module libexec/apache2/mod_socache_shmcb.so
- 打开
/etc/apache2/extra/httpd-ssl.conf
文件
去掉以下两项注释并检查是否与之前安装私钥和证书的路径一致
SSLCertificateFile "/private/etc/apache2/server.crt" SSLCertificateKeyFile "/private/etc/apache2/server.key"
- 编辑
/etc/apache2/extra/httpd-vhosts.conf
文件
在 <VirtualHost *:80> .....</VirtualHost>
后面添加一段如下内容:
<VirtualHost *:443> SSLEngine on SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL SSLCertificateFile /private/etc/apache2/server.crt SSLCertificateKeyFile /private/etc/apache2/server.key ServerName 10.73.20.19 DocumentRoot "/Library/WebServer/Documents" </VirtualHost>
注意 ServerName
填写域名与所需访问一致
3)、重启服务器
sudo apachectl restart
访问 https://10.73.20.19/
提示不安全什么的(因为自己的证书没添加到浏览器信任列表),继续访问
HTTPS可以用啦!此处应有掌声????????