itunesconnect شرح - خطأ Xcode 7:"هوية توقيع نظام التشغيل iOS مفقودة لـ..."




كود ماهو (10)

كانت إجابتي مختلفة وجاءت مع الرسالة:

resource fork, Finder information, or similar detritus not allowed

كان الحل يتعلق بالرسومات التي تم إنشاؤها:

خطأ في تسجيل الرمز في macOS Sierra Xcode 8: لا يُسمح باستخدام شوكة الموارد أو معلومات الباحث أو المخلفات المشابهة

حاولت تحميل التطبيق الخاص بي على اتصال iTunes Connect. AppStore وحصلت على الخطأ التالي:

أخفق تحديد موقع أو إنشاء مطابقة لأصول التوقيع

حاول Xcode تحديد موقع أصول التوقيع المطابقة أو إنشائها وفشل في القيام بذلك بسبب المشكلات التالية.

فقدان هوية توقيع iOS مفقود ... يمكن أن تطلب Xcode واحدة لك.

قبل أن أقوم بإعداد جهاز تطوير جديد ، قمت بتصدير حسابات المطورين عبر Xcode 7 من القديم إلى الجهاز الجديد.

ما الذي يمكنني فعله لإصلاح هذا؟


لقد استوردت شهادة Apple WWDR الجديدة التي تنتهي صلاحيتها في عام 2023 ، ولكنني كنت لا أزال أتلقى بعض المشكلات وكانت شهادات مطوّري البرامج تظهر خطأ غير صالح للمصدر.

في الوصول إلى keychain ، انتقل إلى View -> Show Expired Certificates ، ثم في Keychain key قم بتمييز شهادة WWDR منتهية الصلاحية وحذفها. كما أتيحت لي نفس الشهادة المنتهية صلاحيتها في keychain الخاص بنظامي ، لذا قمت بحذفها من هناك أيضًا.

بعد حذف الشهادة المنتهية الصلاحية من تسجيل الدخول و keychains النظام ، تمكنت من الإنشاء للتوزيع مرة أخرى.


أجرت شركة Apple التغييرات التالية حتى تنزيل شهادة جديدة developer.apple.com

تجديد الشهادة ووضعها على النحو التالي لقطات الشاشة .في سلسلة المفاتيح على النحو التالي لقطات الشاشة انقر على النظام ثم شهادة. احذف الشهادة المنتهية الصلاحية. ثم قم بسحب وإسقاط AppleWWDRCA.cer الذي قمت بتنزيله من الرابط أعلاه

شركة آبل العالمية للمطورين علاقات إنتهاء صلاحية الشهادة المتوسطة

للمساعدة في حماية العملاء ومطوري البرامج ، نطلب أن يتم توقيع جميع تطبيقات الجهات الخارجية وتمريرات Apple Wallet و Safari Extensions و Safari Push Notifications وإيصالات استلام متجر App Store من قِبل مرجع مصدق موثوق به. تصدر شهادة شهادة توثيق العلاقات لشركات Apple Worldwide Developer الشهادات التي تستخدمها للتوقيع على برنامجك لأجهزة Apple ، مما يسمح لأنظمتنا بالتأكد من تسليم البرنامج للمستخدمين على النحو المنشود ولم يتم تعديله.

تنتهي صلاحية الشهادة المتوسطة لإصدار شهادات العلاقات بين مطوري البرامج على مستوى العالم قريبًا وقد أصدرنا شهادة متجددة يجب تضمينها عند توقيع جميع تصاريح Apple Wallet الجديدة وحزم الدفع لإشعارات Safari Push و Safari Extensions اعتبارًا من 14 من شباط 2016.

في حين أن معظم المطورين والمستخدمين لن يتأثروا بتغيير الشهادة ، نوصي جميع المطورين بتنزيل الشهادة المتجددة وتثبيتها على أنظمة وخوادم التطوير الخاصة بهم كأفضل ممارسة. ستظل جميع التطبيقات متاحة على App Store لأجهزة iOS و Mac و Apple TV.

