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

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로 인코딩된 루트 인증서를 다운로드할 수 있도록 제공하여 사용자가 필요에 따라 설정을 조정할 수 있도록 해야 합니다.

YouTube 영상

채널 보기
NestJS 가드, 바이딩과 스코프 | NestJS 가이드
NestJS 커스텀 데코레이터 인자 전달 및 파이프 검증 활용법 | NestJS 가이드
Writer 펑터와 클라이슬리 카테고리 | 프로그래머를 위한 카테고리 이론
NestJS 인터셉터란? | NestJS 가이드
변환 파이프로 컨트롤러 코드 깔끔하게 만들기 | NestJS 가이드
입력을 전처리하는 Functor - Contravariant와 contramap 이해하기 | 프로그래머를 위한 카테고리 이론
class-validator 와 DTO | NestJS 가이드
NestJS 커스텀 데코레이터, createParamDecorator 사용 | NestJS 가이드