摘要:本文面向以太坊智能合約應用程序開發人員,并討論如何在密碼保護后,安全地運行你的以太坊節點,以便通過進行安全輸出。以太坊,主要是針對工程師使用進行區塊鏈以太坊開發的詳解。
本文面向以太坊智能合約應用程序開發人員,并討論如何在密碼保護后,安全地運行你的以太坊節點,以便通過Internet進行安全輸出。
Go Ethereum(geth)是以太坊節點最受歡迎的軟件。其他流行的以太坊實現是Parity和cpp-ethereum等。分布式應用程序(Dapps)是JavaScript編碼的網頁,通過JSON-RPC API協議連接到任何這些以太坊節點軟件,該協議是在HTTP協議之上自行運行的。
geth或沒有節點軟件本身不提供安全網絡。將Ethereum JSON-RPC API暴露給公共Internet是不安全的,因為即使禁用私有API,這也會為瑣碎的拒絕服務攻擊打開一扇門。節點軟件本身不需要提供安全的網絡原語,因為這種內置功能會增加復雜性并為關鍵區塊鏈節點軟件增加攻擊面。
Dapps本身是純客戶端HTML和JavaScript,不需要任何服務器,它們可以在任何Web瀏覽器中運行,包括移動和嵌入式瀏覽器,如Mist錢包內的一個。
使用Nginx代理作為HTTP基本身份驗證器有幾種方法可以保護對HTTP API的訪問。最常見的方法包括HTTP頭中的API令牌,基于cookie的身份驗證或HTTP基本訪問身份驗證。
HTTP基本身份驗證是HTTP協議的一個非常古老的功能,其中Web瀏覽器打開一個本機彈出對話框,詢問用戶名和密碼。它本質上的保護是有限的,但非常容易實現,非常適合需要為有限的互聯網受眾暴露私有Dapp的用例。這些用例包括顯示Dapp演示,私有和許可的區塊鏈應用程序或將以太坊功能作為軟件即服務解決方案的一部分。
NginxNginx是最受歡迎的開源Web服務器應用程序之一。我們將展示如何設置Nginx Web服務器,以便它使用HTTP Basic Auth私下為你的Dapp(HTML文件)和geth JSON-RPC API提供服務。
我們假設Ubuntu 14.04更新的Linux服務器。文件位置可能取決于使用的Linux發行版。
安裝Nginx在Ubuntu Linux 14.04或更高版本上安裝Nginx:
sudo apt install nginx apache2-utils配置Nginx
我們假設我們編輯默認的網站配置文件/etc/nginx/sites-enabled/default。我們使用proxy_pass指令與在localhost:8545中運行的geth進行通信:
server { listen 80 default_server; listen [::]:80 default_server ipv6only=on; server_name demo.example.com; # Geth proxy that password protects the public Internet endpoint location /eth { auth_basic "Restricted access to this site"; auth_basic_user_file /etc/nginx/protected.htpasswd; # Proxy to geth note that is bind to localhost port proxy_pass http://localhost:8545; } # Server DApp static files location / { root /usr/share/nginx/html; index index.html auth_basic "Restricted access to this site"; auth_basic_user_file /etc/nginx/protected.htpasswd; } }
使用密碼創建HTTP Basic Auth用戶演示:
sudo htpasswd -c /etc/nginx/protected.htpasswd demo配置geth
開始使用geth守護進程的最簡單方法是在UNIX screen中運行它:
screen geth # Your command line parameters here
退出screen 使用CTRL+A, D。
請參閱geth private testnet說明
配置Dapp在你的Dapp中,使web3.js使用/eth端點:
function getRPCURL() { // ES2016 if(window.location.href.includes("demo.nordledger.com")) { // Password protected geth deployment return "http://demo.nordledger.com/eth" } else { // Localhost development return "http://localhost:8545"; } } // ... web3.setProvider(new web3.providers.HttpProvider(getRPCURL()));部署Dapp
將DApp文件復制到服務器上的/usr/share/nginx/html。這包括index.html以及相關的JavaScript和CSS資源。
Bonus - 部署shell腳本示例:
#!/bin/bash # # A simple static HTML + JS deployment script that handles Nginx www-data user correclty. # Works e.g. Ubuntu Linux Azure and Amazon EC2 Ubuntu server out of the box. # set -e set -u # The remote server we are copying the files using ssh + public key authentication. # Specify this in .ssh/config REMOTE="nordledger-demo" # Build dist folder using webpack npm run build # Copy local dist folder to the remote server Nginx folder over sudoed # Assum the default user specified in .ssh/config has passwordless sudo # https://crashingdaily.wordpress.com/2007/06/29/rsync-and-sudo-over-ssh/ rsync -a -e "ssh" --rsync-path="sudo rsync" dist/* --chown www-data:www-data $REMOTE:/usr/share/nginx/html/重啟Nginx
為Nginx做一次硬重啟:
service nginx stop service nginx start測試并迭代
訪問網站,看看您的Dapp是否連接到代理的Geth。
檢查/var/log/nginx/error.log以獲取詳細信息。
如果從/eth端點獲得502 Bad Gateway,請確保geth正在作為服務器上的后臺進程正常運行。
======================================================================
分享一些以太坊、EOS、比特幣等區塊鏈相關的交互式在線編程實戰教程:
java以太坊開發教程,主要是針對java和android程序員進行區塊鏈以太坊開發的web3j詳解。
python以太坊,主要是針對python工程師使用web3.py進行區塊鏈以太坊開發的詳解。
php以太坊,主要是介紹使用php進行智能合約開發交互,進行賬號創建、交易、轉賬、代幣開發以及過濾器和交易等內容。
以太坊入門教程,主要介紹智能合約與dapp應用開發,適合入門。
以太坊開發進階教程,主要是介紹使用node.js、mongodb、區塊鏈、ipfs實現去中心化電商DApp實戰,適合進階。
C#以太坊,主要講解如何使用C#開發基于.Net的以太坊應用,包括賬戶管理、狀態與交易、智能合約開發與交互、過濾器和交易等。
EOS教程,本課程幫助你快速入門EOS區塊鏈去中心化應用的開發,內容涵蓋EOS工具鏈、賬戶與錢包、發行代幣、智能合約開發與部署、使用代碼與智能合約交互等核心知識點,最后綜合運用各知識點完成一個便簽DApp的開發。
java比特幣開發教程,本課程面向初學者,內容即涵蓋比特幣的核心概念,例如區塊鏈存儲、去中心化共識機制、密鑰與腳本、交易與UTXO等,同時也詳細講解如何在Java代碼中集成比特幣支持功能,例如創建地址、管理錢包、構造裸交易等,是Java工程師不可多得的比特幣開發學習課程。
php比特幣開發教程,本課程面向初學者,內容即涵蓋比特幣的核心概念,例如區塊鏈存儲、去中心化共識機制、密鑰與腳本、交易與UTXO等,同時也詳細講解如何在Php代碼中集成比特幣支持功能,例如創建地址、管理錢包、構造裸交易等,是Php工程師不可多得的比特幣開發學習課程。
這里是原文
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/24355.html
摘要:本文面向以太坊智能合約應用程序開發人員,并討論如何在密碼保護后,安全地運行你的以太坊節點,以便通過進行安全輸出。以太坊,主要是針對工程師使用進行區塊鏈以太坊開發的詳解。 本文面向以太坊智能合約應用程序開發人員,并討論如何在密碼保護后,安全地運行你的以太坊節點,以便通過Internet進行安全輸出。 Go Ethereum(geth)是以太坊節點最受歡迎的軟件。其他流行的以太坊實現是Pa...
摘要:本文面向以太坊智能合約應用程序開發人員,并討論如何在密碼保護后,安全地運行你的以太坊節點,以便通過進行安全輸出。以太坊,主要是針對工程師使用進行區塊鏈以太坊開發的詳解。 本文面向以太坊智能合約應用程序開發人員,并討論如何在密碼保護后,安全地運行你的以太坊節點,以便通過Internet進行安全輸出。 Go Ethereum(geth)是以太坊節點最受歡迎的軟件。其他流行的以太坊實現是Pa...
摘要:通信服務提供接口是如何與區塊鏈交互的關鍵。這通常通過將請求提交給基于或套接字的服務器來完成。初始化時會發生自動檢測有時,無法自動檢測節點的位置。使用自動檢測的示例一些節點提供超出標準的。是套接字的文件系統路徑。 通信服務提供接口是web3如何與區塊鏈交互的關鍵。接口接受JSON-RPC請求并返回響應。這通常通過將請求提交給基于HTTP或IPC套接字的服務器來完成。 如果你已經愉快地連接...
摘要:通信服務提供接口是如何與區塊鏈交互的關鍵。這通常通過將請求提交給基于或套接字的服務器來完成。初始化時會發生自動檢測有時,無法自動檢測節點的位置。使用自動檢測的示例一些節點提供超出標準的。是套接字的文件系統路徑。 通信服務提供接口是web3如何與區塊鏈交互的關鍵。接口接受JSON-RPC請求并返回響應。這通常通過將請求提交給基于HTTP或IPC套接字的服務器來完成。 如果你已經愉快地連接...
摘要:之后,只需安裝它即可。處于控制臺模式時,啟動成功。準備調用通過從訪問。讓我們添加選項并重新啟動添加了的幾個選項。 自去年以來,我們正在開發區塊鏈(Blockchain)業務。最近使用過Ethereum并使用PHP,所以我想我們應該聊聊這個話題。 這里有個前提: 1.理解區塊鏈 2.對編程語言有了解 本文的主要內容: 1.開發環境 2.以太坊的介紹 3.準備JSON-RPC調用 4...
閱讀 2041·2023-04-25 15:11
閱讀 3461·2021-09-23 11:57
閱讀 1372·2021-07-26 23:38
閱讀 1319·2019-08-30 15:54
閱讀 635·2019-08-30 15:53
閱讀 3245·2019-08-26 13:36
閱讀 986·2019-08-26 12:01
閱讀 2863·2019-08-23 16:21