نظرًا لأنه يمكن استخدام طرق مختلفة للتحقق من صحة الإيصالات وتوصيل الإشعارات عن بُعد ، نوصي باختبار خدماتك لضمان عدم وجود مشكلات خاصة بالتنفيذ. قد تتعرض تطبيقاتك إلى فشل في التحقق من الإيصال إذا كان رمز التحقق من الإيصال يقوم بافتراضات غير صحيحة حول الشهادة. تأكد من أن التعليمات البرمجية الخاصة بك تلتزم "دليل التحقق من صحة الإيصال" وحل جميع مشاكل التحقق من الاستلام قبل 14 فبراير 2016.


بعد البحث لفترة من الوقت اكتشفت أنه ليس كافيًا لتصدير حسابات المطورين من Xcode واستيرادها على الجهاز الجديد ، مرة أخرى عبر Xcode.

بالإضافة إلى ذلك ، فقد احتجت لنسخ شهادة Certficate المسمى " سلطة شهادات العلاقات المهنية العالمية من Apple " من سلسلة المفاتيح الخاصة بآلة التطوير السابقة إلى سلسلة المفاتيح الخاصة بالجهاز الجديد.

هذا حل المشكلة بالنسبة لي.


العملية أدناه سوف تحل المشكلة ،

1: افتح KeyChain access ، وحذف "المرجع المصدق لشركات علاقات Apple للشركات على مستوى العالم" (التي تنتهي صلاحيتها في 14 فبراير 2016) من قسمي "تسجيل الدخول" و "النظام". إذا لم تتمكن من العثور عليه ، فاستخدم "عرض الشهادات منتهية الصلاحية" في قائمة "عرض".

2: الآن قم بتنزيل https://developer.apple.com/certificationauthority/AppleWWDRCA.cer وانقر نقراً مزدوجاً على الشهادة لإضافتها إلى Keychain access> certificates (والتي تنتهي صلاحيتها في 8 فبراير 2023). الآن ، يجب أن تتحول الحالة الصالحة للشهادات إلى اللون الأخضر كما هو موضح أدناه.

بمجرد التحقق من الحالة.


كما أنني واجهت نفس المشكلة اليوم. الخطوات التالية حل مشكلتي.

  1. قم بتنزيل https://developer.apple.com/certificationauthority/AppleWWDRCA.cer
  2. انقر نقرًا مزدوجًا للتثبيت على Keychain.
  3. ثم في Keychain ، حدد View -> "Show Expired Certificates" في تطبيق Keychain.
  4. وسوف تدرج جميع certifcates منتهية الصلاحية.
  5. احذف "شهادات شهادات شهادات علاقات المطور لشركات Apple Worldwide" من علامة التبويب "تسجيل الدخول"
  6. وكذلك حذفه من علامة التبويب "النظام".

أنت الآن على استعداد للذهاب.


تأكد من ذلك في Project Navigator> Signing> Team ، يجب تحديد اسم الفريق.


لا تنس أيضًا تثبيت شهادة iOS لحساب Apple Developer الخاص بك.


أزلت AppleWWDRCA القديم ، تحميل وتثبيت AppleWWDRCA ، ولكن المشكلة لا تزال قائمة. قمت أيضًا بفحص شهادات التوزيع والتطوير الخاصة بي من Keychain Access ، وانظر أدناه الخطأ ؛

"This certificate has an invalid issuer."

ثم،

  1. لقد ألغيت كل من شهادات التطوير والتوزيع في مركز الأعضاء.
  2. إعادة إنشاء ملف CSR وإضافة شهادات التطوير والتوزيع من الصفر ، وتنزيلها ، وتثبيتها.

هذه مشكلة الشهادة الثابتة.

نظرًا لإبطال الشهادات القديمة ، تصبح ملفات التخصيص الحالية غير صالحة. لإصلاح هذا؛

  1. في مركز الأعضاء ، افتح ملفات التوفير.
  2. تم فتح تفاصيل الملف الشخصي بالنقر على "تعديل" ، ثم التحقق من الشهادة من القائمة ، ثم النقر على زر "إنشاء".
  3. تحميل وتثبيت ملفات تعريف التطوير والتوزيع.

آمل أن يساعد هذا.


من الممكن بالفعل استخلاص المعادلات والأسس باستخدام لا keychains ولا API خاص.

