سؤال

لدينا العديد من مشاريع Maven ، والتي تم بناؤها على خادم البناء. في بعض الحالات ، نريد التوقيع على تسليماتنا. نحن نستخدم مافن جارسنر البرنامج المساعد للقيام بذلك.

نواجه الأسئلة التالية:

  • أين يجب أن نقوم بتخزين كلمات المرور للتوقيع؟
  • ما هي الاستراتيجية الجيدة لتوقيع مشاريع Maven؟

لا نريد أن نضع Keystore في مكان ما على خوادمنا ونرمز المتشددين. لذلك قمنا فقط بلف هذا keystore في جرة وحملناها كتحف لمستودع Maven الداخلي لدينا. عندما نريد التوقيع على مشروع Maven ، نقوم بتنزيل قطعة القطع الأثرية keystore باستخدام مافن التبعية المكوّن الإضافي وإرفاق هدف التوقيع إلى Maven بناء دورة حياة. هنا هي معلومات أكثر تفصيلا.

من أجل إخفاء كلمات المرور الخاصة بـ Keystore ، نضعها في شركتنا pom.xml ملف. نفكر أيضًا في تخزين كلمات المرور في settings.xml على خادم البناء.

عندما يتم بناء مشروع وتوقيعه على جهاز المطورين ، فإننا نوقعه بشهادة موقعة ذاتيًا. ولكن عندما يتم بناء المشروع وتوقيعه على خادم البناء ، فإننا نوقعه مع شهادة "الرسمية".

هل هي استراتيجية جيدة؟

هل كانت مفيدة؟

المحلول

أستخدم 2 keystores:

  • مفتاح التطوير الذي يتم تخزينه في SCM. يمكن أن يوقع خادم CI على اللقطات.
  • مفتاح الإنتاج مع شهادة إنتاج حقيقية صادرة عن هيئة شهادة موثوقة.

كلمة مرور keystore التطوير موجودة في pom.xml. هنا مقتطف من بلدي pom.xml:

  <plugin>
    <artifactId>maven-jarsigner-plugin</artifactId>
    <version>1.2</version>
    <configuration>
      <storetype>${keystore.type}</storetype>
      <keystore>${keystore.path}</keystore>
      <alias>${keystore.alias}</alias>
      <storepass>${keystore.store.password}</storepass>
      <keypass>${keystore.key.password}</keypass>
    </configuration>
  </plugin>
  <!-- 
      ... rest of the pom.xml ...
  -->
  <properties>
    <keystore.path>cert/temp.keystore</keystore.path>
    <keystore.type>JKS</keystore.type>
    <keystore.alias>dev</keystore.alias>
    <keystore.password>dev_password</keystore.password>
    <keystore.store.password>${keystore.password}</keystore.store.password>
    <keystore.key.password>${keystore.password}</keystore.key.password>
  </properties>

في ~/.m2/settings.xml لقد حددت أ codesgining الملف الشخصي:

<settings>
  <profiles>
    <profile>
      <id>codesigning</id>
      <properties>
        <keystore.path>/opt/prod/prod.keystore</keystore.path> 
        <keystore.alias>prod</keystore.alias>
        <keystore.type>JKS</keystore.type>
        <keystore.store.password>${keystore.password}</keystore.store.password>
        <keystore.key.password>${keystore.password}</keystore.key.password>
      </properties>
    </profile>
  </profiles>
</settings>

عندما أرغب في توقيع الشهادة الحقيقية التي أدعوها Maven مع -Pcodesigning -Dkeystore.password=strongPassword المعلمات. أنا أيضا تكوين maven-release-plugin لاستخدام ال codesigning الملف الشخصي.

في الواقع ، من الممكن تخزين كلمة المرور في settings.xml طالما أن الملف قابل للقراءة من قبل لا أحد سوى أنت.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top