本篇主要讲解与天猫精灵服务器的认证对接:将会在VPS上安装nginx做反向代理,并申请SSL证书以便启用https功能;同时,在本地服务器上部署oauth认证服务,满足与天猫精灵服务器对接的认证需要。
1.VPS部分
1.1nginx反向代理
①安装nginx
1)#apt-get install nginx
会有提示是否安装,按y继续即可
2)在浏览器测试一下访问域名或者IP,看到这个界面已经正常安装
3)#vi /etc/nginx/sites-enabled/default
编辑配置文件
4)代理https访问家用服务器
配置文件末位加入,依然注意修改对应的域名以及IP
1 | server { |
5)代理http访问家用服务器(可省略)
如果想做80的代理,可以如下进行设置。配置文件已经有80 http服务器的设置了,修改server _name、location的内容。
i修改前
ii修改后
1 | server { |
1.2.申请SSL证书
我们申请Let’s Encrypt的SSL证书,有自动化申请脚本,虽然有效期只有90天,不过到期我们再执行一下一次脚本就行了。
1)#git clone https://github.com/letsencrypt/letsencrypt
下载
Tips:要注意一下当前的安装目录,#pwd可以查看,后续还需要到该目录执行一遍命令来给证书延期
2)#cd cd letsencrypt
进入letsencrpt目录
3)#./letsencrypt-auto -d example.com -d www.example.com
example.com换成你自己的域名
4)脚本执行完后,会在/etc/letsencrypt/live/目录下生成一个example.com命名的目录,里面有相应的证书文件了
Tips:注意检查证书的目录是否与配置enginx设置的证书目录一致
5)#/etc/init.d/nginx reload
重启nginx,正常运行如下
Tips:如有错误提示可以#tail /var/log/syslog查看系统日志看错误原因
2.家用服务器
2.1.启用https
1)#a2enmod ssl
启用apache2的ssl配置
Tips:这条命令相当于
sudo ln -s /etc/apache2/mods-available/ssl.load /etc/apache2/mods-enabled
sudo ln -s /etc/apache2/mods-available/ssl.conf /etc/apache2/mods-enabled
2)#ln -s /etc/apache2/sites-available/default-ssl.conf /etc/apache2/sites-enabled
加入ssl站点的配置
Tips:Ubuntu安装LAMP套件,apache2已自带证书了,default-ssl.conf里面也设置好,直接就可以使用。也可以自己用openssl重新生成自签证书,在default-ssl.conf设置新生成的证书。
3)#service apache2 restart
重启生效。
4)这时,在浏览器使用https://www.你的域名 进行访问,可以看到apache2的页面,说明已经成功访问到家用服务器了。
2.2.oauth认证服服务
oauth认证流程如下,我们将会使用三个php来实现相关功能:server.php(oauth服务器配置,为后面两个php提供环境)、authorize.php(认证页面,A、B、C步骤)、token.php(认证client,生成toke,D步骤n)。
①下载oauth2
1)#cd /var/www
准备把oauth2安装到该目录
Tips:看别的教程是放在/var/www/html,该目录外部可以访问,感觉会有风险
2)#git clone https://github.com/bshaffer/oauth2-server-php.git -b master
下载oauth2基础环境包
②配置数据库
1)#mysql -u root -p
会要求输入密码,这个是在安装Ubuntu时候有要求设置的
2)>create database oauth;
创建一个名为oauth的数据库
3)>use oauth;
进入数据库
4)建表,直接复制运行以下代码即可。
1 | CREATE TABLE oauth_clients ( |
5)>show tables;
检查一下是否成功建表
6)>INSERT INTO oauth_clients (client_id, client_secret, redirect_uri) VALUES("smzdm","smzdm","https://open.bot.tmall.com/oauth/callback");
插入一条认证客户端需记录,我这id和密码都是smzdm。记住这个,迟点会在天猫精灵开发者平台进行配置。
6)>grant all on oauth.* to 'oauth'@'localhost' identified by 'password';
创建一个oauth的用户,可以使用oauth数据库,本地登陆使用
7)>flush privileges;
使用户生效
8)>exit
退出mysql
③新建php页面
1)#cd /var/www/html
进入网站根目录
2)#vi server.php
内容复制相应附件的内容即可,红圈地方是可能变化的地方
3)类似地创建好token.php、authorize.php
④天猫精灵开发者平台配置
1)打开网址https://open.bot.tmall.com/,右上角登陆平台
2)添加一个新技能
3)技能类型选智能家居,其它随便填,下一步
4)填写好保存,继续下一步
5)点击按钮开始测试,然后点账户配置
6)可以看到authorize.php的提示页面
Tips:在authorize.php里修改提示信息,随你喜欢改成中文
7)点击yes,有如下信息返回说明成功认证。
附1:下载
- php文件(提取码: 7u1f)