HanDs
管理员

无需公网IP就可以访问设备的Beame.io SDK 





学习中请遵循国家相关法律法规,黑客不作恶。没有网络安全就没有国家安全

本站需要登陆后才能查看

  以前,你可以在没有任何网络配置的情况下部署一种服务,而现在,你可以在没有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代理是“透明”的,数据在经过时并没有碰到它们。

  

http://www.77169.com/news/UploadFiles_2143/201607/20160730083720586.png

  使用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:

  });

  edgeclient级命令

  需要atom凭证(atomfqdn /主机名)和atomHostName。

  用目前的atom创建新的edgeclient:

  beameSDK.creds.createEdgeClient(atomHostname, amount, function(data){//amount - number of edgeClient to create

  //edge level hostname returned in:

  });

  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 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();


学习中请遵守法律法规,本网站内容均来自于互联网,本网站不负担法律责任
无需
#1楼
发帖时间:2016-7-31   |   查看数:0   |   回复数:0
游客组
快速回复