程序小兵

Hyperledger Composer教程4-安装blockchain explorer

hyperledger explorer是一个简单但功能强大,易于使用,高度维护的开源浏览器,用于查看底层区块链网络上的活动。

目录结构

├── app                    fabric GRPC interface
├── db             the mysql script and help class
├── explorer_client        Web Ui
├── first-network   Basic fabric network setup
├── listener               websocket listener
├── metrics                metrics about tx count per minute and block count per minute
├── service                the service
├── socket         push real time data to front end
├── timer                  Timer to post information periodically  
└── utils                  Various utility scripts

要求

以下是安装和运行超级用户资源管理器所需的软件依赖关系

Hyperledger Composer教程3-安装开发环境

按照这些说明获取Hyperledger Composer开发工具(主要用于创建业务网络)并站起来Hyperledger Fabric(主要用于在本地运行/部署您的业务网络)。请注意,您创建的业务网络也可以部署到其他环境(例如云平台)中的Hyperledger Fabric运行时。

在你开始之前

确保您已按照安装先决条件中的说明安装了必需的前提条件

这些说明假定您尚未安装这些工具并在以前使用过。如果不是这种情况,那么在开始按照本指南进行操作之前,您可能需要检查以前的设置是否完全被破坏。

为了提供灵活性并支持最大数量的开发,测试和部署场景,Composer作为一组组件提供,您可以使用npmCLI 进行安装和控制。这些说明将告诉你如何安装所有东西,然后如何控制你的开发环境。

Hyperledger Composer教程2-安装前提条件

Ubuntu的

要运行Hyperledger ComposerHyperledger Fabric,我们建议您至少拥有4Gb的内存,而且必须先安装此前提条件。

以下是安装所需开发工具的先决条件:

  • 操作系统:Ubuntu Linux 14.04 / 16.04 LTS(均为64位)Mac OS 10.12
  • Docker引擎:版本17.03或更高
  • Docker-Compose:版本1.8或更高
  • 节点:8.9或更高(注意版本9不支持)
  • npm:v5.x
  • git:2.9.x或更高版本
  • Python:2.7.x
  • 您选择的代码编辑器,我们推荐VSCode

Hyperledger Fabric教程1-Hyperledger Fabric 的简介

Hyperledger Composer是一个广泛的,开放的开发工具集和框架,使开发区块链应用程序更容易。我们的主要目标是加快实现价值的时间,并使区块链应用程序与现有业务系统的集成变得更加容易。您可以使用Composer快速开发用例,并在几周内部署区块链解决方案,而不是几个月。Composer允许您对业务网络进行建模,并将现有系统和数据与区块链应用程序集成。

Hyperledger Composer支持现有的Hyperledger Fabric区块链基础架构和运行时,支持可插入的区块链一致性协议,以确保交易根据指定的业务网络参与者的策略进行验证。

日常应用程序可以使用来自商业网络的数据,为最终用户提供简单和受控的接入点。

Nginx反向代理解决产品不支持JDK1.6版本的解决方案

某个项目在客户对接中,对JDK有要求,因与服务器的通信支持TLS1.1,且只有JDK1.7及以上版本支持TLS1.1,对于客户旧原有的系统不支持TLS1.1的JDK1.6的,存在不兼容问题。为了满足客户接入需求及不更改产品服务通信安全的前提下,引入了代理服务器作为转发节点,解决http->https的转变。从而衍生出,适应于所有接入服务中需要将http->https的转发请求的模式。

前言

本教程通过安装Nginx软件、新建Nginx需要的.crt.key.pem格式的证书,再修改默认的Nginx的配置文件Nginx.conf。如果已经准备好Nginx所需环境及证书,则可直接查看Nginx.conf,具体步骤如下:

  • Nginx安装
    • 安装Zlib
    • 安装Pcre库
    • 安装Openssl
    • 安装Nginx
  • Nginx配置https所需证书
  • Nginx.conf配置文件
    • 解决http->https转化
    • 解决https->http转化

Nginx安装

Nginx依赖以下模块,因此先安装一下依赖库,再最后安装Nginx

  • gzip模块需要zlib
  • rewrite模块需要pcre
  • ssl功能需要openssl

SSL和TLS的技术原理浅谈

背景

程序员小明想给隔壁红写信表白,但是又不想让信件内容被其他人看见,希望只有小红才能看见信件内容,迫不及待的小明的大脑飞快运转起来。

