Articles of 证书

在Android设备上生成客户端证书

我想创build一个将使用SSL客户端证书authentication的Android应用程序。 我已经find示例代码,告诉我如何在Android应用程序中使用SSL客户端证书身份validation。 这对我来说很清楚。 我的问题是,我想在设备上生成一个SSL客户端证书。 简单地说,我希望我的程序执行以下操作: 在设备上安装程序时,应在设备上生成客户端证书(首次运行时),并将公钥指纹发送到我的服务器。 (证书必须在首次使用时生成)。 如何从我的应用程序生成客户端证书和Android设备?

我无法通过keytool获取SHA1证书

我正在尝试使用以下命令在macos sierra上查找我的签名密钥存储区的SHA1哈希值: keytool -exportcert -alias androiddebugkey -keystore $HOME/.android/debug.keystore -list -v -storepass android 结果如下所示: 别名:androiddebugkey 创作date:2017年10月25日 inputtypes:PrivateKeyEntry 证书链长度:1 证书[1]: keytool错误:java.util.IllegalFormatConversionException:d!= java.lang.String java.util.IllegalFormatConversionException:d!= java.base中的java.lang.String / java.util.Formatter $ FormatSpecifier.failConversion(Formatter.java: 4331)在java.base / java.util.Formatter $ FormatSpecifier.printInteger(Formatter.java:2846)在java.base / java.util.Formatter $ FormatSpecifier.print(Formatter.java:2800)at java.base / java 。java.util.Formatter.format(Formatter.java:2581)在java.base / java.util.Formatter.format(Formatter.java:2517)位于java.base / java.lang.String.format(String.java:2747 )在java.base / sun.security.tools.keytool.Main.printX509Cert(Main.java:3182)在java.base / sun.security.tools.keytool.Main.withWeak(Main.java:3151)。基于/ sun.security.tools.keytool.Main.doPrintEntry(Main.java:1995)在java.base / sun.security.tools.keytool.Main.doCommands(Main.java:1212)在java.base / sun。 security.tools.keytool.Main.run(Main.java:397)at java.base […]

如果没有以前的互联网连接,则无法validationAndroid自签名证书

使用SSL基础架构: 我们有一个工作的客户端/服务器设置,Android版本4.2和4.4的手机充当客户端,必须通过自签名的SSL证书validation服务器。 问题: 只要设备在尝试连接之前至less有一次互联网访问,服务器证书validation就会起作用。 但是,如果执行出厂重置,并且设备直接连接到专用networking而没有互联网连接,则证书validation将失败。 重现行为: 出厂重置手机 重新启动,而不select连接到WiFi与互联网接入 尝试validation自签名的SSL证书 – > FAILS 使用互联网连接WiFi 重新连接到原来的专用networking 尝试validation自签名SSL证书 – > WORKS 从技术上讲,设备不需要互联网访问来validation自签名证书。 在进行任何SSL服务器validation之前,是否会有某种黑名单需要加载? 我能阻止这种行为吗? 创buildSSL上下文: //Using a client certificate String password = "clientpass"; KeyStore keyStore = KeyStore.getInstance("PKCS12"); InputStream is = context.getResources().openRawResource(R.raw.client); keyStore.load(is, password.toCharArray()); is.close(); KeyManagerFactory kmf = KeyManagerFactory.getInstance("X509"); kmf.init(keyStore, password.toCharArray()); KeyManager[] keyManagers = kmf.getKeyManagers(); // Using self signed […]

Android – 本地HTTPS服务器上的videostream:SSL证书被拒绝

我需要通过本地HTTPS服务器(当然要做一些背景DRM)在Android中streamvideo。 然后Android媒体播放器连接到本地服务器,将video内容“stream”到屏幕上。 这一切工作正常与HTTP服务器,但只要我启用SSL,video播放器停止。 如果我使用浏览器从应用程序外部连接到HTTPS服务器,则会收到一条SSL警告,我可以忽略,然后video播放器启动。 有没有办法禁用媒体播放器模块严格的证书处理? 我已经看到了很多关于如何使用我自己的HTTP连接来完成这个任务,但没有关于如何为媒体播放器做到这一点。 谢谢! 更新:谷歌的“内联网证书”或“即时证书”,你会发现一些应该工作。 明天将试用,并在这里发布答案。

Bouncy Castle Keystore(BKS):java.io.IOException:密钥库的版本错误

