Beame.io SDK为我们提供了一些易于使用的工具,它可以在没有公共IP地址的情况下访问设备,还特别为设备提供了SSL证书。有了它们的帮助,我们可以轻松而快速地获得公开可信的证书,并在需要的时候使用它们。
以前,你可以在没有任何网络配置的情况下部署一种服务,而现在,你可以在没有DMZ的情况下掌管一个公共服务器。
跟其他使用HTTPS的网站一样,它的证书是由一个公开受信任的CA签署的。
你将会得到:
1.一个Beame域内的主机名(证书上的通用名称)。
2.一个与之匹配的证书。
当然了,这个证书与你的设备上本地生成的私钥是相匹配的。
你使用Beame SDK创建的凭证也可以用于服务器中的TLS,或其他类似的内容,例如身份验证和加密。
Beame.io provisioning用于提供证书。
入门的方法
1.通过运行npm install -g beame-sdk安装Beame.io SDK
2.作为一名开发人员进行登记。
3.从电子邮件中复制命令,应该是这样的: beame creds createDeveloper –developerFqdn ndfxfyerylk6uvra.v1.beameio.net –uid 1d138bfc-4a37-48e7-a60d-0190037fda5f
4.运行beame servers startFirstBeameNode,输出的内容应该是这样: Server started on https://fdddr5ggsyzhk6m8.v1.r.p.edge.eu-central-1b-1.v1.p.beameio.net this is a publicly accessible address,这是一个可以公开访问的地址。
5.我们的演示有两个特性:聊天和文件服务器。(1)想要进行聊天的话,你只需要将URL复制到浏览器中。(2)打开url /shared ie. https://fdff……beameio.net/shared就能使用文件共享功能。
Beame.io为你提供了一种隧道服务
即使你的服务器没有可路由的IP,我们的隧道服务器(edge服务器)依然允许将流量路由到你的服务器。
Beame.io的网络图
请注意,下面的图片是用来展示这种服务的运作方式的。重要的是要明白Beame SSL代理是“透明”的,数据在经过时并没有碰到它们。
使用Beame.io SDK的步骤
在进行了以下步骤之后,你会得到一个Beame域内的主机名,还有一个相匹配的公开可信的x509证书。证书的密钥在你的电脑上生成并且进行存储,这些密钥会一直在你的电脑上(除非你故意输出它们)。
1.以开发者的身份创建一个atom(应用程序)
2.在atom内创建一个edge client(用户服务器)
3.查看完整的复制粘贴的示例
在这一时候你可以进行下列操作:
•用公开可信的x509证书运行一个服务器(即edge client)
•用你的任意一个证书签署任意的数据
•检查数据的签名
•加密数据,从而只有一个指定的实体可以解密
•为发送给自己的数据解密
Beame.io SDK Bash shell
Bash completion可用时, 运行beame以查看指令。
如果当前的shell版本不支持自动补全,请遵循下面的说明(主要是与MacOS有关):
首先,确保您的bash版本是4.3或更高的版本(echo $ BASH_VERSION)。如果不是,请尽快升级。然后,通过新的bash版本,用下面的片段取代4.3.46:
brew update && brew install bash
添加新shell到可用的shell中:
sudo bash -c 'echo /usr/local/Cellar/bash/4.3.46/bin/bash >> /etc/shells'
更改为新的shell:
chsh – s /usr/local/Cellar/bash/4.3.46/bin/bash
打开新终端并运行:
brew tap homebrew/versions
brew rm bash-completion
brew install bash-completion2
在.bashrc文件中添加以下的指令(如果你的主目录中没有.bash_profile,请创建一个)。
if [ -f $(brew –prefix)/share/bash-completion/bash_completion ]; then
. $(brew –prefix)/share/bash-completion/bash_completion
fi
source /usr/local/lib/node_modules/beame-sdk/src/cli/completion.sh
打开新终端,并通过自动补全来使用beame-sdk cli。
Beame.io SDK环境变量
• BEAME_DIR (默认为~/.beame)——Beame.io SDK数据目录——所有已创建的凭证
Beame.io SDK数据目录
Beame数据文件夹的结构是一种实现细节。你不应该直接使用它,而是使用现有的API或CLI来存储和检索数据。
Beame.io CLI
如果你已经完成了上面的“入门方法”中的内容,就可以开始应用下面的所有内容了。在任何时刻,只要有了beame-sdk,你可以看到当前你拥有的所有凭证: beame creds show
Beame.io CLI –凭证
以下的命令用于获取和操作这些证书:
• beame creds list [–type {developer|atom|edgeclient}] [–fqdn fqdn] [–format {text|json}]——列出证书
• beame creds show [–type {developer|atom|edgeclient}] [–fqdn fqdn] [–format {text|json}]——显示证书详细信息
•beame creds createAtom –developerFqdn developerFqdn –atomName atomName [–format {text|json}]——在当前开发人员处创建Atom实体
•beame creds createEdgeClient –atomFqdn atomFqdn [–format {text|json}]——使用给定的atom创建edgeclient实体
• beame creds renew [–type {developer|atom|edgeclient}] [–fqdn fqdn]
• beame creds purge [–type {developer|atom|edgeclient}] [–fqdn fqdn]
Beame.io CLI –运行测试服务器
• beame servers HttpsServerTestStart –edgeClientFqdn edgeClientFqdn——使用指定的主机名运行一个HTTPS服务器
Beame.io CLI –加密
• beame crypto encrypt [–data data] [–fqdn fqdn] ——加密给定的数据,只有所有者指定的实体能够解密。
•beame crypto decrypt [–fqdn fqdn] [–data data]——解密数据,你必须是给定的实体。
•beame crypto sign [–data data] [–fqdn fqdn] ——作为特定的实体为给定的数据签名。
•beame crypto checkSignature [–fqdn fqdn] [–data data] –signature signature——验证签名的正确性。
Beame.io NodeJS API
Node.js SDK API的理念是,你可以在自己的Node.js项目上使用Beame.io CLI。
你可以获得一个公众信任证书和一个伪随机可路由的主机名,然后在同一个流中运行你的新SSL服务器。
当前的SDK版本致力于更广泛的CLI使用,所以Node.js API提供的是一种高水平的访问。
请注意, 每个级别的API都需要创建在更高层次上的凭证:
使用beame-sdk中的API:
var beameSDK = require ("beame-sdk");
atom级命令
需要开发人员证书(开发者fqdn /主机名)+ atomName(应用程序名称)
以当前开发人员的身份创建新的atom:
beameSDK.creds.createAtom(devHostname, atomName, amount, function(data){//amount – number of atoms to create
//atom level hostname returned in: <data.hostname>
});
edgeclient级命令
需要atom凭证(atomfqdn /主机名)和atomHostName。
用目前的atom创建新的edgeclient:
beameSDK.creds.createEdgeClient(atomHostname, amount, function(data){//amount – number of edgeClient to create
//edge level hostname returned in: <data.hostname>
});
Beame-sdk提供了一个示例https服务器,允许Beame客户建立和运行一个功能性的https服务器,并且这个过程需要使用在上述步骤中创建的凭证。
通过以下命令,可以使用输出环境变量“BEAME_PROJ_YOURPROJECTNAME ”和edge-client-hostname(edgeClientFqdn)的值创建你的服务器:
var BeameServer = beameSDK.BaseHttpsServer.SampleBeameServer(host, PROJECT_NAME, appExpress,
function (data, app) {
//your code
});
输入的参数:
* host – edge主机名(如果你使用环境变量就不需要这个了)。
* PROJECT_NAME ——环境变量的名称,包含edgeClient主机名(如果你在第一个参数中提供了完整的主机名,就不需要这个)。
* appExpress——表达对象。如果你不需要在应用程序中表达,那就跳过。
* function(data,app) {}——返回给应用程序,创建http对象。
凭证创建和https服务器运行的复制粘贴示例
在运行下面的代码之前所需的步骤:
1.用首选的软件创建web页面。
2.将新的web页面存储在public文件夹内,放置在将来的web服务器的目录清单中。
3.在项目目录中运行npm init(输入npm要求的所有选项)。
4.在同一位置安装npm install beame-sdk –save。
5. 通过npm install express –save安装表达包。
6.创建 index.js,并将下面这个代码复制粘贴到其中。
"use strict";
var beameSDK = require ("beame-sdk");
var express = require('express');
var devHostname = "put-here-Hostname-you-got-when-creating-developer";
var appName = "MyBeameTestServer";
var appExpress = express();
var edgeHostname;
appExpress.use(express.static(__dirname + '/public'));
var runTestBeameServer = function(){
beameSDK.BaseHttpsServer.SampleBeameServer(edgeHostname, null, appExpress, function (data, app) {
console.log('Server started on: https://'+edgeHostname);
appExpress.get('/', function(req, res) {
res.sendFile(path.join(__dirname + '/index.html'));
});
// process http events here with <app> if needed
});
};
beameSDK.creds.createAtom(devHostname,appName, 1, function(data){
console.log('Just created atom with host:'+data.hostname);
beameSDK.creds.createEdgeClient(data.hostname, 1, function(edgeData){
edgeHostname = edgeData.hostname;
console.log('Congrats! My new hostname is: '+ edgeHostname);
setTimeout(runTestBeameServer, 2000);//JIC – wait dns to update
});
});
1.用节点index.js运行它
2.在控制台输出时,您将看到这样的内容:
Server started on:https://h3a6ipg1jz95x35n.v1.r.p.edge.eu-central-1b-1.v1.p.beameio.net { Hostname: 'h3a6ipg1jz95x35n.v1.r.p.edge.eu-central-1b-1.v1.p.beameio.net' }
3.打开web浏览器, 通过复制控制台输出中的https://hostname,它会指向你的新安全web服务器。
这样,你就拥有运行在本地计算机上的、属于你自己的https服务器了,可以从世界上任何地方进入。
https服务器的复制粘贴示例
下面的代码片段实际上是上面的大型代码的一部分。所以它要求所有需要安装的东西(npm/express/beame-sdk/placing-html-files-in-public-folder)在运行之前准备好。
为了看到你已经创建的凭证, 需要在终端使用beame creds list。主机名已经在已命名的edgeclient中列出,你需要将它提供给SampleBeameServer。
"use strict";
var beameSDK = require ("beame-sdk");
var express = require('express');
var appExpress = express();
var hostname = "h3a6ipg1jz95x35n.v1.r.p.edge.eu-central-1b-1.v1.p.beameio.net";
appExpress.use(express.static(__dirname + '/public'));
var runTestBeameServer = function(){
beameSDK.BaseHttpsServer.SampleBeameServer(hostname, null, appExpress, function (data, app) {
console.log('Server started on: https://'+hostname);
});
};
runTestBeameServer();