【问题标题】:Android - Video streaming over local HTTPS server: SSL certificate rejectedAndroid - 通过本地 HTTPS 服务器流式传输视频:SSL 证书被拒绝
【发布时间】:2011-10-19 22:27:54
【问题描述】:

我需要在 Android 中通过本地 HTTPS 服务器流式传输视频(当然是做一些后台 DRM)。然后,Android 媒体播放器连接到本地服务器,将视频内容“流式传输”到屏幕上。

在 HTTP 服务器上一切正常,但只要我启用 SSL,视频播放器就会停止。

如果我使用浏览器从我的应用程序外部连接到 HTTPS 服务器,我会收到一个 SSL 警告,我可以忽略它,然后视频播放器就会启动。

有没有办法禁用媒体播放器模块的严格证书处理?我已经看到很多关于如何使用我自己的 HTTP 连接来执行此操作的帖子,但没有关于如何为媒体播放器执行此操作的帖子。

谢谢!

更新:谷歌搜索“内联网证书”或“即时证书”,你会发现一些应该可以工作的东西。明天将尝试并在此处发布答案。

【问题讨论】:

  • 您能否详细说明您在使用浏览器时看到的特定 SSL 警告?
  • 在浏览器访问一个不受信任的站点时,它告诉我这个站点的通常做法可能存在安全风险。我有选择:继续或取消。阅读一些关于如何在全球范围内启用它的消息(很大的安全风险,因此不可能):superuser.com/questions/27268/…。我基本上想做同样的事情,但只是为我的应用程序添加证书例外 - 而不编写派生的 HTTP 客户端。
  • Android

标签: android video ssl certificate


【解决方案1】:

你一定要试试这个

    // Create a trust manager that does not validate certificate chains
    TrustManager[] trustAllCerts = new TrustManager[]{
        new X509TrustManager() {
            public java.security.cert.X509Certificate[] getAcceptedIssuers() {
                return null;
            }
            public void checkClientTrusted(
                java.security.cert.X509Certificate[] certs, String authType) {
            }
            public void checkServerTrusted(
                java.security.cert.X509Certificate[] certs, String authType) {
            }
        }
    };

    // Install the all-trusting trust manager
    // Try "SSL" or Replace with "TLS"
    try {
        SSLContext sc = SSLContext.getInstance("SSL");
        sc.init(null, trustAllCerts, new java.security.SecureRandom());
        HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
    } catch (Exception e) {
    }

    // Now you can access an https URL without having the certificate in the truststore 
           // Your Code Goes Here

这里有更多解决方案
Certificate Validation in an HTTPS Connection
Android: Trusting SSL certificates
https://stackoverflow.com/a/6378872/1008278

【讨论】:

  • 我们如何为视频视图做到这一点?请详细说明你的答案?
  • 在通过https调用本地或外部文件之前添加上述代码
  • 你以前试过这个吗?我问这个为什么,因为在视频视图中我们有一个 setVideoURI 方法。只是我们需要在其中传递视频网址。我不知道如何在其中添加上述代码。请编辑您的答案。这样它会帮助我。提前致谢
  • 把你的原始代码贴在某个txt文件中的某个地方,给个txt文件的链接,我会发给你,希望对你有帮助
  • 如果您正在调用其他应用程序(活动),例如默认视频播放器,这将不起作用。
【解决方案2】:

这实际上是解决方案,添加这个 android:usesCleartextTraffic="true" 到你的清单,所以它也允许连接到 http,

解决方案取自:How to allow all Network connection types HTTP and HTTPS in Android (9) Pie?

【讨论】:

    猜你喜欢
    • 2015-10-28
    • 2014-12-17
    • 2011-06-06
    • 2017-07-27
    • 1970-01-01
    • 1970-01-01
    • 2011-09-09
    相关资源
    最近更新 更多