首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法从jboss调用api.backblaze.com

无法从jboss调用api.backblaze.com
EN

Stack Overflow用户
提问于 2020-04-25 17:44:23
回答 1查看 54关注 0票数 0

我正在尝试上传一张图片到backblaze在线存储。我使用backblaze java-sdk进行调用。尝试上传图像时,出现以下错误:

代码语言:javascript
复制
2020-04-25 11:19:45,443 ERROR [stderr] (default task-10) <B2Exception 904 io_exception: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target talking to https://api.backblazeb2.com/b2api/v2/b2_authorize_account>

我找不到任何关于在backblaze站点上添加任何证书的必要信息。

在网上研究后,我发现我应该这样做?将backblaze证书添加到我的java安装的信任存储中。因此,我使用chrome从https://www.backblaze.com/下载了证书(另存为.cer文件),并使用以下命令将其安装到我的java中:

代码语言:javascript
复制
keytool -import -alias backblaze -keystore "%JAVA_HOME%/jre/lib/security/cacerts" -storepass <password> -keypass changeit -file .../backblaze.cer -noprompt

执行此命令时,我也可以看到它:

代码语言:javascript
复制
keytool -list -v -keystore "%JAVA_HOME%/jre/lib/security/cacerts"

有一个别名为: backblaze的条目

在我的jboss启动过程中使用VM选项-Djavax.net.debug=ssl,我可以看到java使用了正确的信任存储,并找到了一个带有backblaze别名的条目:

代码语言:javascript
复制
2020-04-25 10:46:52,483 INFO  [stdout] (default task-2) trustStore is: C:\Program Files\Java\jdk1.8.0_77\jre\lib\security\cacerts
2020-04-25 10:46:52,483 INFO  [stdout] (default task-2) trustStore type is : jks
2020-04-25 10:46:52,483 INFO  [stdout] (default task-2) trustStore provider is : 
2020-04-25 10:46:52,484 INFO  [stdout] (default task-2) init truststore
...
2020-04-25 10:46:52,564 INFO  [stdout] (default task-2) adding as trusted cert:
2020-04-25 10:46:52,739 INFO  [stdout] (default task-2)   Subject: CN=backblaze.com, O="Backblaze, Inc.", L=San Mateo, ST=California, C=US, SERIALNUMBER=4337553, OID.1.3.6.1.4.1.311.60.2.1.2=Delaware, OID.1.3.6.1.4.1.311.60.2.1.3=US, OID.2.5.4.15=Private Organization
2020-04-25 10:46:52,739 INFO  [stdout] (default task-2)   Issuer:  CN=DigiCert SHA2 Extended Validation Server CA, OU=www.digicert.com, O=DigiCert Inc, C=US
...

所以我认为java进程可以找到正确的证书,但是当我无法找到api.backblaze端点时,我会得到一个带有handhake的异常:

代码语言:javascript
复制
2020-04-25 11:19:45,443 ERROR [stderr] (default task-10) <B2Exception 904 io_exception: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target talking to https://api.backblazeb2.com/b2api/v2/b2_authorize_account>

2020-04-25 11:19:45,444 ERROR [stderr] (default task-10)    at com.backblaze.b2.client.webApiHttpClient.B2WebApiHttpClientImpl.translateToB2Exception(B2WebApiHttpClientImpl.java:256)

2020-04-25 11:19:45,445 ERROR [stderr] (default task-10)    at com.backblaze.b2.client.webApiHttpClient.B2WebApiHttpClientImpl.postAndReturnString(B2WebApiHttpClientImpl.java:223)

2020-04-25 11:19:45,445 ERROR [stderr] (default task-10)    at com.backblaze.b2.client.webApiHttpClient.B2WebApiHttpClientImpl.postJsonAndReturnString(B2WebApiHttpClientImpl.java:185)

2020-04-25 11:19:45,445 ERROR [stderr] (default task-10)    at com.backblaze.b2.client.webApiHttpClient.B2WebApiHttpClientImpl.postJsonReturnJson(B2WebApiHttpClientImpl.java:71)

2020-04-25 11:19:45,445 ERROR [stderr] (default task-10)    at com.backblaze.b2.client.B2StorageClientWebifierImpl.authorizeAccount(B2StorageClientWebifierImpl.java:141)

2020-04-25 11:19:45,445 ERROR [stderr] (default task-10)    at com.backblaze.b2.client.B2AccountAuthorizerSimpleImpl.authorize(B2AccountAuthorizerSimpleImpl.java:38)

2020-04-25 11:19:45,446 ERROR [stderr] (default task-10)    at com.backblaze.b2.client.B2AccountAuthorizationCache.get(B2AccountAuthorizationCache.java:50)

2020-04-25 11:19:45,446 ERROR [stderr] (default task-10)    at com.backblaze.b2.client.B2UploadUrlCache.get(B2UploadUrlCache.java:87)

2020-04-25 11:19:45,446 ERROR [stderr] (default task-10)    at com.backblaze.b2.client.B2StorageClientImpl.lambda$uploadSmallFile$4(B2StorageClientImpl.java:207)

2020-04-25 11:19:45,446 ERROR [stderr] (default task-10)    at com.backblaze.b2.client.B2Retryer.doRetry(B2Retryer.java:85)

2020-04-25 11:19:45,446 ERROR [stderr] (default task-10)    at com.backblaze.b2.client.B2StorageClientImpl.uploadSmallFile(B2StorageClientImpl.java:204)

我是SSL的新手,我不知道我做错了什么。要么是我下载了错误的证书( api.backblaze有一个额外的证书,我必须安装它),要么是我错误地配置了我的java信任存储区。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-25 20:31:47

好的,经过一番挣扎之后,我发现我用错了vertificate。我不得不从api.backblazeb2.com下载证书并安装:

下载:

代码语言:javascript
复制
keytool -printcert -sslserver api.backblazeb2.com:443 -rfc > api.backblazeb2.cer

安装:

代码语言:javascript
复制
keytool -import -alias api.backblazeb2 -keystore "%JAVA_HOME%/jre/lib/security/cacerts" -storepass changeit -keypass changeit -file api.backblazeb2.cer -nopro
mpt

为了确保在那之后重启java进程。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61423745

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档