我在很多fabric的技術群中,很多使用javasdk連接fabric的同友,初始的時候很多都沒有成功的使用TLS進行區塊鏈交易;
是sdk不支持,還是我們沒有找到解決方案?
其實不然,我這里使用的是fabric-sdk1.2的版本,是可以的;而且sdk的源碼的測試用例也都是使用tls的;那么他肯定是可以完成TLS交易的;
我這里使用的環境是單機的fabric1.4.0版本;java-sdk使用是1.2版本的.
前提,fabric1.4.0使用tls模式建立的環境,這里為了快速和方便,我使用了first-network這個demo。
1,環境情況,具體搭建方式就不追溯,可以在網上的其他博客查到相關部署方式。
2,java-sdk版本
3,使用TLS鏈接的關鍵
在pom.xml文件中增加<os.detected.classifier>windows-x86_64</os.detected.classifier>
這里說明一下windows-x86_64,在netty-tcnative是沒有32位的包,所以一定要保證你的jvm是64位的,否則,你在允許請求的是會一致報錯,沒有找到32位的它。
使用 java -d64檢查你當前jvm是否是64位,如果不是則會是類似下述的錯誤
如果是64,則會是下述的信息
建議,pom依賴,參考fabric-sdk的pom依賴
4,創建channel連接
支持TLS連接,關鍵的幾個配置:clientCertFile、clientKeyFile、pemFile
orderer設置屬性 : peer設置屬性:
對mycc合約進行查詢:
查詢結果:
綜上:
1,pom依賴,要按照fabric-java-sdk的依賴方式進行依賴,一面因為依賴的包版本等一些問題導致無法完成TLS訪問
2,netty_tcnative_windows_x86_64的依賴關系,jvm一定是64位的
3,創建channel鏈接的時候,orderer和peer的屬性設置一定要指定其的相關tls證書。