# 调用 Discourse API 抛出 SSLHandshakeException

**URL:** https://meta.discourse.org/t/calling-discourse-api-throws-sslhandshakeexception/152908
**Category:** Development
**Created:** [2020年五月27日 04:54 UTC](https://meta.discourse.org/t/calling-discourse-api-throws-sslhandshakeexception/152908 "2020-05-27T04:54:29Z")
**Posts on this page:** 6
**Page:** 1

<div class="post-metadata">

### Author: ![Saurabh\_Khandelwal](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/saurabh_khandelwal/32/156332_2.png) [@Saurabh\_Khandelwal](https://meta.discourse.org/u/Saurabh_Khandelwal)
#### Post date: [2020年五月27日 04:54 UTC](https://meta.discourse.org/t/calling-discourse-api-throws-sslhandshakeexception/152908/1 "2020-05-27T04:54:29Z")

</div>

大家好，

我们的 Discourse 论坛已配置为使用 SSL 协议： **TLSv1.2** ，以及强加密套件： **TLS\_ECDHE\_ECDSA\_WITH\_AES\_256\_GCM\_SHA384** 。

在从运行于 JDK7 的 Liferay 6.2 框架中通过 Apache httpclient 调用 Discourse API 时，抛出以下异常：

`javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure`

我认为这是因为\*JDK7 未实现任何 **GCM** 加密套件。如何解决此问题？或者是否有其他方式可以从 Java 平台调用 Discourse API？

谢谢，  
Saurabh Khandelwal

---

<div class="post-metadata">

### Author: ![gerhard](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/gerhard/32/119479_2.png) [@gerhard](https://meta.discourse.org/u/gerhard)
#### Post date: [2020年五月27日 12:03 UTC](https://meta.discourse.org/t/calling-discourse-api-throws-sslhandshakeexception/152908/2 "2020-05-27T12:03:27Z")

</div>

我猜升级到 JDK8 不是可行的选择？

---

<div class="post-metadata">

### Author: ![Saurabh\_Khandelwal](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/saurabh_khandelwal/32/156332_2.png) [@Saurabh\_Khandelwal](https://meta.discourse.org/u/Saurabh_Khandelwal)
#### Post date: [2020年五月27日 12:22 UTC](https://meta.discourse.org/t/calling-discourse-api-throws-sslhandshakeexception/152908/3 "2020-05-27T12:22:49Z")

</div>

不，我们无法升级到 JDK8。  
我原本打算使用 JavaScript 的 AJAX 调用发起请求，但请求被 CORS 策略阻止了。  
如何为 Discourse 启用 CORS？

---

<div class="post-metadata">

### Author: ![gerhard](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/gerhard/32/119479_2.png) [@gerhard](https://meta.discourse.org/u/gerhard)
#### Post date: [2020年五月27日 12:55 UTC](https://meta.discourse.org/t/calling-discourse-api-throws-sslhandshakeexception/152908/4 "2020-05-27T12:55:34Z")

</div>

我认为您需要配置 `cors_origins` 站点设置。

---

<div class="post-metadata">

### Author: ![Saurabh\_Khandelwal](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/saurabh_khandelwal/32/156332_2.png) [@Saurabh\_Khandelwal](https://meta.discourse.org/u/Saurabh_Khandelwal)
#### Post date: [2020年五月27日 13:09 UTC](https://meta.discourse.org/t/calling-discourse-api-throws-sslhandshakeexception/152908/5 "2020-05-27T13:09:25Z")

</div>

那这条说明呢：  
**必须将 DISCOURSE\_ENABLE\_CORS 环境变量设置为 true 以启用 CORS。**  
该如何设置？

---

<div class="post-metadata">

### Author: ![gerhard](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/gerhard/32/119479_2.png) [@gerhard](https://meta.discourse.org/u/gerhard)
#### Post date: [2020年五月27日 13:25 UTC](https://meta.discourse.org/t/calling-discourse-api-throws-sslhandshakeexception/152908/6 "2020-05-27T13:25:55Z")

</div>

如果您是自托管，可以在 `app.yml` 中添加它。在我们的托管环境中，通常默认已启用。
