最新のOpenSSL 1.1.0シリーズにアップデートする手順を説明する。
# cd /usr/local/src/
# wget https://www.openssl.org/source/openssl-1.1.0g.tar.gz
# tar xvzf openssl-1.1.0g.tar.gz
# cd openssl-1.1.0g/
# ./config -fPIC shared --prefix=/usr
# make
# make install
# openssl version
OpenSSL 1.1.0g 2 Nov 2017
2017年11月14日火曜日
2017年11月12日日曜日
KeycloakをPostgreSQLに対応させる
KeycloakはデフォルトではH2が利用される。
今回は、PostgreSQLを利用するように環境設定を変更する。
前提
・「http://memoyasu.blogspot.jp/2017/11/ssoosskeycloak.html」の手順でKeycloakが動作していること。
・PostgreSQLが動作していること。
・PostgreSQLのログインユーザを作成済みであること。
postgres=# CREATE USER loginuser WITH PASSWORD 'password' CREATEDB;
CREATE ROLE
・「keycloak」というデータベースを作成済みであること。
postgres=# CREATE DATABASE keycloak OWNER loginuser;
CREATE DATABASE
postgres=#
手順
①PostgreSQL用のJDBCドライバをダウンロードする。
今回は「postgresql-9.4.1212.jar」を利用する。
https://jdbc.postgresql.org/download.html
②ドライバJARをモジュールにパッケージ化し、このモジュールをサーバーにインストールする。
「modules\system\layers\keycloak」ディレクトリ配下に「org\postgresql\main」ディレクトリを作成する。
> mkdir modules\system\layers\keycloak\org\postgresql\main
> copy postgresql-9.4.1212.jar modules\system\layers\keycloak\org\postgresql\main
③サーバの設定プロファイルでJDBCドライバを利用するようにする。
「modules\system\layers\keycloak\org\postgresql\main」ディレクトリ配下にmodule.xmlを作成する。
<?xml version="1.0" ?>
<module xmlns="urn:jboss:module:1.3" name="org.postgresql">
<resources>
<resource-root path="postgresql-9.4.1212.jar"/>
</resources>
<dependencies>
<module name="javax.api"/>
<module name="javax.transaction.api"/>
</dependencies>
</module>
➃PostgreSQLのJDBCドライバを使用するようにデータソース設定を変更する。
standaloneモードで動作している場合は「standalone/configuration/standalone.xml」を修正する。
・・・
<datasources>
・・・
<drivers>
<driver name="postgresql" module="org.postgresql"> ★追加
<xa-datasource-class>org.postgresql.xa.PGXADataSource</xa-datasource-class> ★追加
</driver> ★追加
<driver name="h2" module="com.h2database.h2">
<xa-datasource-class>org.h2.jdbcx.JdbcDataSource</xa-datasource-class>
</driver>
</drivers>
</datasources>
・・・
⑤PostgreSQLへの接続パラメータを定義するようにデータソース設定を変更する。
<subsystem xmlns="urn:jboss:domain:datasources:5.0">
<datasources>
・・・
<!-- ★コメントアウト
<datasource jndi-name="java:jboss/datasources/KeycloakDS" pool-name="KeycloakDS" enabled="true" use-java-context="true">
<connection-url>jdbc:h2:${jboss.server.data.dir}/keycloak;AUTO_SERVER=TRUE</connection-url>
<driver>h2</driver>
<security>
<user-name>sa</user-name>
<password>sa</password>
</security>
</datasource>
-->
<datasource jndi-name="java:jboss/datasources/KeycloakDS" pool-name="KeycloakDS" enabled="true" use-java-context="true">
<connection-url>jdbc:postgresql://localhost:5432/keycloak</connection-url>
<driver>postgresql</driver>
<pool>
<max-pool-size>20</max-pool-size>
</pool>
<security>
<user-name>loginuser</user-name>
<password>XXX</password>
</security>
</datasource>
<drivers>
<driver name="postgresql" module="org.postgresql">
<xa-datasource-class>org.postgresql.xa.PGXADataSource</xa-datasource-class>
</driver>
<driver name="h2" module="com.h2database.h2">
<xa-datasource-class>org.h2.jdbcx.JdbcDataSource</xa-datasource-class>
</driver>
</drivers>
</datasources>
</subsystem>
⑥Keycloakを再起動する。
⑦以下のURLにアクセスし、ユーザを作成した後、ログインできることを確認する。
http://localhost:8080/auth/
今回は、PostgreSQLを利用するように環境設定を変更する。
前提
・「http://memoyasu.blogspot.jp/2017/11/ssoosskeycloak.html」の手順でKeycloakが動作していること。
・PostgreSQLが動作していること。
・PostgreSQLのログインユーザを作成済みであること。
postgres=# CREATE USER loginuser WITH PASSWORD 'password' CREATEDB;
CREATE ROLE
・「keycloak」というデータベースを作成済みであること。
postgres=# CREATE DATABASE keycloak OWNER loginuser;
CREATE DATABASE
postgres=#
手順
①PostgreSQL用のJDBCドライバをダウンロードする。
今回は「postgresql-9.4.1212.jar」を利用する。
https://jdbc.postgresql.org/download.html
②ドライバJARをモジュールにパッケージ化し、このモジュールをサーバーにインストールする。
「modules\system\layers\keycloak」ディレクトリ配下に「org\postgresql\main」ディレクトリを作成する。
> mkdir modules\system\layers\keycloak\org\postgresql\main
> copy postgresql-9.4.1212.jar modules\system\layers\keycloak\org\postgresql\main
③サーバの設定プロファイルでJDBCドライバを利用するようにする。
「modules\system\layers\keycloak\org\postgresql\main」ディレクトリ配下にmodule.xmlを作成する。
<?xml version="1.0" ?>
<module xmlns="urn:jboss:module:1.3" name="org.postgresql">
<resources>
<resource-root path="postgresql-9.4.1212.jar"/>
</resources>
<dependencies>
<module name="javax.api"/>
<module name="javax.transaction.api"/>
</dependencies>
</module>
➃PostgreSQLのJDBCドライバを使用するようにデータソース設定を変更する。
standaloneモードで動作している場合は「standalone/configuration/standalone.xml」を修正する。
・・・
<datasources>
・・・
<drivers>
<driver name="postgresql" module="org.postgresql"> ★追加
<xa-datasource-class>org.postgresql.xa.PGXADataSource</xa-datasource-class> ★追加
</driver> ★追加
<driver name="h2" module="com.h2database.h2">
<xa-datasource-class>org.h2.jdbcx.JdbcDataSource</xa-datasource-class>
</driver>
</drivers>
</datasources>
・・・
⑤PostgreSQLへの接続パラメータを定義するようにデータソース設定を変更する。
<subsystem xmlns="urn:jboss:domain:datasources:5.0">
<datasources>
・・・
<!-- ★コメントアウト
<datasource jndi-name="java:jboss/datasources/KeycloakDS" pool-name="KeycloakDS" enabled="true" use-java-context="true">
<connection-url>jdbc:h2:${jboss.server.data.dir}/keycloak;AUTO_SERVER=TRUE</connection-url>
<driver>h2</driver>
<security>
<user-name>sa</user-name>
<password>sa</password>
</security>
</datasource>
-->
<datasource jndi-name="java:jboss/datasources/KeycloakDS" pool-name="KeycloakDS" enabled="true" use-java-context="true">
<connection-url>jdbc:postgresql://localhost:5432/keycloak</connection-url>
<driver>postgresql</driver>
<pool>
<max-pool-size>20</max-pool-size>
</pool>
<security>
<user-name>loginuser</user-name>
<password>XXX</password>
</security>
</datasource>
<drivers>
<driver name="postgresql" module="org.postgresql">
<xa-datasource-class>org.postgresql.xa.PGXADataSource</xa-datasource-class>
</driver>
<driver name="h2" module="com.h2database.h2">
<xa-datasource-class>org.h2.jdbcx.JdbcDataSource</xa-datasource-class>
</driver>
</drivers>
</datasources>
</subsystem>
⑥Keycloakを再起動する。
⑦以下のURLにアクセスし、ユーザを作成した後、ログインできることを確認する。
http://localhost:8080/auth/
<補足>
・PostgreSQLのテーブルを参照し、作成したユーザが表示されることを確認してみる。
keycloak=>
keycloak=> select * from user_entity;
id | email | email_constraint | email_verified | enabled | federation_link | first_name | last_name | realm_id | username | created_timestamp | service_account_client_link | not_before --------------------------------------+-------+--------------------------------------+----------------+---------+-----------------+------------+-----------+----------+----------+-------------------+-----------------------------+------------ 721569fb-860e-4343-98a6-7da4e1810c5e | | 273582fe-df93-4c92-a80d-1dead0c0b192 | f | t | | | | master | test | 1510489536041 | | 0
(1 行)
SSOのOSSである「Keycloak」を動かしてみる
要件
・Java 8 JDK
・RAM: 512MB以上
・ディスク容量: 1GB以上
・データベース:Postgres, MySql, Oracle, etc
★クラスターで運用したい場合はRDBの冗長化が必須。
・Linux OSでインストールする場合、十分なエントロピーを確保するため、/dev/urandomを利用すること。
・Keycloackでは、standaloneモードとクラスターモードをサポートしている。今回はstandaloneモードで起動する。
・standaloneモードで起動すると、バンドルしているWildFlyが起動する。
・デフォルトのDBは、バンドルしているH2が利用される。
インストール手順
①以下のサイトからKeyclockの資材をダウンロードする。
(3.4.0が最新版)
https://downloads.jboss.org/keycloak/3.4.0.Final/keycloak-3.4.0.Final.zip
②「keycloak-3.4.0.Final.zip 」を解凍する。
③keycloakを起動する。
> cd C:\Users\bushidoyasu\Downloads\keycloak-3.4.0.Final\keycloak-3.4.0.Final\bin
> standalone.bat
上記のバッチを実行すると、デフォルトではポート9990で起動する。
➃管理ユーザを作成する。
C:\Users\bushidoyasu\Downloads\keycloak-3.4.0.Final\keycloak-3.4.0.Final\bin>add-user.bat
What type of user do you wish to add?
a) Management User (mgmt-users.properties)
b) Application User (application-users.properties)
(a): a
Enter the details of the new user to add.
Using realm 'ManagementRealm' as discovered from the existing property files.
Username : keycloakadmin
Password recommendations are listed below. To modify these restrictions edit the add-user.properties configuration file.
- The password should be different from the username
- The password should not be one of the following restricted values {root, admin, administrator}
- The password should contain at least 8 characters, 1 alphabetic character(s), 1 digit(s), 1 non-alphanumeric symbol(s)
Password :
Re-enter Password :
What groups do you want this user to belong to? (Please enter a comma separated list, or leave blank for none)[ ]:
About to add user 'keycloakadmin' for realm 'ManagementRealm'
Is this correct yes/no? yes
Added user 'keycloakadmin' to file 'C:\Users\bushidoyasu\Downloads\keycloak-3.4.0.Final\keycloak-3.4.0.Final\standalone\configuration\mgmt-users.properties'
Added user 'keycloakadmin' to file 'C:\Users\bushidoyasu\Downloads\keycloak-3.4.0.Final\keycloak-3.4.0.Final\domain\configuration\mgmt-users.properties'
Added user 'keycloakadmin' with groups to file 'C:\Users\bushidoyasu\Downloads\keycloak-3.4.0.Final\keycloak-3.4.0.Final\standalone\configuration\mgmt-groups.properties'
Added user 'keycloakadmin' with groups to file 'C:\Users\bushidoyasu\Downloads\keycloak-3.4.0.Final\keycloak-3.4.0.Final\domain\configuration\mgmt-groups.properties'
Is this new user going to be used for one AS process to connect to another AS process?
e.g. for a slave host controller connecting to the master or for a Remoting connection for server to server EJB calls.
yes/no? yes
To represent the user add the following to the server-identities definition <secret value="XXX" />
続行するには何かキーを押してください . . .
⑤以下のURLにアクセスすると、BASIC認証が求められる。
http://localhost:9990/console/App.html
BASIC認証に成功すると、以下の管理画面が表示される。
⑥Keycloak用の管理ユーザを作成する。
>add-user-keycloak.bat -u test -p password
Added 'test' to 'C:\Users\bushidoyasu\Downloads\keycloak-3.4.0.Final\keycloak-3.4.0.Final\standalone\configuration\keycloak-add-user.json', restart server to load user
⑦Keycloakを再起動する。
⑧以下のURLにアクセスし、ログインできることを確認する。
<補足>
H2コンソールを起動し、データベースの中身をみてみる。
> java -cp ..\modules\system\layers\base\com\h2database\h2\main\h2-1.4.193.jar org.h2.tools.Server -webAllowOthers
keycloakというデータベースをのぞいてみても、何もテーブルが作られていない。。。
・Java 8 JDK
・RAM: 512MB以上
・ディスク容量: 1GB以上
・データベース:Postgres, MySql, Oracle, etc
★クラスターで運用したい場合はRDBの冗長化が必須。
・Linux OSでインストールする場合、十分なエントロピーを確保するため、/dev/urandomを利用すること。
・Keycloackでは、standaloneモードとクラスターモードをサポートしている。今回はstandaloneモードで起動する。
・standaloneモードで起動すると、バンドルしているWildFlyが起動する。
・デフォルトのDBは、バンドルしているH2が利用される。
インストール手順
①以下のサイトからKeyclockの資材をダウンロードする。
(3.4.0が最新版)
https://downloads.jboss.org/keycloak/3.4.0.Final/keycloak-3.4.0.Final.zip
②「keycloak-3.4.0.Final.zip 」を解凍する。
③keycloakを起動する。
> cd C:\Users\bushidoyasu\Downloads\keycloak-3.4.0.Final\keycloak-3.4.0.Final\bin
> standalone.bat
上記のバッチを実行すると、デフォルトではポート9990で起動する。
➃管理ユーザを作成する。
C:\Users\bushidoyasu\Downloads\keycloak-3.4.0.Final\keycloak-3.4.0.Final\bin>add-user.bat
What type of user do you wish to add?
a) Management User (mgmt-users.properties)
b) Application User (application-users.properties)
(a): a
Enter the details of the new user to add.
Using realm 'ManagementRealm' as discovered from the existing property files.
Username : keycloakadmin
Password recommendations are listed below. To modify these restrictions edit the add-user.properties configuration file.
- The password should be different from the username
- The password should not be one of the following restricted values {root, admin, administrator}
- The password should contain at least 8 characters, 1 alphabetic character(s), 1 digit(s), 1 non-alphanumeric symbol(s)
Password :
Re-enter Password :
What groups do you want this user to belong to? (Please enter a comma separated list, or leave blank for none)[ ]:
About to add user 'keycloakadmin' for realm 'ManagementRealm'
Is this correct yes/no? yes
Added user 'keycloakadmin' to file 'C:\Users\bushidoyasu\Downloads\keycloak-3.4.0.Final\keycloak-3.4.0.Final\standalone\configuration\mgmt-users.properties'
Added user 'keycloakadmin' to file 'C:\Users\bushidoyasu\Downloads\keycloak-3.4.0.Final\keycloak-3.4.0.Final\domain\configuration\mgmt-users.properties'
Added user 'keycloakadmin' with groups to file 'C:\Users\bushidoyasu\Downloads\keycloak-3.4.0.Final\keycloak-3.4.0.Final\standalone\configuration\mgmt-groups.properties'
Added user 'keycloakadmin' with groups to file 'C:\Users\bushidoyasu\Downloads\keycloak-3.4.0.Final\keycloak-3.4.0.Final\domain\configuration\mgmt-groups.properties'
Is this new user going to be used for one AS process to connect to another AS process?
e.g. for a slave host controller connecting to the master or for a Remoting connection for server to server EJB calls.
yes/no? yes
To represent the user add the following to the server-identities definition <secret value="XXX" />
続行するには何かキーを押してください . . .
⑤以下のURLにアクセスすると、BASIC認証が求められる。
http://localhost:9990/console/App.html
BASIC認証に成功すると、以下の管理画面が表示される。
⑥Keycloak用の管理ユーザを作成する。
>add-user-keycloak.bat -u test -p password
Added 'test' to 'C:\Users\bushidoyasu\Downloads\keycloak-3.4.0.Final\keycloak-3.4.0.Final\standalone\configuration\keycloak-add-user.json', restart server to load user
⑦Keycloakを再起動する。
⑧以下のURLにアクセスし、ログインできることを確認する。
<補足>
H2コンソールを起動し、データベースの中身をみてみる。
> java -cp ..\modules\system\layers\base\com\h2database\h2\main\h2-1.4.193.jar org.h2.tools.Server -webAllowOthers
keycloakというデータベースをのぞいてみても、何もテーブルが作られていない。。。
Hyperledger Fabric v1.1.0-preview ソースからdockerイメージをビルドする。
Fabric v1.1.0-previewをソースからdockerイメージをビルドする手順。
①FabricとFabric-caのソース一式をクローンする。
# git clone -b v1.1.0-preview https://github.com/hyperledger/fabric.git
# git clone -b v1.1.0-preview https://github.com/hyperledger/fabric-ca.git
# mkdir -p /opt/fabric/src/github.com/hyperledger/
# cp -rf fabric /opt/fabric/src/github.com/hyperledger
# cp -rf fabric-ca /opt/fabric/src/github.com/hyperledger
②環境変数を設定する。
# export GOPATH=/opt/fabric
# export GOHONE=/opt/fabric
③Fabricのdockerイメージを作成する。
# cd $GOHOME/src/github.com/hyperledger/fabric/
# make docker
以下のエラーが発生した。。。
・・・
+ wget -q http://www.apache.org/dist/zookeeper/zookeeper-3.4.9/zookeeper-3.4.9.tar.gz
The command '/bin/sh -c set -x && cd / && wget -q "http://www.apache.org/dist/zookeeper/$DISTRO_NAME/$DISTRO_NAME.tar.gz" && tar -xzf "$DISTRO_NAME.tar.gz" && mv "$DISTRO_NAME/conf/"* "$ZOO_CONF_DIR" && rm -r "$DISTRO_NAME.tar.gz"' returned a non-zero code: 8
Makefile:205: recipe for target 'build/image/zookeeper/.dummy-x86_64-0.7.0-snapshot-c7b3fe0' failed
http://www.apache.org/dist/zookeeper にアクセスしてみると
zookeeper-3.4.9.tar.gzがなく、バージョンが3.4.10以降しかなかった。。。
とりあえず、3.4.10でダウンロードするようにDockerfileを修正する。
# vi build/image/zookeeper/Dockerfile
★以下を変更。
ARG DISTRO_NAME=zookeeper-3.4.10
# make docker
# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hyperledger/fabric-tools latest fdd9c70d1af3 27 seconds ago 1.42GB
hyperledger/fabric-tools x86_64-1.1.0-preview fdd9c70d1af3 27 seconds ago 1.42GB
hyperledger/fabric-couchdb latest 866f7fc6e93e 35 seconds ago 1.58GB
hyperledger/fabric-couchdb x86_64-1.1.0-preview 866f7fc6e93e 35 seconds ago 1.58GB
hyperledger/fabric-kafka latest e9f5f8d5f1d4 About a minute ago 1.37GB
hyperledger/fabric-kafka x86_64-1.1.0-preview e9f5f8d5f1d4 About a minute ago 1.37GB
hyperledger/fabric-zookeeper latest f9fe6dffc638 2 minutes ago 1.39GB
hyperledger/fabric-zookeeper x86_64-1.1.0-preview f9fe6dffc638 2 minutes ago 1.39GB
<none> <none> d72c30ec06cb 3 minutes ago 1.33GB
hyperledger/fabric-testenv latest 6bf3e40d7f08 3 minutes ago 1.52GB
hyperledger/fabric-testenv x86_64-1.1.0-preview 6bf3e40d7f08 3 minutes ago 1.52GB
hyperledger/fabric-buildenv latest 0824a7249f44 3 minutes ago 1.41GB
hyperledger/fabric-buildenv x86_64-1.1.0-preview 0824a7249f44 3 minutes ago 1.41GB
hyperledger/fabric-orderer latest 76603b1f0f3e 4 minutes ago 159MB
hyperledger/fabric-orderer x86_64-1.1.0-preview 76603b1f0f3e 4 minutes ago 159MB
hyperledger/fabric-peer latest fcc5a0e8ea59 4 minutes ago 165MB
hyperledger/fabric-peer x86_64-1.1.0-preview fcc5a0e8ea59 4 minutes ago 165MB
hyperledger/fabric-javaenv latest fb70e2629d32 4 minutes ago 1.49GB
hyperledger/fabric-javaenv x86_64-1.1.0-preview fb70e2629d32 4 minutes ago 1.49GB
hyperledger/fabric-ccenv latest 9203193f9935 5 minutes ago 1.35GB
hyperledger/fabric-ccenv x86_64-1.1.0-preview 9203193f9935 5 minutes ago 1.35GB
hyperledger/fabric-baseimage x86_64-0.4.2 76daf60aeff4 6 weeks ago 1.33GB
hyperledger/fabric-baseos x86_64-0.4.2 6be1916d236d 6 weeks ago 130MB
➃Fabric-caのdockerイメージを作成する。
# cd $GOHOME/src/github.com/hyperledger/fabric-ca/
# make docker
# docker images | grep fabric-ca
hyperledger/fabric-ca-tools latest 6164429ffed0 2 hours ago 1.5GB
hyperledger/fabric-ca-tools x86_64-1.1.0-preview 6164429ffed0 2 hours ago 1.5GB
hyperledger/fabric-ca-peer latest 13e583a4648b 2 hours ago 206MB
hyperledger/fabric-ca-peer x86_64-1.1.0-preview 13e583a4648b 2 hours ago 206MB
hyperledger/fabric-ca-orderer latest a88ff1f89153 2 hours ago 200MB
hyperledger/fabric-ca-orderer x86_64-1.1.0-preview a88ff1f89153 2 hours ago 200MB
hyperledger/fabric-ca latest 0a056a6cbdc1 2 hours ago 218MB
hyperledger/fabric-ca x86_64-1.1.0-preview 0a056a6cbdc1 2 hours ago 218MB
<補足>
チェーンコードのコンテナ作成時に利用されるfabric-ccenvにおいて、shimのソースが解凍されていない問題が発生した。
fabric-ccenvコンテナを作成してログインし、確認してみてみる。
root@7c26bd340479:/opt/gopath# ls -l $GOPATH/src/
total 0
-rw-r--r-- 1 root root 0 Nov 12 14:36 goshim.tar.bz2
解凍されないまま、tar.bz2ファイルがある。
しかも、0バイトになっている。。。。
上記の事象が発生した場合は、make peerでコンパイルしてgoshim.tar.bz2を作成した後、所定の位置にコピーする。
その後、make docker-clean&make dockerを実行する。
# apt-get install libltdl-dev
# make peer
# cp build/goshim.tar.bz2 build/image/ccenv/payload/
# make docker-clean
# make docker
①FabricとFabric-caのソース一式をクローンする。
# git clone -b v1.1.0-preview https://github.com/hyperledger/fabric.git
# git clone -b v1.1.0-preview https://github.com/hyperledger/fabric-ca.git
# mkdir -p /opt/fabric/src/github.com/hyperledger/
# cp -rf fabric /opt/fabric/src/github.com/hyperledger
# cp -rf fabric-ca /opt/fabric/src/github.com/hyperledger
②環境変数を設定する。
# export GOPATH=/opt/fabric
# export GOHONE=/opt/fabric
③Fabricのdockerイメージを作成する。
# cd $GOHOME/src/github.com/hyperledger/fabric/
# make docker
以下のエラーが発生した。。。
・・・
+ wget -q http://www.apache.org/dist/zookeeper/zookeeper-3.4.9/zookeeper-3.4.9.tar.gz
The command '/bin/sh -c set -x && cd / && wget -q "http://www.apache.org/dist/zookeeper/$DISTRO_NAME/$DISTRO_NAME.tar.gz" && tar -xzf "$DISTRO_NAME.tar.gz" && mv "$DISTRO_NAME/conf/"* "$ZOO_CONF_DIR" && rm -r "$DISTRO_NAME.tar.gz"' returned a non-zero code: 8
Makefile:205: recipe for target 'build/image/zookeeper/.dummy-x86_64-0.7.0-snapshot-c7b3fe0' failed
http://www.apache.org/dist/zookeeper にアクセスしてみると
zookeeper-3.4.9.tar.gzがなく、バージョンが3.4.10以降しかなかった。。。
とりあえず、3.4.10でダウンロードするようにDockerfileを修正する。
# vi build/image/zookeeper/Dockerfile
★以下を変更。
ARG DISTRO_NAME=zookeeper-3.4.10
# make docker
# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hyperledger/fabric-tools latest fdd9c70d1af3 27 seconds ago 1.42GB
hyperledger/fabric-tools x86_64-1.1.0-preview fdd9c70d1af3 27 seconds ago 1.42GB
hyperledger/fabric-couchdb latest 866f7fc6e93e 35 seconds ago 1.58GB
hyperledger/fabric-couchdb x86_64-1.1.0-preview 866f7fc6e93e 35 seconds ago 1.58GB
hyperledger/fabric-kafka latest e9f5f8d5f1d4 About a minute ago 1.37GB
hyperledger/fabric-kafka x86_64-1.1.0-preview e9f5f8d5f1d4 About a minute ago 1.37GB
hyperledger/fabric-zookeeper latest f9fe6dffc638 2 minutes ago 1.39GB
hyperledger/fabric-zookeeper x86_64-1.1.0-preview f9fe6dffc638 2 minutes ago 1.39GB
<none> <none> d72c30ec06cb 3 minutes ago 1.33GB
hyperledger/fabric-testenv latest 6bf3e40d7f08 3 minutes ago 1.52GB
hyperledger/fabric-testenv x86_64-1.1.0-preview 6bf3e40d7f08 3 minutes ago 1.52GB
hyperledger/fabric-buildenv latest 0824a7249f44 3 minutes ago 1.41GB
hyperledger/fabric-buildenv x86_64-1.1.0-preview 0824a7249f44 3 minutes ago 1.41GB
hyperledger/fabric-orderer latest 76603b1f0f3e 4 minutes ago 159MB
hyperledger/fabric-orderer x86_64-1.1.0-preview 76603b1f0f3e 4 minutes ago 159MB
hyperledger/fabric-peer latest fcc5a0e8ea59 4 minutes ago 165MB
hyperledger/fabric-peer x86_64-1.1.0-preview fcc5a0e8ea59 4 minutes ago 165MB
hyperledger/fabric-javaenv latest fb70e2629d32 4 minutes ago 1.49GB
hyperledger/fabric-javaenv x86_64-1.1.0-preview fb70e2629d32 4 minutes ago 1.49GB
hyperledger/fabric-ccenv latest 9203193f9935 5 minutes ago 1.35GB
hyperledger/fabric-ccenv x86_64-1.1.0-preview 9203193f9935 5 minutes ago 1.35GB
hyperledger/fabric-baseimage x86_64-0.4.2 76daf60aeff4 6 weeks ago 1.33GB
hyperledger/fabric-baseos x86_64-0.4.2 6be1916d236d 6 weeks ago 130MB
➃Fabric-caのdockerイメージを作成する。
# cd $GOHOME/src/github.com/hyperledger/fabric-ca/
# make docker
# docker images | grep fabric-ca
hyperledger/fabric-ca-tools latest 6164429ffed0 2 hours ago 1.5GB
hyperledger/fabric-ca-tools x86_64-1.1.0-preview 6164429ffed0 2 hours ago 1.5GB
hyperledger/fabric-ca-peer latest 13e583a4648b 2 hours ago 206MB
hyperledger/fabric-ca-peer x86_64-1.1.0-preview 13e583a4648b 2 hours ago 206MB
hyperledger/fabric-ca-orderer latest a88ff1f89153 2 hours ago 200MB
hyperledger/fabric-ca-orderer x86_64-1.1.0-preview a88ff1f89153 2 hours ago 200MB
hyperledger/fabric-ca latest 0a056a6cbdc1 2 hours ago 218MB
hyperledger/fabric-ca x86_64-1.1.0-preview 0a056a6cbdc1 2 hours ago 218MB
<補足>
チェーンコードのコンテナ作成時に利用されるfabric-ccenvにおいて、shimのソースが解凍されていない問題が発生した。
fabric-ccenvコンテナを作成してログインし、確認してみてみる。
root@7c26bd340479:/opt/gopath# ls -l $GOPATH/src/
total 0
-rw-r--r-- 1 root root 0 Nov 12 14:36 goshim.tar.bz2
解凍されないまま、tar.bz2ファイルがある。
しかも、0バイトになっている。。。。
上記の事象が発生した場合は、make peerでコンパイルしてgoshim.tar.bz2を作成した後、所定の位置にコピーする。
その後、make docker-clean&make dockerを実行する。
# apt-get install libltdl-dev
# make peer
# cp build/goshim.tar.bz2 build/image/ccenv/payload/
# make docker-clean
# make docker
Docker 便利コマンドメモ
- dockerイメージ 全削除
# docker rmi -f $(docker images -q)
# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
#
- dockerコンテナ 全削除
# docker rm -f $(docker ps -aq)
# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
#
2017年11月3日金曜日
Hyperledger Fabric Exploreを動かしてみる
Hyperledger Fabric ExploreがFabric 1.0.0に対応したということなので動かしてみる。
1.要件
・nodejs 6.9.x
・mysql 5.7 以上
2.インストール手順
①blockchain-explore資材のダウンロード
# git clone https://github.com/hyperledger/blockchain-explorer.git
# cd blockchain-explorer
②MySQLのインストール
# sudo apt install mysql-server
※インストール中にrootのパスワードを設定する。
③MySQLにrootでログインできることを確認する。
# mysql -u root -p
Enter password: XXX
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 6
Server version: 5.7.20-0ubuntu0.16.04.1 (Ubuntu)
Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
➃MySQL用のデータベースを作成する。「fabricexplorer」というExplore専用のデータベースが作成される。
# mysql -u root -p < db/fabricexplorer.sql
Enter password: XXX
# vi config.json
★Fabricの環境にあわせて設定する
{
"host":"localhost",
"port":"8080", ★外部に公開するポート
"channelsList": ["mychannel"], ★チャネルのリストを設定
"GOPATH":"/usr/bin/go",
"keyValueStore":"/tmp/fabric-client-kvs",
"eventWaitTime":"30000",
"enableTls":false,
"users":[
{
"username":"admin", ★CA管理ユーザ
"secret":"XXX"
}
],
"mysql":{ ★MySQLの環境設定
"host":"127.0.0.1",
"port":"3306",
"database":"fabricexplorer",
"username":"root",
"passwd":"XXX"
}
}
# vi ./app/network-config.json
★以下を環境に合わせて修正する。
★TLS通信を利用する場合は「network-config-tls.json」を修正する。
{
"network-config": {
"orderer": [{
"url": "grpc://127.0.0.1:7050",
"server-hostname": "orderer0.example.com"
},{
"url": "grpc://127.0.0.1:8050",
"server-hostname": "orderer1.example.com"
},{
"url": "grpc://127.0.0.1:9050",
"server-hostname": "orderer2.example.com"
}],
"org1": {
"name": "peerOrg1",
"mspid": "Org1MSP",
"ca": "http://127.0.0.1:7054",
"peer1": {
"requests": "grpc://127.0.0.1:7051",
"events": "grpc://127.0.0.1:7053",
"server-hostname": "peer0.org1.example.com"
},
"peer2": {
"requests": "grpc://127.0.0.1:8051",
"events": "grpc://127.0.0.1:8053",
"server-hostname": "peer1.org1.example.com"
},
"admin": {
"key": "/fabric-docker-compose-svt/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/keystore",
"cert": "/fabric-docker-compose-svt/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/signcerts"
}
},
"org2": {
"name": "peerOrg2",
"mspid": "Org2MSP",
"ca": "http://127.0.0.1:8054",
"peer1": {
"requests": "grpc://127.0.0.1:9051",
"events": "grpc://127.0.0.1:9053",
"server-hostname": "peer0.org2.example.com"
},
"peer2": {
"requests": "grpc://127.0.0.1:10051",
"events": "grpc://127.0.0.1:10053",
"server-hostname": "peer1.org2.example.com"
},
"admin": {
"key": "/fabric-docker-compose-svt/crypto-config/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp/keystore",
"cert": "/fabric-docker-compose-svt/crypto-config/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp/signcerts"
}
}
}
}
⑥ npmパッケージをインストールする。
# npm install
★失敗するときは、npm rebuild コマンドを実行し、全てリビルド。
⑦ 起動コマンドを実行する。
# ./start.sh
★ポート8080でnodeプロセスが起動する。
★停止したい場合は、pkill node コマンドを実行する。
★ログは同フォルダ配下のlog.logに出力される。
⑧ http://XXX.XXX.XXX.XXX:8080 にアクセスすると以下のようなダッシュボード画面が表示される。
★現状、認証機能はないため、だれでも閲覧可能である。
★PEERLISTに正しいPEER情報が表示されない。
★2つチャネルを作成しているのに、1つしかチャネルが表示されない。
1.要件
・nodejs 6.9.x
・mysql 5.7 以上
2.インストール手順
①blockchain-explore資材のダウンロード
# git clone https://github.com/hyperledger/blockchain-explorer.git
# cd blockchain-explorer
②MySQLのインストール
# sudo apt install mysql-server
※インストール中にrootのパスワードを設定する。
③MySQLにrootでログインできることを確認する。
# mysql -u root -p
Enter password: XXX
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 6
Server version: 5.7.20-0ubuntu0.16.04.1 (Ubuntu)
Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
➃MySQL用のデータベースを作成する。「fabricexplorer」というExplore専用のデータベースが作成される。
# mysql -u root -p < db/fabricexplorer.sql
Enter password: XXX
ue'
Password: eiMiKcDTWwyJ⑤Fabric向けの環境情報を設定する。
# vi config.json
★Fabricの環境にあわせて設定する
{
"host":"localhost",
"port":"8080", ★外部に公開するポート
"channelsList": ["mychannel"], ★チャネルのリストを設定
"GOPATH":"/usr/bin/go",
"keyValueStore":"/tmp/fabric-client-kvs",
"eventWaitTime":"30000",
"enableTls":false,
"users":[
{
"username":"admin", ★CA管理ユーザ
"secret":"XXX"
}
],
"mysql":{ ★MySQLの環境設定
"host":"127.0.0.1",
"port":"3306",
"database":"fabricexplorer",
"username":"root",
"passwd":"XXX"
}
}
# vi ./app/network-config.json
★以下を環境に合わせて修正する。
★TLS通信を利用する場合は「network-config-tls.json」を修正する。
{
"network-config": {
"orderer": [{
"url": "grpc://127.0.0.1:7050",
"server-hostname": "orderer0.example.com"
},{
"url": "grpc://127.0.0.1:8050",
"server-hostname": "orderer1.example.com"
},{
"url": "grpc://127.0.0.1:9050",
"server-hostname": "orderer2.example.com"
}],
"org1": {
"name": "peerOrg1",
"mspid": "Org1MSP",
"ca": "http://127.0.0.1:7054",
"peer1": {
"requests": "grpc://127.0.0.1:7051",
"events": "grpc://127.0.0.1:7053",
"server-hostname": "peer0.org1.example.com"
},
"peer2": {
"requests": "grpc://127.0.0.1:8051",
"events": "grpc://127.0.0.1:8053",
"server-hostname": "peer1.org1.example.com"
},
"admin": {
"key": "/fabric-docker-compose-svt/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/keystore",
"cert": "/fabric-docker-compose-svt/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/signcerts"
}
},
"org2": {
"name": "peerOrg2",
"mspid": "Org2MSP",
"ca": "http://127.0.0.1:8054",
"peer1": {
"requests": "grpc://127.0.0.1:9051",
"events": "grpc://127.0.0.1:9053",
"server-hostname": "peer0.org2.example.com"
},
"peer2": {
"requests": "grpc://127.0.0.1:10051",
"events": "grpc://127.0.0.1:10053",
"server-hostname": "peer1.org2.example.com"
},
"admin": {
"key": "/fabric-docker-compose-svt/crypto-config/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp/keystore",
"cert": "/fabric-docker-compose-svt/crypto-config/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp/signcerts"
}
}
}
}
⑥ npmパッケージをインストールする。
# npm install
★失敗するときは、npm rebuild コマンドを実行し、全てリビルド。
⑦ 起動コマンドを実行する。
# ./start.sh
★ポート8080でnodeプロセスが起動する。
★停止したい場合は、pkill node コマンドを実行する。
★ログは同フォルダ配下のlog.logに出力される。
⑧ http://XXX.XXX.XXX.XXX:8080 にアクセスすると以下のようなダッシュボード画面が表示される。
★現状、認証機能はないため、だれでも閲覧可能である。
★PEERLISTに正しいPEER情報が表示されない。
★2つチャネルを作成しているのに、1つしかチャネルが表示されない。
2017年11月2日木曜日
Hyperledger Fabric CAのDBの中身をみてみる
Fabric CAは、デフォルトではSqlite3にユーザ情報や証明書情報が格納される。
Sqlite3のテーブルには実際にどんな情報が格納されているかを確認してみる。
①(事前準備)ホストOS側でsqlite3コマンドをインストールする。
# sudo apt-get install sqlite3 libsqlite3-dev
②CAコンテナからホストOSにsqlite3のdbファイルをコピーする
# sudo docker cp ca_peerOrg2:/etc/hyperledger/fabric-ca-server/fabric-ca-server.db ./fabric-ca-server.db
③sqlite3コマンドでテーブルを参照する。
★「users」、「certificates」、「affiliations」という3つのテーブルが存在している。
# sqlite3 fabric-ca-server.db
SQLite version 3.11.0 2016-02-15 17:29:24
Enter ".help" for usage hints.
sqlite>.table
affiliations certificates users
➃テーブルのスキーマ情報を参照する。
sqlite> .schema
CREATE TABLE users (id VARCHAR(64), token bytea, type VARCHAR(64), affiliation VARCHAR(64), attributes VARCHAR(256), state INTEGER, max_enrollments INTEGER);
CREATE TABLE affiliations (name VARCHAR(64) NOT NULL UNIQUE, prekey VARCHAR(64));
CREATE TABLE certificates (id VARCHAR(64), serial_number blob NOT NULL, authority_key_identifier blob NOT NULL, ca_label blob, status blob NOT NULL, reason int, expiry timestamp, revoked_at timestamp, pem blob NOT NULL, PRIMARY KEY(serial_number, authority_key_identifier));
■usersテーブル
id VARCHAR(64):ユーザID
token bytea:パスワード(暗号化されているっぽい)
type VARCHAR(64):ユーザ種別
affiliation VARCHAR(64):アフィリエーション情報
attributes VARCHAR(256):属性情報
state INTEGER:ステータス
max_enrollments INTEGER:最大ENROLLMENT数。デフォルトは-1(無制限)
■affiationsテーブル
name VARCHAR(64):アフィリエーション名
prekey VARCHAR(64):上位階層のアフィリエーション名
■certificatesテーブル
id VARCHAR(64):ユーザID
serial_number blob:証明書シリアル番号
authority_key_identifier blob:認証局鍵識別子(CA公開鍵のハッシュ値)
ca_label blob:CAの名前
status blob:証明書のステータス
reason int:証明書失効の理由
expiry timestamp:証明書有効期限
revoked_at timestamp:証明書失効日時
pem blob:証明書情報(PEM形式)
<実際の値>
■usersテーブル
sqlite> SELECT * FROM users;
admin|$2a$10$C5UFCN0iFS9PnMkhohevYu3uJPc9pGgY9rb1M77ZWM07gOUKnQ8z6|client||[{"name":"hf.Registrar.Roles","value":"client,user,peer,validator,auditor"},{"name":"hf.Registrar.DelegateRoles","value":"client,user,validator,auditor"},{"name":"hf.Revoker","value":"1"},{"name":"hf.IntermediateCA","value":"1"}]|0|-1
■affiationsテーブル
sqlite> SELECT * FROM affiliations;
org2|
org2.department1|org2
org1|
org1.department1|org1
org1.department2|org1
■certificatesテーブル
Sqlite3のテーブルには実際にどんな情報が格納されているかを確認してみる。
①(事前準備)ホストOS側でsqlite3コマンドをインストールする。
# sudo apt-get install sqlite3 libsqlite3-dev
②CAコンテナからホストOSにsqlite3のdbファイルをコピーする
# sudo docker cp ca_peerOrg2:/etc/hyperledger/fabric-ca-server/fabric-ca-server.db ./fabric-ca-server.db
③sqlite3コマンドでテーブルを参照する。
★「users」、「certificates」、「affiliations」という3つのテーブルが存在している。
# sqlite3 fabric-ca-server.db
SQLite version 3.11.0 2016-02-15 17:29:24
Enter ".help" for usage hints.
sqlite>.table
affiliations certificates users
➃テーブルのスキーマ情報を参照する。
sqlite> .schema
CREATE TABLE users (id VARCHAR(64), token bytea, type VARCHAR(64), affiliation VARCHAR(64), attributes VARCHAR(256), state INTEGER, max_enrollments INTEGER);
CREATE TABLE affiliations (name VARCHAR(64) NOT NULL UNIQUE, prekey VARCHAR(64));
CREATE TABLE certificates (id VARCHAR(64), serial_number blob NOT NULL, authority_key_identifier blob NOT NULL, ca_label blob, status blob NOT NULL, reason int, expiry timestamp, revoked_at timestamp, pem blob NOT NULL, PRIMARY KEY(serial_number, authority_key_identifier));
■usersテーブル
id VARCHAR(64):ユーザID
token bytea:パスワード(暗号化されているっぽい)
type VARCHAR(64):ユーザ種別
affiliation VARCHAR(64):アフィリエーション情報
attributes VARCHAR(256):属性情報
state INTEGER:ステータス
max_enrollments INTEGER:最大ENROLLMENT数。デフォルトは-1(無制限)
■affiationsテーブル
name VARCHAR(64):アフィリエーション名
prekey VARCHAR(64):上位階層のアフィリエーション名
■certificatesテーブル
id VARCHAR(64):ユーザID
serial_number blob:証明書シリアル番号
authority_key_identifier blob:認証局鍵識別子(CA公開鍵のハッシュ値)
ca_label blob:CAの名前
status blob:証明書のステータス
reason int:証明書失効の理由
expiry timestamp:証明書有効期限
revoked_at timestamp:証明書失効日時
pem blob:証明書情報(PEM形式)
<実際の値>
■usersテーブル
sqlite> SELECT * FROM users;
admin|$2a$10$C5UFCN0iFS9PnMkhohevYu3uJPc9pGgY9rb1M77ZWM07gOUKnQ8z6|client||[{"name":"hf.Registrar.Roles","value":"client,user,peer,validator,auditor"},{"name":"hf.Registrar.DelegateRoles","value":"client,user,validator,auditor"},{"name":"hf.Revoker","value":"1"},{"name":"hf.IntermediateCA","value":"1"}]|0|-1
■affiationsテーブル
sqlite> SELECT * FROM affiliations;
org2|
org2.department1|org2
org1|
org1.department1|org1
org1.department2|org1
■certificatesテーブル
登録:
投稿 (Atom)