قم باستخراج معلومات سلسلة الشهادات من شهادة X509 الموقعة (استجابة CSR) في Android / BouncyCastle
-
12-12-2019 - |
سؤال
هل يمكنني استخراج معلومات سلسلة الشهادات من شهادة عميل X509 موقعة من CA باستخدام Android أو BouncyCastle libs؟
لدي عميل Android يتلقى شهادة X509 موقعة من CA من خادم موثوق به.أريد حفظ شهادة العميل الموقعة ومفتاحي الخاص في ملف PKCS12 (.p12).أقوم بذلك حاليًا عن طريق إنشاء ملف KeyStore
الكائن وإضافة الشهادة والمفتاح الخاص.عندما أقوم بإضافة العميل PrivateKey
مع ال KeyStore.setKeyEntry()
الطريقة، أ Certificate[] chain
هي الوسيطة الأخيرة، والتي تحتوي حاليًا على شهادة العميل فقط. هل سيؤدي هذا إلى منع التحقق من شهادتي لأنني لا أملك شهادة CA في ملف Certificate[] chain
? وإذا كانت الإجابة بنعم، فهل من الممكن ملء سلسلة الشهادات بالمعلومات المستخرجة من الموقعة X509Certificate
?
يبدو أن معظم الأمثلة تقوم بتحميل سلسلة CA من ملف PEM، أو مخزن الثقة BKS، أو لديها حق الوصول بالفعل إلى قائمة الشهادات.
وهنا ما لدي:
X509Certificate cert; // signed client cert
PrivateKey pkey; // client private key
String password;
KeyStore store;
store = KeyStore.getInstance("PKCS12", "BC");
store.load(null, null);
// adding the signed cert
store.setCertificateEntry("Client certificate", cert);
// creating the cert chain
X509Certificate[] chain = new X509Certificate[1];
chain[0] = cert;
// add rest of the certs in the chain here
// adding the private key
store.setKeyEntry("Client private key", pkey, password.toCharArray(), chain);
FileOutputStream fos;
fos = openFileOutput("clientCredentials.p12", Context.MODE_PRIVATE);
store.store(fos, password.toCharArray());
fos.flush();
fos.close();
شكرا لك مقدما!
المحلول
لم يتم تضمين شهادة (شهادات) CA في شهادتك الموقعة.يجب عليك الحصول عليها من مكان ما (التثبيت المسبق، التنزيل من خادم موثوق به، وما إلى ذلك).أما بالنسبة لعدم تثبيت السلسلة الكاملة، إذا كان المدقق لديه بالفعل حق الوصول إلى شهادات CA الضرورية، فيمكنه دائمًا التحقق من شهادة الكيان النهائي الخاصة بك.كيف تنوي استخدام مفتاحك وشهادتك؟
راجع للشغل، مكالمتك ل setCertificateEntry()
يقوم بإنشاء إدخال شهادة موثوق به وهو على الأرجح ليس ما تريده مع شهادة الكيان النهائي.