gpt4 book ai didi

java - 如何更新我的 Android 应用程序中的 SSL 证书?

转载 作者:塔克拉玛干 更新时间:2023-11-02 18:58:20 28 4
gpt4 key购买 nike

最近我在做一个实现SSL的项目。

SSL 证书每年过期一次。在我更新服务器上的证书后,它在 android 中抛出异常。

06-13 11:20:27.709: D/allenj(30076): javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathValidatorException: 未找到证书路径的信任 anchor 。

我看了项目代码后,看到有一个bks文件,那么,是不是意味着我必须每年更新一次bks文件,我也必须重新上传应用程序到google play。

问题是处理 SSL 证书更新的标准方法是什么?感谢您的帮助。

代码摘录

nnable Register_runnable = new Runnable(){
@Override
public void run() {
EditText emailText = (EditText) findViewById(R.id.editText1regist);

EditText pwText = (EditText) findViewById(R.id.editText2registpw);

String end = "\r\n";
String twoHyphens = "--";
String boundary = "*****";
try {
KeyStore keyStore = KeyStore.getInstance("BKS");
InputStream in =
getResources().openRawResource(R.raw.ballooncardbks);
keyStore.load(in, "".toCharArray());
TrustManagerFactory tmf =
TrustManagerFactory.getInstance("X509");
tmf.init(keyStore);

SSLContext context = SSLContext.getInstance("TLS");
context.init(null, tmf.getTrustManagers(), null);

String actionUrl = "https://app.ballooncard.com/api/client/register/format/json";
URL url = new URL(actionUrl);
HttpsURLConnection con = (HttpsURLConnection) url.openConnection();
// con.setDoInput(true);
con.setDoOutput(true);
con.setUseCaches(false);
con.setRequestMethod("POST");

con.setSSLSocketFactory(context.getSocketFactory());

con.setRequestProperty("Connection", "Keep-Alive");
con.setRequestProperty("Charset", "UTF-8");
con.setRequestProperty("Content-Type", "multipart/form-data;boundary=" + boundary);

最佳答案

看起来该应用正在使用“证书固定”,这意味着证书已被硬编码到应用中,并且已指示该应用仅接受该证书而不接受其他证书。

这提高了安全性,但代价是您需要在证书过期时(最好是在证书过期之前)更新您的应用程序。您可以按照我在此处创建的帖子中的说明进行操作:

https://stackoverflow.com/a/24007536/276949

从您的证书生成一个新的 .bks 文件。完成此操作后,覆盖旧的 .bks 文件,您的应用应该可以通过 SSL 成功连接。

关于java - 如何更新我的 Android 应用程序中的 SSL 证书?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24197201/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com