HanDs
管理员

无需公网IP就可以访问设备的Beame.io SDK - 安全客 - 有思想的安全新媒体 





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

本站需要登陆后才能查看


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代理是“透明”的,数据在经过时并没有碰到它们。

 

http://p3.qhimg.com/t01534ff04890bf3715.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: <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();

 


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