React native OkEpiner似乎不起作用
我需要一些帮助 我试图在我的react本机应用程序(v0.63)上实现SSLPining im已经按照OkHttp github页面上的文档进行了操作 以下是我为我的应用程序编写的代码:React native OkEpiner似乎不起作用,react-native,ssl,okhttp,certificate-pinning,public-key-pinning,React Native,Ssl,Okhttp,Certificate Pinning,Public Key Pinning,我需要一些帮助 我试图在我的react本机应用程序(v0.63)上实现SSLPining im已经按照OkHttp github页面上的文档进行了操作 以下是我为我的应用程序编写的代码: public class CustomClientFactory implements OkHttpClientFactory { @Override public OkHttpClient createNewNetworkModuleClient() { CertificatePinner ce
public class CustomClientFactory implements OkHttpClientFactory {
@Override
public OkHttpClient createNewNetworkModuleClient() {
CertificatePinner certificatePinner = new CertificatePinner.Builder()
.add(BuildConfig.HOSTNAME, BuildConfig.SHA_PUBLIC_KEY_1)
.add(BuildConfig.HOSTNAME, BuildConfig.SHA_PUBLIC_KEY_2)
.add(BuildConfig.HOSTNAME, BuildConfig.SHA_PUBLIC_KEY_3)
.build();
OkHttpClient.Builder client = new OkHttpClient.Builder()
.connectTimeout(0, TimeUnit.MILLISECONDS)
.readTimeout(0, TimeUnit.MILLISECONDS)
.writeTimeout(0, TimeUnit.MILLISECONDS)
.cookieJar(new ReactCookieJarContainer())
.certificatePinner(certificatePinner);
OkHttpClient newClient = OkHttpClientProvider.enableTls12OnPreLollipop(client).build();
return newClient;
}
}
OkHttpCertPin:
public class OkHttpCertPin {
public static void rebuildOkHttpForSslPinning() {
OkHttpClientProvider.setOkHttpClientFactory(new CustomClientFactory());
}
}
这是我在MainActivity上的onCreate方法:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
OkHttpCertPin.rebuildOkHttpForSslPinning();
}
它允许所有请求都通过,即使我使用随机公钥和主机名
我做错了什么
我从sslLabs获得的所有公钥都将仅限制主机BuildConfig.HOSTNAME的通信量,所有其他主机都将通过。这就是为什么你的证书管理员没有阻止任何东西 您可以创建自定义网络拦截器以拒绝所有其他流量。看 n、 b.将来,您可以实现一个EventListener,并打印出您要连接的主机和证书链中的pin,以帮助调试
请参见切题:是否确实需要启用TLS12onprellollipop,OkHttp应协商TLSv1.2,当它在Android上可用时。CertificateInner将仅限制主机BuildConfig.HOSTNAME的流量,所有其他主机都将通过。您希望发生什么情况,以及连接到哪些主机?你可以实现一个EventListener并打印出你要连接的主机和证书链中的pin来帮助调试。哦,那么我认为是什么错了?我想要的是除了BuildConfig.hostname之外的所有主机名都将受到限制,现在我使用okhttp提供的拦截器方法来打印每个调用的请求和响应,我想我可以使用拦截器打印主机,使用网络拦截器并短路这些请求。证书Pinner不是这个。是的,我想我对这个证书Pinner的想法是错误的,但是在阅读了你在我文章中的评论之后,我已经重构了我的代码