我必须连接到基于REST的web服务。 ( https://someurl.com/api/lookup/jobfunction/lang/EN ) 在IE或者Chrome浏览器中,当我尝试访问这个URL时,我得到一个我必须信任并接受的证书。然后我必须input用户名和密码,然后得到JSON响应。 同样的事情,我必须做一个android应用程序编程。 试用自定义的EasySSLSocketFactory和EasyX509TrustManager,没有工作。 我得到了以下错误:java.security.cert.CertPathValidatorException:找不到证书path的信任锚点。 使用BKS密钥库,请注意mykeystore.bks是一个空文件,然后执行下面的命令 keytool -importcert -v -trustcacerts -file "test.crt" -alias IntermediateCA -keystore "mykeystore.bks" -provider org.bouncycastle.jce.provider.BouncyCastleProvider -providerpath "bcprov-jdk15on-148.jar" -storetype BKS -storepass abcd1234 keytool -list -keystore "mykeystore.bks" -provider org.bouncycastle.jce.provider.BouncyCastleProvider -providerpath "bcprov-jdk15on-148.jar" -storetype BKS -storepass abcd1234 MyHTTPClient.java如下所示: public class MyHttpClient extends DefaultHttpClient { final Context context; public MyHttpClient(Context context) { this.context = […]

在Android 4 ICS上使用SSL客户端证书的WebView

我在Android上的本地WebView有问题。 我需要使用SSL客户端证书与网站进行身份validation。 Android WebView似乎不支持这一点。 作为解决方法,我使用了WebView的修改版本: https://github.com/yonekawa/webview-with-client-certificate 修改后的WebView通过将正确configuration的SslSocketFactory注入到标准Android WebView中来工作。 这在Android 2.x设备上正常工作。 但是,使用Android 4 ICS,它不再工作。 SslSocketFactory在ICS中仍然存在,但似乎不再使用。 所以我的问题是:有谁成功地在ICS上configurationAndroid WebView,以便它可以与客户端证书一起使用? 或者有其他的select吗? 我已经尝试过了: 将SSL客户端证书导入到Android密钥存储库中,并仅使用WebView而不做任何修改。 这不起作用,客户端证书不会与请求一起发送。 不过,它在本地浏览器中工作。 使用HttpClient自己创buildSSL连接,获取网站的HTML并将其交给WebView。 这基本上工作,但我需要拦截WebView所做的所有请求,并自己处理它们。 但是,WebView不提供POST请求的数据,这使得这种方法对我无法使用。

用多个证书签署申请

从https://developer.android.com/studio/publish/index.html上的签名文档: 当系统正在安装应用程序的更新时,如果新版本中的任何证书都与旧版本中的任何证书相匹配,则系统允许更新。 这表示应用程序可以使用多个证书进行签名。 这是一个有趣的选项,允许多个实体签署一个应用程序。 例如:最初由设备制造商签名的系统应用程序。 进一步的更新可以由开发者签署。 我误读了文档还是这真的有可能? 如果是这样,怎么样? 是否有任何其他的方式来支持不同的证书的应用程序,有两个或更多的实体签署?

Android中央密钥库

我希望有一种方法可以在Android设备上以编程方式访问中央可信密钥库。 我知道有一个存在,至less用于validationSSL连接等,这也附带了一个方便的工具,用于添加证书,浏览等(在设置 – >位置和安全 – >pipe理可信证书下find) 我希望能够以编程方式检索公钥从encryption文件等 鉴于可用的文档,似乎其他应用程序开发人员正在他们的应用程序内pipe理自己的密钥库,这似乎是多余的。 有任何想法吗?

Play商店错误“您上传了使用不安全证书签名的APK”

我正尝试将游戏上传到Unity3D开发的Play商店。 我已经使用所有必需的参数在内置方法中使用Unity签署了apk,但是在尝试在Play商店上载APK时出现此错误 You uploaded an APK that is signed with an insecure certificate. RSA or DSA key size must be at least 2048 bits.

Android设备如何获得开发人员的公钥?

Android系统要求所有安装的应用程序都使用私钥由应用程序开发人员持有的证书进行数字签名。 公钥如何具体分配给客户端Android设备? 当开发人员发布应用程序时,apk中是否包含公钥? 如果是这样,密钥存储在哪里? 还是Android市场,例如Google Play,在下载应用程序时,会保存一个开发人员ID列表以及相应的公钥,并将正确的密钥推送到客户端设备? 有没有文件传达这些信息? 非常感谢任何input。