exoplayer:2.15.0添加证书
时间: 2024-05-18 07:18:50 浏览: 15
如果你要使用ExoPlayer 2.15.0加载HTTPS媒体数据,并且使用的是自签名证书,那么你需要在应用中添加这个证书。以下是一个示例代码:
首先,在`res`目录下创建一个`raw`目录,并将自签名证书文件(例如`my_certificate.crt`)放在其中。
然后,在应用启动时,你需要使用以下代码将证书加载到`SSLContext`中:
```
// 加载自签名证书
CertificateFactory cf = CertificateFactory.getInstance("X.509");
InputStream caInput = context.getResources().openRawResource(R.raw.my_certificate);
Certificate ca;
try {
ca = cf.generateCertificate(caInput);
} finally {
caInput.close();
}
// 创建一个Keystore,并将证书加载到其中
String keyStoreType = KeyStore.getDefaultType();
KeyStore keyStore = KeyStore.getInstance(keyStoreType);
keyStore.load(null, null);
keyStore.setCertificateEntry("my_certificate", ca);
// 创建一个TrustManagerFactory,并使用Keystore初始化它
String tmfAlgorithm = TrustManagerFactory.getDefaultAlgorithm();
TrustManagerFactory tmf = TrustManagerFactory.getInstance(tmfAlgorithm);
tmf.init(keyStore);
// 创建一个SSLContext,并使用TrustManagerFactory初始化它
SSLContext sslContext = SSLContext.getInstance("TLS");
sslContext.init(null, tmf.getTrustManagers(), null);
// 设置ExoPlayer的SSL socket factory和hostname verifier
OKHttpDataSourceFactory okHttpDataSourceFactory = new DefaultDataSourceFactory(context,
Util.getUserAgent(context, context.getString(R.string.app_name)))
.createDataSourceFactory(new DefaultHttpDataSourceFactory(Util.getUserAgent(context, context.getString(R.string.app_name))));
okHttpDataSourceFactory.setSSLSocketFactory(sslContext.getSocketFactory());
okHttpDataSourceFactory.setHostnameVerifier((hostname, session) -> true);
```
在这个例子中,我们首先加载自签名证书,并将其添加到一个`Keystore`中。然后,我们创建了一个`TrustManagerFactory`,并使用`Keystore`初始化它。接着,我们创建了一个`SSLContext`,并使用`TrustManagerFactory`初始化它。
最后,我们使用`OKHttpDataSourceFactory`类创建了一个`DataSource.Factory`对象,并将其转换为`HttpDataSource.Factory`对象。然后,我们调用`setSSLSocketFactory`方法设置SSL socket factory,以及`setHostnameVerifier`方法设置hostname verifier。这样,ExoPlayer就可以使用你的自签名证书加载HTTPS媒体数据了。
需要注意的是,这个例子中的`setHostnameVerifier`方法并没有实际验证hostname。如果你需要验证hostname,你需要在这个方法中自己实现验证逻辑。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)