Swift Vapor 服务器进阶-SSL配置

作者 : 开心源码 本文共3807个字,预计阅读时间需要10分钟 发布时间: 2022-05-11 共91人阅读

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配置

发表回复