🔥 서명 인증서에 대한 요구사항

182자
3분

패키지 콜렉션 서명에 사용되는 인증서는 다음과 같은 요구사항을 만족해야 한답니다. 이 요구사항은 서명 생성(publishers) 및 검증(SwiftPM users) 과정에서 확인하고 적용되지요.

  • 서명/검증이 수행되는 시점은 반드시 서명 인증서의 유효 기간에 속해야 해요.
  • 인증서의 "Extended Key Usage" 확장에는 반드시 "Code Signing"이 포함되어야 합니다.
  • 인증서는 256비트 EC(enhanced security를 위해 권장됨) 또는 2048비트 RSA 키를 사용해야 해요.
  • 인증서는 반드시 해지되지 않은 상태여야 합니다. 인증 기관은 OCSP를 지원해야 하며, 이는 인증서에 responder의 URL을 지정하는 OCSP를 메서드로 포함하는 "Certificate Authority Information Access" 확장이 있어야 함을 의미하지요.
  • 인증서 체인은 유효해야 하며 루트 인증서는 반드시 신뢰할 수 있어야 합니다.

developer.apple.com에서 제공하는 만료되지 않고 해지되지 않은 Swift Package Collection 인증서는 위의 모든 기준을 충족합니다.

신뢰할 수 있는 루트 인증서

package-collection-sign 도구에서는 콜렉션 서명에 사용되는 루트 인증서가 자동으로 신뢰됩니다. 그러나 SwiftPM 사용자가 콜렉션을 추가하려고 할 때, 루트 인증서는 OS에 사전 설치되어 있거나(Apple 플랫폼에만 해당) ~/.swiftpm/config/trust-root-certs 디렉토리에서 찾을 수 있어야 하며(모든 플랫폼), 그렇지 않으면 인증서 고정 구성과 함께 제공되어야 합니다. 그렇지 않으면 서명 확인이 실패하게 되지요. 콜렉션 게시자는 사용하는 DER로 인코딩된 루트 인증서를 다운로드할 수 있도록 제공하여 사용자가 필요에 따라 설정을 조정할 수 있도록 해야 합니다.