预备基础知识

  • 对称密钥加密(Symmetric Key Cryptography):加密与解密使用相同密钥。对称加密算法的特点是算法公开、计算量小、加密速度快、加密效率高。缺点是交易双方都使用同样钥匙,安全性得不到保证。
  • 非对称密钥加密(Asymmetric Key Cryptography):加密与解密使用不同密钥。非对称加密使用一对秘钥,一个用来加密,一个用来解密,而且公钥是公开的,秘钥是自己保存的,其安全性更好。缺点是加密和解密花费时间长、速度慢,只适合对少量数据进行加密。
  • 哈希算法(Hash Algorithm):又称散列算法,杂凑算法,是一种从任意文件中创造小的数字「指纹」的方法。与指纹一样,散列算法就是一种以较短的信息来保证文件唯一性的标志,这种标志与文件的每一个字节都相关,而且难以找到逆向规律。因此,当原有文件发生改变时,其标志值也会发生改变,从而告诉文件使用者当前的文件已经不是你所需求的文件。

安全HTTPS相关杂谈

所谓的HTTPS(HypertextTransfer Protocol Secure)即安全的HTTP『安全的超文本协议』。HTTPS的安全基础是安全套接层(Secure Sockets Layer,SSL),确保了传统的HTTP以明文传输的被窃取偷窥的风险。HTTP工作在应用层(OSI模型的最高层),SSL协议工作在一个较低的子层,位于TCP/IP协议和HTTP协议之间。在HTTP报文传输前对其加密,并在到达时对其解密。严格地讲,HTTPS并不是一个单独的协议,而是工作在SSL协议上的HTTP协议。在现有的基础上,出现了TLS协议,对SSL进行了扩充,是SSL的继任者,但两者区别不大。

我们之所以采用HTTPS来替换HTTP,主要目的为了建立安全通道、保证数据传输的安全,同时可以通过签名技术确认通信双方的身份。谷歌和苹果2大互联网巨头公司已经放文,全面推广HTTPS协议。在单向认证和双向认证中的区别则是客户端有无证书。客户端与服务端都存在证书者称之为双向认证;仅服务器有证书者,例如HTTPS站点,则为单向认证。

如何确保我们的协议是安全的?

主要的原理类似『数字信封』,基于SSL协议通讯的双方利用非对称加密算法,协商一个用于对称加密的密钥(很难破解的随机数);密钥协商完毕,通讯双方用该密钥对数据进行对称加密,如3DES, AES等等,从而保证的数据的安全。

这里简单说明下什么是公开密钥加密:

公开密钥加密,也叫做『非对称加密』,顾名思义,采用的加密和解密不是用同一个密钥进行密码运算,而是有两个不同的密钥:加密密钥和解密密钥。或者换句更书面化的解释则为:公开密钥『公钥』与私有密钥『私钥』。这2个密钥是数学相关的(通过数学椭圆曲线算法经过一定的数学运算产生的一对具有数学逻辑关联极难被反向破解的一对『数字串』。用户用『公钥』进行加密数据原文后,只能由对应的『私钥』进行解密。当前公开密钥加密有著名的RSA算法及国内与之匹配版本的SM2。

TLS的握手流程-密钥协商与身份认证过程

在安全HTTPS中提及到的密钥协商(安全通讯前的准备工作)中,包含了身份认证和密钥协商2大过程如下,其中SSL协议包含记录协议和握手协议,在握手协议中协商通讯传输的的对称加密密码、压缩算法、加密算法等,具体的步骤如下:

Step1

s客户端往服务器端发ClientHello消息

消息特点:该消息是客户端连接服务器端时发送的第一个消息。

消息构成:

(1). 使用的TLS协议版本。

(2). 随机数;用于计算对称加密时的“主密码”。

(3). 会话ID;重连时有用,可为空。

(4). 加密算法列表;客户端支持的加密算法列表,并按照客户端的偏好从前往后排。

(5). 压缩算法列表;客户端支持的压缩算法列表,并按照客户端的偏好从前往后排。

(6). 扩展信息。

消息作用:用于发起会话、交换随机数、协商加密算法、压缩算法等。

使用nginx反向代码配置网站教程

最近在打造公司网站,由于我没使用想tomcat、weblogic这样的web容器,我网站访问需要带端口才允许访问,例如:localhost:3003,部署到生产上的时候,就需要通过域名www.xxx.com:3003来访问,看起来很变扭,而且对用户来说,3003端口是透明的,因此需要反向代理服务将去路由到指定的端口,用户还是照样访问www.xxx.com网。通过简单的配置,就可以很好的使用Nginx的特征,这点真正的体现Nginx的可用性。

,