Articles of ssl certificate

无效/自签名证书上类似浏览器的行为

感觉就像我已经搜索了整个网络,但我发现的所有内容都是关于如何自动接受无效或自签名证书的提示。 (使用自定义HttpClient和SSLSocketFactory – 我已经开始工作了。) 但我想要的是我的应用程序是用户得到类似浏览器的对话框,询问“你真的想要信任这台服务器吗?在这里,看看它的证书。” (但仅当默认检查不信任证书时。) 然后证书应该放在应用程序的证书存储区中,以便下次自动接受。 所以我需要知道的是: 如何下载特定主机/端口组合的证书(链)(以便能够向用户显示)? 如何以某种方式存储证书,以便我以后可以在KeyStore加载它? 这是我在应用程序中计划的工作流程: 使用我的自定义HttpClient向服务器发送请求。 也许证书是系统信任的,或者已经存储在我的商店中(如果是,请转到4)。 如果请求因SSL问题而失败,请向用户显示证书并询问是否信任此连接。 如果用户选择信任,请将证书存储在我的商店中并转到1。 万岁,连接即可使用。 所以谁知道怎么做?

如何在Android上信任自签名证书?

我为我的服务器生成了自签名证书。 然后使用设置 – >安全性 – >安装将其添加到Android。 当我尝试使用应用程序连接到我的服务器时,我收到错误: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found. 据我所知,在我将证书添加到可信任之后它应该可以正常使用我的服务器,或者我错过了什么? 想法是通过Android系统添加证书,不要更改应用程序代码。 顺便说一句,我正在使用OkHttpClient进行网络连接。 也许我应该为https连接启用一些东西?

接受自签名SSL证书 – >在哪里设置默认的TrustManager

首先,我不得不承认我知道接受所有证书可以被视为没有安全性。 我们有“真正的”Certs,但仅限于我们的实时系统。 我们的测试系统上的证书是自签名的。 因此,只要我们开发,我们必须使用测试服务器,这迫使我去禁用证书。 我在Stackoverflow上看到了很多有关的问题,而且所有尝试的网络都在尝试做同样的事情:接受SSL证书。 然而,这些答案似乎都不适用于我的问题,因为我没有弄乱HTTPSUrlConnections 。 如果我正在请求代码通常看起来像这样(注释清除): //creates an HTTP-Post with an URL HttpPost post = createBaseHttpPost(); //loads the request Data inside the httpPost post.setEntity(getHttpPostEntity()); //appends some Headers like user-agend or Request UUIDs appendHeaders(post); HttpClient client = new DefaultHttpClient(); //mResponse is a custom Object which is returned //from the custom ResponseHandler(mResponseHandler) mResponse = client.execute(post, […]

cacerts.bks不存在

我已根植我的Android(4.0.4)手机并安装了一个应用程序,该应用程序通过我的计算机代理所有HTTP流量。 这工作正常,我可以看到和修改所有HTTP请求。 但HTTPS流量不会通过。 我已经导出了我的代理证书,但我发现/system/etc/security -folder中没有cacert.bks -file。 那么如何使用keytool将我的自定义证书添加到可信证书列表中?

这个android SSL固定实现是否正确,为什么这个错误出现在logcat中?

我在logcat中收到此错误。 我在我的android应用程序中实现了ssl pinning。 我想我做错了什么导致了这个错误。 05-19 17:39:54.998: E/NativeCrypto(30908): ssl=0x5eefaf80 cert_verify_callback x509_store_ctx=0x5dbea940 arg=0x0 05-19 17:39:54.998: E/NativeCrypto(30908): ssl=0x5eefaf80 cert_verify_callback calling verifyCertificateChain authMethod=ECDHE_RSA 以下是我的ssl固定android代码。 哪个有效,但会引发上述错误。 public static HttpClient getHttpClient(HttpParams params, Context context) throws CertificateException, KeyStoreException, NoSuchAlgorithmException, IOException, KeyManagementException, UnrecoverableKeyException { CertificateFactory cf = CertificateFactory.getInstance(“X.509”); InputStream caInput = context.getResources().openRawResource(R.raw.abc); Certificate ca; try { ca = cf.generateCertificate(caInput); } finally { try […]

Android <4.3 WebView https错误:回退到SSLv3,因为主机是TLS不容忍的

我的应用程序包含一个加载https url的WebView 。 我注意到在Android版本> 4.3都运行良好,但在较低版本上我收到此错误: external/chromium/net/http/http_stream_factory_impl_job.cc:865: [0804/151708:WARNING:http_stream_factory_impl_job.cc(865)] Falling back to SSLv3 because host is TLS intolerant: :443 并出现”page not found”消息。 Https页面是TLS v 1.2 ,我读过旧版本的Android不支持这种证书。 所以,如果我使用像SSLv3这样的东西,我保证一切都能在大多数Android版本上运行良好吗?

请求自动或用户选择适当的客户端证书

我正在开发一个可能连接到不同服务器的混合cordova应用程序。 其中一些确实需要客户证书。 在Android手机上安装相应的根证书+客户端证书。 在Chrome浏览器上,我得到以下对话框,为Web连接选择相应的客户端证书。 使用cordova插件cordova-client-cert-authentication ,WebView中的Http(s)请求会popup相同的对话框。 我的问题是如何在原生Android平台上实现Http(s)请求的自动证书选择 ,而无需明确声明相应的客户端证书。 或者有类似用户选择的证书,如Chrome上实现的? 这是当前的实现,它会抛出握手exception: try { URL url = new URL( versionUrl ); HttpsURLConnection urlConnection = ( HttpsURLConnection ) url.openConnection(); urlConnection.setConnectTimeout( 10000 ); InputStream in = urlConnection.getInputStream(); } catch(Exception e) { //javax.net.ssl.SSLHandshakeException: Handshake failed }

Android 4.x中的SSL客户端身份validation

我想创建一个连接到服务器的应用程序。 此服务器使用SSL客户端身份validation 应用程序的用户应该能够选择证书并允许使用它,就像它在浏览器应用程序中实现一样。 在浏览器应用程序中,身份validation按预期工作,因此我使用的证书是有效的。 当我尝试在我的应用程序中连接时,我收到以下错误: javax.net.ssl.SSLHandshakeException: javax.net.ssl.SSLProtocolException: SSL handshake terminated: ssl=0x2a2d3b38: Failure in SSL library, usually a protocol error error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure (external/openssl/ssl/s3_pkt.c:1290 0x2a2df880:0x00000003) 我试着按照我的实现的android文档。 统一ICS中的密钥库访问 HttpsURLConnection的 这是我的示例活动的代码: public class ClientCertificateActivity extends Activity implements KeyChainAliasCallback { protected static final String TAG = “CERT_TEST”; private String alias; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); […]

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

我正在使用Twitter的新Fabric SDK for Android。 我已经将Charles设置为我的Mac上的代理,因此我可以分析API响应中的JSON有效负载。 启用了Charles中的SSL代理并为我的测试设备授予了访问权限。 但是,Charles对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中实现叶/中间证书固定?

我已经在我的项目中实现了叶子证书,它工作正常。 请检查下面的代码,现在问题是叶子证书将在我的服务器一年后过期所以我想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 […]