Android Keystore KeyPairGeneratorSpec 我从哪里获得 X500Principal
Android Keystore KeyPairGeneratorSpec Where do I get X500Principal
我正在构建一个密钥库,我将在其中隐藏我的授权和刷新令牌。我在 API 19。查看 KeyPairGeneratorSpec 的示例。大多数示例使用虚拟证书 (X500Principal)。我对证书的工作不多。我不确定我从哪里得到这个 "subject." 这是生成签名 APK 时使用的证书吗? IE https://developer.android.com/studio/publish/app-signing.html
还是从 CA 之类的组织获得证书?
也就是说,一旦我有了这些数据,我该如何将它转换成这台 X500?如何将数据映射到 x500?
由于我公司处理应用程序签名的方式,前者会有问题。我不确定我能否访问它。
正在关注
KeyPairGeneratorSpec spec = new KeyPairGeneratorSpec.Builder(this)
.setAlias(k)
.setSubject(new X500Principal("CN=Sample Name, O=Android Authority"))
.setSerialNumber(BigInteger.ONE)
.setStartDate(start.getTime())
.setEndDate(end.getTime())
.build();
KeyPairGenerator generator = KeyPairGenerator.getInstance("RSA", "AndroidKeyStore");
签署您的 .apk 以在 Google Play Store 上分发和使用 AndroidKeyStore 加密敏感用户数据是不同的。前者在您的开发机器(即您的笔记本电脑或台式电脑)上使用 Java 密钥库 (jks) 进行,而另一个在安装了您的应用程序的手机上进行。
您不需要为 X500Principal 获取证书颁发机构。您引用的示例代码是正确的,您只需将其替换为例如您的应用程序名称和组织:
new X500Principal("CN=StarWind, O=StarWindOrganization");
如果您想了解不同缩写的含义,请参阅 Wikipedia entry for Lightweight Directory Access Protocol,但仅举个例子,"CN" 表示 "common name","O" 表示组织。你在这里提供的属性只是为了形成一个唯一的条目,就像你在 Java 中形成一个唯一的包名称一样,比如 com.starwind.myapp
.
如果您觉得它令人困惑,您可以查看 Scytale,它是 Android KeyStore 的包装器。即使您最终没有使用该库,其中的代码对于了解如何使用 KeyStore 也非常有用。
我正在构建一个密钥库,我将在其中隐藏我的授权和刷新令牌。我在 API 19。查看 KeyPairGeneratorSpec 的示例。大多数示例使用虚拟证书 (X500Principal)。我对证书的工作不多。我不确定我从哪里得到这个 "subject." 这是生成签名 APK 时使用的证书吗? IE https://developer.android.com/studio/publish/app-signing.html
还是从 CA 之类的组织获得证书?
也就是说,一旦我有了这些数据,我该如何将它转换成这台 X500?如何将数据映射到 x500?
由于我公司处理应用程序签名的方式,前者会有问题。我不确定我能否访问它。
正在关注
KeyPairGeneratorSpec spec = new KeyPairGeneratorSpec.Builder(this)
.setAlias(k)
.setSubject(new X500Principal("CN=Sample Name, O=Android Authority"))
.setSerialNumber(BigInteger.ONE)
.setStartDate(start.getTime())
.setEndDate(end.getTime())
.build();
KeyPairGenerator generator = KeyPairGenerator.getInstance("RSA", "AndroidKeyStore");
签署您的 .apk 以在 Google Play Store 上分发和使用 AndroidKeyStore 加密敏感用户数据是不同的。前者在您的开发机器(即您的笔记本电脑或台式电脑)上使用 Java 密钥库 (jks) 进行,而另一个在安装了您的应用程序的手机上进行。
您不需要为 X500Principal 获取证书颁发机构。您引用的示例代码是正确的,您只需将其替换为例如您的应用程序名称和组织:
new X500Principal("CN=StarWind, O=StarWindOrganization");
如果您想了解不同缩写的含义,请参阅 Wikipedia entry for Lightweight Directory Access Protocol,但仅举个例子,"CN" 表示 "common name","O" 表示组织。你在这里提供的属性只是为了形成一个唯一的条目,就像你在 Java 中形成一个唯一的包名称一样,比如 com.starwind.myapp
.
如果您觉得它令人困惑,您可以查看 Scytale,它是 Android KeyStore 的包装器。即使您最终没有使用该库,其中的代码对于了解如何使用 KeyStore 也非常有用。