AppGallery Connect:同時集成認(rèn)證服務(wù)與云數(shù)據(jù)庫Server SDK Netty報(bào)錯

來源: 華為開發(fā)者論壇
作者:Mayism
時間:2021-04-15
17504
近期在適配華為AGC的Cloud DB服務(wù),前期已經(jīng)嘗試了Android和iOS端的集成,近期在開始體驗(yàn)Server端的集成。我們選擇的是華為提供的Server 端的Java SDK,同時我們還集成了認(rèn)證服務(wù),但是運(yùn)行的時候,一直報(bào)TLS_ECDHE_ECDSA_WITH_AES_256_6CM_SHA384的錯誤。

問題背景

近期在適配華為AGC的Cloud DB服務(wù),前期已經(jīng)嘗試了Android和iOS端的集成,近期在開始體驗(yàn)Server端的集成。

我們選擇的是華為提供的Server 端的Java SDK,同時我們還集成了認(rèn)證服務(wù),但是運(yùn)行的時候,一直報(bào)TLS_ECDHE_ECDSA_WITH_AES_256_6CM_SHA384的錯誤。

相應(yīng)的錯誤日志:

warning: FaiLed to initiaLize a channel. CLosing: [id: 0xfd08a711]

java.lang.ILlegalArgumentException Create breakpoint: Cannot Support TLS_ECDHE_ECDSA_WITH_AES_256_6CM_SHA384 With currentLy instaLLed providers

                at sun.security.ssl.CipherSuiteList.<init>(CipherSuviteList. java:81)

                at Sun.Security.SSL.SSLEngineImpL.SetEnabLedCipherSuites(SSLEngineImpL.java:29358)

                at com.huawei.agconnect.server.netty.handler. NettyConnectorInitializer.initChannel(NettyConnectorInitializer. java:72)

                at com.huawei.agconnect.server.netty.handLer.NettyConnectorInitiaLizer.initChanneL(NettyConnectorInitiaLizer.java:33)

                at io.netty.channeL.ChanneLInitiaLizer.initChanneL(ChanneLInitiaLizer.java:129)

                at io.netty.channeL.ChanneLInitiaLizer.handLerAdded(ChanneLInitiaLizer.java:112)

                at io.netty.channeL.AbstractChanneLHandLerContext.caLLHandLerAdded(AbstractChanneLHandLerContext.java:9358)

                at io.netty.channeL.DefauLtChanneLPipeLine.caLLHandLerAdded6(DefauLtChanneLPipeLine.java:699)

                at io.netty.channeL.DefauLtChanneLPipeLine.access$166(DefaultChanneLPipeline.java:46)

                at io.netty.channeL.DefauLtChanneLPipeLine$pPendingHandLerAddedTask.execute(DefauLtChanneLPipeLine.java:14635)

               at io.netty.channeL.DefauLtChanneLPipeLine.caLLHandLerAddedForALLHandLers(DefauLtChanneLPipeLine.java:1115)

                at io.netty.channeL.DefauLtCchanneLPipeLine.invokeHandLerAddedIfTNeeded(DefauLtChanneLPipeLine.java:659)

問題定位

1、首先懷疑是SDK沒有成功導(dǎo)入的問題。 但是在項(xiàng)目目錄的External Libraries的時候,看相關(guān)的包導(dǎo)入都是正常的:

2、然后懷疑是我Server環(huán)境的問題。我把代碼工程發(fā)給同事,發(fā)現(xiàn)同事可以正常執(zhí)行,說明就是我的環(huán)境問題。

3、再次查看日志,發(fā)現(xiàn)詳細(xì)日志的首行:

      TLS_ECDHE_ECDSA_WITH_AES_256_6CM_SHA384

       Google搜索后發(fā)現(xiàn)很多類似的報(bào)錯。比較分析后發(fā)現(xiàn)應(yīng)該是因?yàn)镾DK引用了Netty框架,并且使用了特定的加密套件,但是該套件需要JDK的支持,如果當(dāng)前的JDK環(huán)境不支持,就會有上述問題。

       JDK環(huán)境支持加密套件,就需要本地環(huán)境中,有安裝相應(yīng)的JCE包。

問題解決方案

1、首先需要下載JDK對應(yīng)的JCE包: JDK1.8對應(yīng)的JCE包下載地址

http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html

2、下載好以后,將JCE包解壓,得到兩個 local_policy.jar 和 US_export_policy.jar 兩個 JAR 包。

 3、  復(fù)制 local_policy.jar 和 US_export_policy.jar 文件,并且將其添加到你本地JavaSDK路徑的目錄下。具體的路徑為: %JAVA_HOME%/jre/lib/security。

 如果路徑下已經(jīng)同名的文件,則直接將其覆蓋即可,如下是我的路徑示例。

 

4、  重啟Server項(xiàng)目,或者重啟服務(wù)器,問題完美解決。

參考鏈接:

  • 華為AppGallery Connect 云數(shù)據(jù)庫服務(wù)Server開發(fā)文檔:

https://developer.huawei.com/consumer/cn/doc/development/AppGallery-connect-Guides/agc-clouddb-get-started-serverjava

  • 同類問題參考鏈接:

https://blog.csdn.net/TroyLemon/article/details/51025929

立即登錄,閱讀全文
版權(quán)說明:
本文內(nèi)容來自于華為開發(fā)者論壇,本站不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。文章內(nèi)容系作者個人觀點(diǎn),不代表快出海對觀點(diǎn)贊同或支持。如有侵權(quán),請聯(lián)系管理員(zzx@kchuhai.com)刪除!
掃碼登錄
打開掃一掃, 關(guān)注公眾號后即可登錄/注冊
加載中
二維碼已失效 請重試
刷新
賬號登錄/注冊
個人VIP
小程序
快出海小程序
公眾號
快出海公眾號
商務(wù)合作
商務(wù)合作
投稿采訪
投稿采訪
出海管家
出海管家