Articles of ssl certificate

如何在卸载应用程序时删除App安装的可信CA证书

我有一个应用程序,提供安装CA证书的选项,它存储在可信凭据的用户选项卡中,它按预期工作。 仅供参考 (这是我安装证书的方式): Intent installIntent = KeyChain.createInstallIntent(); javax.security.cert.X509Certificate x509 = javax.security.cert.X509Certificate.getInstance(caRootCertBytes); installIntent.putExtra(KeyChain.EXTRA_CERTIFICATE, x509.getEncoded()); installIntent.putExtra(KeyChain.EXTRA_NAME,caRootCertName); startActivity(installIntent); 如果卸载了应用程序,则证书仍保留在受信任的凭据中 。 我希望在卸载应用程序时卸载证书。 我想过使用KeyStore deleteEntry方法删除证书。 仅供参考 (我没有测试过。希望它能够正常工作……我会在测试后更新) javax.security.cert.X509Certificate x509 = javax.security.cert.X509Certificate.getInstance(caRootCertBytes); KeyStore ks = KeyStore.getInstance(“AndroidCAStore”) if (ks != null) { ks.load(null, null); Enumeration aliases = ks.aliases(); while (aliases.hasMoreElements()) { String alias = (String) aliases.nextElement(); java.security.cert.X509Certificate cert = (java.security.cert.X509Certificate) ks.getCertificate(alias); String […]

哪里可以find用户安装的android 4.0及以上的证书

我已经安装了我的证书(.crt),如下所示:将设备连接到我的计算机 – >将证书复制到内部存储 – >在设备上转到设置 – >安全 – >从存储安装 – >并获得“安装成功“或其他东西(它要求我为设备添加密码)。 然后我尝试在设置 – >安全 – >可信凭证中查找它,但在系统或用户选项卡中找不到它…(我知道它应该在用户选项卡中,但它是空的)。 我认为在安装过程中没有问题,因为它要求我输入密码(并且在我通过单击安全菜单中的“清除凭据”删除所有证书之前不允许我撤消它) 帮助some1? 谢谢!

使用客户端证书和Android的HttpsURLConnection通过SSL上传文件

我正在尝试将文件上传到受SSL保护的Web服务,并且需要客户端证书(由内部CA签名)。 与上传文件相比 ,与Web服务的通信运行良好(下载文件,查询,运行命令和执行各种POST工作正常)。 上传文件时,我得到一个SSLException(javax.net.ssl.SSLException),上面写着“写入错误:ssl = 0x5fe209c0:系统调用期间的I / O错误,同步连接重置”。 我创建了一个重复的服务器并删除了SSL和客户端证书要求,并尝试通过’vanilla’HTTP上传,并且它运行良好。 我尝试过使用setFixedLengthStreamingMode(int)和setChunkedStreamingMode(int)但没有成功。 使用它们时,会从write方法抛出exception,并且当不使用它们中的任何一个时,从getResponseCode()的调用中抛出相同的exception。 我在服务器的EventVwr找不到任何关于错误的EventVwr 。 我们的其他客户端(iOS客户端)能够在那里上传文件,所以它必须是我做的 – 但我无法弄清楚是什么。 我不确定如何进一步调试此问题。 请帮忙。 编辑1 我们做了很多调试工作,发现: 小文件按预期上传(44kb是成功上传的最大文件的大小,并在~1200ms上传)。 46kb文件无法上传。 失败大约需要2分钟(134120ms)。 编辑2 在你的评论中读到之后,现在我让Fiddler玩得很好(感谢这个问题 )。 Fiddler得到了这个文件,但没有成功发送它。 请求(原始)看起来像: POST https://192.168.2.2/rest/transfer/strong/Upload/Full?Path=%5C20140807_113255_20.jpg&Root=2 HTTP/1.1 SessionToken: 1234 // We use this for session management FileMetadata: {“FileSize”:”1315496″,”FileName”:”GrumpyCat.jpg”} Connection: Keep-Alive User-Agent: Dalvik/1.6.0 (Linux; U; Android 4.1.1; GT-N7100 Build/JRO03C) Host: 192.168.2.2 Accept-Encoding: […]

在Android模拟器上安装自定义证书时,两个凭据使用选项“VPN和应用程序”与“Wifi”之间有什么区别?

我正在尝试在Android模拟器上安装Charles证书,我注意到有两个凭据使用选项:“VPN和应用程序”和“Wi-Fi”。 我试着四处寻找有关这两个选项的解释,但是我发现的那个只是说“选一个适合你的用例”。 这两个选项有什么区别? 开发人员应该选择哪一个?

如何在Android中实现叶/中间证书固定?

我已经在我的项目中实施了叶证书,它工作正常。 请检查下面的代码,现在问题是叶证书将在我的服务器一年后过期,所以我想validation叶证书,以便它到期/无效时,我使用中级证书? 有没有例子来实现中间证书? 请帮帮我! 码:- SSLContext sslContext = null; try { CertificateFactory cf = CertificateFactory.getInstance("X.509"); InputStream caInput = context.getResources().openRawResource(certRawRef); Certificate ca; try { ca = cf.generateCertificate(caInput); } finally { caInput.close(); } // Create a KeyStore containing our trusted CAs String keyStoreType = KeyStore.getDefaultType(); KeyStore keyStore = KeyStore.getInstance(keyStoreType); keyStore.load(null, null); keyStore.setCertificateEntry("ca", ca); // Create a TrustManager […]

以编程方式添加证书颁发机构,同时保持Android系统SSL证书

在StackOverflow上有关于这个主题的很多问题,但我似乎没有find与我的问题有关的问题。 我有一个需要与HTTPS服务器进行通信的Android应用程序:有的使用在Android系统密钥库(普通HTTPS网站)中注册的CA进行签名,有的使用我自己拥有的CA进行签名,但不在Android系统密钥存储区(带有例如自动签名的证书)。 我知道如何以编程方式添加我的CA,并强制每个HTTPS连接使用它。 我使用下面的代码: public class SslCertificateAuthority { public static void addCertificateAuthority(InputStream inputStream) { try { // Load CAs from an InputStream // (could be from a resource or ByteArrayInputStream or …) CertificateFactory cf = CertificateFactory.getInstance("X.509"); InputStream caInput = new BufferedInputStream(inputStream); Certificate ca; try { ca = cf.generateCertificate(caInput); } finally { caInput.close(); } // Create […]

如何将请求代理到api.twitter.com,包括SSL证书?

我正在使用Twitter的新的面向Android的Fabric SDK 。 我已经在我的Mac上设置了Charles作为代理,所以我可以分析API响应中的JSON负载。 Charles中的SSL代理已启用,访问权限已授予我的testing设备。 但是,查尔斯向我展示了任何向Twitter发送请求的错误: url https://api.twitter.com 状态失败 SSLHandshake 失败 :收到致命警报:certificate_unknown Logcat显示我: retrofit.RetrofitError: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found. Caused by: javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found. at com.android.org.conscrypt.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:306) at com.squareup.okhttp.Connection.upgradeToTls(Connection.java:241) at com.squareup.okhttp.Connection.connect(Connection.java:158) at com.squareup.okhttp.Connection.connectAndSetOwner(Connection.java:174) at com.squareup.okhttp.OkHttpClient$1.connectAndSetOwner(OkHttpClient.java:120) Caused by: java.security.cert.CertificateException: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found. at […]

Android WebView SSL“安全警告”

我正在为客户端构build一个应用程序的testing版本。 这个应用程序的一部分使用调用一个基于SSL的网站的WebView。 客户端又提供了一个testing域,证书名称与FQDN不匹配。 唉,他们不能提供相匹配的证书。 🙁 我正在使用一行代码(同样,不是用于生产用途 – 仅用于testing目的)在伴随iOS ad hoc应用程序上解决此问题。 我已经在Android操作系统上search了类似的信息,但是我在这里和其他地方看到的解决scheme足以让我的头脑比较大转弯! 有没有一个简单的方法来解决这个问题? 即使面向用户的设置隐藏在某个地方? 线索赞赏!

CertificateException – OpenSSLX509CertificateFactory $ ParsingException

我有我的Android项目中的连接到安全服务器的以下代码。 我得到parsing错误。 [粘贴下面]。如果有人知道这个例外,请让我知道。 提前致谢。 代码片段 CertificateFactory cf = CertificateFactory.getInstance("X.509"); InputStream caInput = new BufferedInputStream(new FileInputStream("/storage/emulated/0/cert.p12")); Certificate ca; try { ca = cf.generateCertificate(caInput); // error at this line System.out.println("ca=" + ((X509Certificate) ca).getSubjectDN()); } finally { caInput.close(); } 错误 01-15 17:01:00.107: W/System.err(14932): java.security.cert.CertificateException: com.android.org.conscrypt.OpenSSLX509CertificateFactory$ParsingException: com.android.org.conscrypt.OpenSSLX509CertificateFactory$ParsingException: java.lang.RuntimeException: error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag 01-15 17:01:00.107: W/System.err(14932): at com.android.org.conscrypt.OpenSSLX509CertificateFactory.engineGenerateCertificate(OpenSSLX509CertificateFactory.java:272) 01-15 17:01:00.107:W […]

如何解决“input凭证存储密码”的问题?

所以我正在玩小提琴手的网页代理。 我需要解密httpsstream量。 所以我试图把提琴手根CA证书在我的设备信任存储。 但它一直问我"Enter the password for credential storage" 。 如果我input任何东西,然后点击进入,我看到一个Toast消息说 凭证存储已被删除 并再次input密码提示。 这继续循环。 为了logging,我select了"Wifi"作为凭证使用,而不是"App n VPN" (不太确定)。 接下来有线的东西,我注意到,每次提示后,标签的描述变化 包包含 每次显示密码提示时,它的值都会增加。 例如 – 3个CA证书,4个CA证书等等… 尽pipe我希望我的设备能够接受此证书,但是如果有人能够解释“凭证存储”概念和CA证书文本的奇怪增量,我将不胜感激。 使用Fiddler Web代理拦截Androidnetworking调用