【发布时间】:2016-07-02 10:35:09
【问题描述】:
我对整个 WebSocket 和 SSL 证书有点陌生。
所以我在 Android 端创建了自己的 WebSocket 服务器,网站是客户端。我能够使其与常规 WebSocket (ws://) 一起使用,但由于它需要 SSL 证书,所以它不能使用安全的 WebSocket (wss://)。
我的问题是如何获得 SSL 证书?根据我的阅读,SSL 证书是基于域的。我需要它用于本地主机。我需要这个地址:
wss://localhost:8080/ws/main
我如何才能获得可以与localhost 一起使用的 SSL 证书。
感谢您的宝贵时间!
======================= 编辑=====================
我这样做的原因: 我的 Android 应用程序中有一个蓝牙服务,它将从连接的健康蓝牙设备(如体重秤和血压机)获取数据。我已经实现了这部分,我想获取这些数据并将其传递给网站。 WebSocket 似乎更容易,因为用户将打开我的应用程序,当他们称重时,它会自动用体重秤的重量填充网站上的字段。我希望我清楚这一点。
为此,我需要有一种方法将体重或血压值从 Java (Android) 传递到在 WebView 中加载的网站。所以我认为 WebSocket 是最简单的方法。
如果您认为有更简单的方法,请告诉我。
另外,我已经尝试过自签名证书,但出现以下错误:
I/X509Util: Failed to validate the certificate chain, error: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.
或
Exception=javax.net.ssl.SSLException: Error occured in delegated task:javax.net.ssl.SSLException: Not trusted server certificate
谢谢!!!
【问题讨论】:
-
从安全角度来看,在 Android 设备上打开端口是一个冒险的提议。除此之外,请解释“网站”如何使用
localhostWeb 套接字。此 Web 服务器是否也托管在 Android 设备上?如果它是托管在其他地方的 Web 服务器,我看不出它如何使用只能通过localhost获得的 Web 套接字。关于 SSL 和localhost,这是不可能的 AFAIK。 -
websocket 服务器在 Android 应用程序中,我在同一应用程序的 web 视图中加载 websocket 客户端(网站)。这就是为什么它是
localhost。此实现适用于常规 websocket,我能够发送数据。我知道逻辑不是问题。感谢您的回复。 -
我不清楚你为什么首先使用 WebSockets,因为有更有效和更安全的选项可以让设备上的 Web 应用程序与你的 Java 代码通信。鉴于数据包没有离开您的设备,SSL 似乎毫无意义。无论如何,除了可能是自签名 SSL 证书之外,我不知道有任何 SSL 加密
localhost的方法。 -
@CommonsWare 请在帖子中查看我的编辑。我已经解释了我为什么这样做。再次感谢!!
-
"如果您认为有更简单的方法,请告诉我" --
addJavascriptInterface()onWebView。
标签: android ssl https websocket