Swift Vapor 服务器进阶-SSL配置

1,vapor自身也可以配置https

但是我没有成功

2,Vapor的SSL配置可以通过nginx来完成的

3,Vapor的SSL配置也可以通过Apache2来完成

4, vapor服务器的配置及使用 https://www.jianshu.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/BRService/getAnimalInfo?infoid=1

转载请署名并附上原文链接,谢谢

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 156,907评论 4 360
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,546评论 1 289
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 106,705评论 0 238
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,624评论 0 203
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 51,940评论 3 285
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,371评论 1 210
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,672评论 2 310
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,396评论 0 195
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,069评论 1 238
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,350评论 2 242
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,876评论 1 256
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,243评论 2 251
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,847评论 3 231
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,004评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,755评论 0 192
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,378评论 2 269
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,266评论 2 259

推荐阅读更多精彩内容