Swift Vapor 服务器进阶-SSL配置
1,vapor自身也能配置https
但是我没有成功
2,Vapor的SSL配置能通过nginx来完成的
3,Vapor的SSL配置也能通过Apache2来完成
4, vapor服务器的配置及用 https://www.songma.com/p/7ee9f9ac1443
1,硬性需求
1,服务器
2,域名
3,SSL证书
以上三样都是阿里云的,服务器ubuntu linux 16.04系统。尽量都是一个地方的,可以省少量事,这些东西的申请,都有教程,域名必需有,且必需实名认证,由于SSL证书的申请要域名,服务器备案与否不重要,SSL证书有DV类型免费版的。诸位能去看看。笔者花的成本也不高,服务器做活动时99一年,域名买了个垃圾的4块钱,SSL证书免费,总成本也就100来块钱,做学习研究什么的,够使用了。
90B3B0F5233D6EFE545C3CE682C71565.gif
从买域名,而后申请SSL证书,到最后的配置,我花费了有三天时间,其中踩了不少坑,希望可以给大家少量参考,绕过这些坑。也希望大家要有毅力,做技术要迎难而上,最终才可以处理,就是TM的,我日狗日的有点肾虚,先去喝瓶哇哈哈补补。
1.1 服务器
服务器配置好vapor环境,可以够运行起来,让外部访问到你的接口,假如你的服务器没有备案,不要使用80端口,默认的是80端口,所以你的vapor要用其它端口。新的端口,要在阿里云的服务器设置里的安全组里增加下。
1.2 域名
自己随意买个吧,假如你的SSL是要使用免费的,买一个就行了,由于只可以单域名。域名要实名认证,而后解析到你的服务器,这一步相当于域名与你的服务器绑定,能通过域名访问到你的服务器。其实域名是申请SSL证书所需要的,自己使用的时候IP和域名都行。
1.3 SSL证书
在阿里云的安全服务里,有SSL证书选项,点进去,里面有很多类型,大部分都是收费的。选择DV类型,下面有个免费的。
屏幕快照 2018-06-19 17.41.53.png
后面的按照教程走吧,SSL申请必需要有域名,申请时,必需在域名解析中增加一条TXT类型的解析,假如你的SSL证书和域名是同一平台的,能让他自动增加一条对应的解析。信息添对大概几个小时就申请下来了。
2,SSL配置
深坑
vapor服务器内部尽管有相关SSL配置内容,但是坑大太,我是没填平。先说说vapor内部的配置方法。
屏幕快照 2018-06-19 17.46.59.png
2.1vapor里有一个server.json文件,里面是配置端口什么的,这里有一个secrityLayer字段,我查看内部源码发现假如它是none的话,走的是http,假如是tls的话,走的是https,所以第一步是把这个字段改为tls
2.2查看官方文档http里的内容,能看到tls的东西
https://docs.vapor.codes/2.0/http/server/
Verify
Verificiation of hosts and certificates can be disabled. They are enabled by default.
能禁使用主机和证书的验证。它们默认启使用。
"tls": { "verifyHost": false, "verifyCertificates": false}
Certificates
"tls": { "certificates": "none"}
Chain
"tls": { "certificates": "chain", "chainFile": "/path/to/chainfile"}
Files
"tls": { "certificates": "files", "certificateFile": "/path/to/cert.pem", "privateKeyFile": "/path/to/key.pem"}
Certificate Authority
"tls": { "certificates": "ca"}
Signature
"tls": { "signature": "selfSigned"}
Signed File
"tls": { "signature": "signedFile", "caCertificateFile": "/path/to/file"}
Signed Directory
"tls": { "signature": "signedDirectory", "caCertificateDirectory": "/path/to/dir"}
这是啥,这TM都是啥,懵逼,一脸的蒙蔽,大爷的。
幸亏下面还有一个例子
Example
Here is an example server.json
file using certificate files with a self signed signature and host verification redundantly set to true
.
下面是一个示例:’Server .JSON’文件,它用具备自签名签名的证书文件,并将主机验证冗余设置为“true”。
{ "port": "8443", "host": "0.0.0.0", "securityLayer": "tls", "tls": { "verifyHost": true, "certificates": "files", "certificateFile": "/vapor/certs/cert.pem", "privateKeyFile": "/vapor/certs/key.pem", "signature": "selfSigned" }}
对,就是这个例子,两个都是pm。
顺带一下我配置遇到的问题吧,两个pem文件其实是一个pem,一个key文件,笔者配置上也运行起来了,https也可以访问了,但是当接口出错时,服务器的socket链接就会中断。这个问题还在研究中。
屏幕快照 2018-06-19 18.20.48.png
你TM告诉我SSL证书里,哪个类型的有两个pm,阿帕奇,nginx,IIS的,还是其它的?瞎几把搞,试了一天,翻资料翻的手指疼,失败了。哪位大佬搞明白了,能给我留言,在此不胜感激。
5028BF0B9B362F6F06EFC8D711DF6B46.gif
没办法,接着日狗,继续看官方文档,有道在手,我这英语八级的,怕个球。有猫腻,这最后一句啥意思啊。
屏幕快照 2018-06-19 18.23.28.png
翻译了一下:强烈建议您在生产中用NGIX背后的vapor项目。在部署NGIX部分中阅读更多内容。
几个意思啊?需要nginx?,deploy Nginx这玩意能点,点一下。于是我发现了新天地。这时候我就要骂娘了。尼玛啊,能通过nginx映射到自己的vapor服务器上,你不弄的醒目点,害得我日了一天狗。
文档链接 https://docs.vapor.codes/2.0/deploy/nginx/
用nginx映射自己的vapor的原理。盗的官方图
5d9d588a-a738-11e6-91fe-28c3a4f7e46b.png
好了,下一步,在服务器上配置nginx吧,linux系统的服务器,配置教程很多,大家自行百度,可以配置好最好,假如配置不好,不妨看看我的处理方法。
linux上配置坑还是比较多的,我配了老半天也没成功,三天时间,基本上都是在这些事上消耗了,建议大家找一个后端老手带着你弄。兵行险招,我在mac上配置了nginx,并且启动成功,在mac上配置简单的太多了,找到 usr/local/ect里的nginx文件夹,整套上传到服务器,完美。
Mac下配置nginx https://blog.csdn.net/zjuwwj/article/details/72773704
nginx的SSL配置
看一下nginx的SSL证书,就两个一个点pm文件,一个点key文件
把你的pm和key文件上传到服务器,记住路径。
找到nginx.conf文件,编辑他,在里面的HTTPS Service里,按照下面格式填写。
server { //端口号 listen 8181 ssl; server_name localhost; //pm 文件路径 ssl_certificate /path/xxx.pem; //key文件路径 ssl_certificate_key /path/xxx.key;ssl_session_cache shared:SSL:1m;ssl_session_timeout 5m;ssl_ciphers HIGH:!aNULL:!MD5;ssl_prefer_server_ciphers on;//vapor服务器Public文件的路径root /path/项目文件夹/Public/;location / { root html; index index.html index.htm; //vapor 服务器的地址+端口号 proxy_pass http://127.0.0.1:8081; } } include servers/*;}
而后启动,测试,从此日完狗了。
注意:nginx和vapor是两个服务器,但是端口号是唯一的,所以他俩不可以使用同一个端口号,假如你的服务器没有备案8080,443端口,都不要使用。
我的服务器中的一个链接,给大家看一下
https://chongbaoer.cn:8181/BRService/getAnimalInfo?infoid=1
转载请署名并附上原文链接,谢谢
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » Swift Vapor 服务器进阶-SSL配置