هناك الدالة ( العامة ولكن غير موثقة ) SecKeyCopyAttributes التي استخراج CFDictionary من SecKey . مصدر مفيد لمفاتيح السمة هو SecItemConstants.c

"v_Data" : <binary> محتوى هذا القاموس ، نجد إدخالاً "v_Data" : <binary> . محتواه هو DER-encoded ASN من أجل

SEQUENCE {
    modulus           INTEGER, 
    publicExponent    INTEGER
}

يجب أن تدرك أن الأعداد الصحيحة مبطنة بصفر صفر إذا كانت موجبة ولها 1 بايت (حتى لا تخلط بينهما رقم سالب مكمل) ، لذلك قد تجد بايت واحد أكثر مما تتوقع. إذا حدث ذلك ، فقط قم بقطعه.

يمكنك تنفيذ محلل لهذا التنسيق أو ، معرفة حجم المفتاح الخاص بك ، من الصعب استخراج الاستخراج. بالنسبة لمفاتيح 2048 بت (وأس 3 بايت) ، يتضح أن التنسيق هو:

30|82010(a|0)        # Sequence of length 0x010(a|0)
    02|82010(1|0)    # Integer  of length 0x010(1|0)
        (00)?<modulus>
    02|03            # Integer  of length 0x03
        <exponent>

لما مجموعه 10 + 1؟ + 256 + 3 = 269 أو 270 بايت.

import Foundation
extension String: Error {}

func parsePublicSecKey(publicKey: SecKey) -> (mod: Data, exp: Data) {
    let pubAttributes = SecKeyCopyAttributes(publicKey) as! [String: Any]

    // Check that this is really an RSA key
    guard    Int(pubAttributes[kSecAttrKeyType as String] as! String)
          == Int(kSecAttrKeyTypeRSA as String) else {
        throw "Tried to parse non-RSA key as RSA key"
    }

    // Check that this is really a public key
    guard    Int(pubAttributes[kSecAttrKeyClass as String] as! String) 
          == Int(kSecAttrKeyClassPublic as String) 
    else {
        throw "Tried to parse non-public key as public key"
    }

    let keySize = pubAttributes[kSecAttrKeySizeInBits as String] as! Int

    // Extract values
    let pubData  = pubAttributes[kSecValueData as String] as! Data
    var modulus  = pubData.subdata(in: 8..<(pubData.count - 5))
    let exponent = pubData.subdata(in: (pubData.count - 3)..<pubData.count) 

    if modulus.count > keySize / 8 { // --> 257 bytes
        modulus.removeFirst(1)
    }

    return (mod: modulus, exp: exponent)
}

(انتهى بكتابة محلل ASN كامل ، لذلك لم يتم اختبار هذا الرمز ، حذار!)

لاحظ أنه يمكنك استخراج تفاصيل المفاتيح الخاصة بنفس الطريقة. باستخدام مصطلحات DER ، هذا هو تنسيق v_Data :

PrivateKey ::= SEQUENCE {
    version           INTEGER,
    modulus           INTEGER,  -- n
    publicExponent    INTEGER,  -- e
    privateExponent   INTEGER,  -- d
    prime1            INTEGER,  -- p
    prime2            INTEGER,  -- q
    exponent1         INTEGER,  -- d mod (p-1) (dmp1)
    exponent2         INTEGER,  -- d mod (q-1) (dmq1)
    coefficient       INTEGER,  -- (inverse of q) mod p (coeff)
    otherPrimeInfos   OtherPrimeInfos OPTIONAL
 }

من المحتمل أن يكون تحليل هذه الطريقة يدويًا غير محتمل نظرًا لأن أيًا من الأعداد الصحيحة قد تم تبطينها.

Nota bene: يختلف تنسيق المفتاح العام إذا تم إنشاء المفتاح على نظام MacOS ؛ يتم تلف البنية الموضحة أعلاه كما يلي:

SEQUENCE {
    id              OBJECTID,
    PublicKey       BITSTRING
}

سلسلة البت هي DER-encoded ASN من النموذج أعلاه.





ios xcode itunesconnect code-signing testflight