2014-02-26 11 views
2

나는 ECDsaCng, CngKey 주위에 머리를 감싸고 유효한 EC cert로 서명하려고 노력 해왔다. 이 인증서는 "Symantec 클래스 3 ECC 256 비트 확장 유효성 검사 CA"에 의해 발행되며 "sha256ECDSA"의 서명 알고리즘, "sha256"의 서명 해시 알고리즘, 공개 키 매개 변수 = "ECDSA_P256"및 키 사용 = "디지털 서명 80).ECDsaCng (CngKey)와 함께 사용할 수 있도록 localmachine 저장소의 인증서에서 CngKey를 만드시겠습니까?

ECDsaCng 외에도 JwtSecurityTokenHandler를 인증서와 함께 사용해 보았지만 "인증서 알고리즘이 지원되지 않음"예외가 발생합니다. 해당 Works 함께 "표준"2048 비트 SSL 인증서를 사용하여.

내가해야 할 일은 ES256으로 JWT에 서명하는 것입니다. 그리고 지금까지는 ECDsaCng과 함께 256 비트의 "무작위로 생성 된"키를 사용하므로이 질문들에 대한 답이 실제로 제 하루를 만들어 줄 것입니다 :

  1. ES256 서명을 수행하기 위해 JwtSecurityTokenHandler와 함께 사용할 수있는 유효한 인증서를 주문하려면 어떻게해야합니까?

  2. 내 인증서에서 상점의 CngKey를 어떻게 만듭니 까? 인증서의 개인 키는 내보낼 수 없습니다.

  3. ES256 및 저장소에서 내보낼 수없는 인증서 개인 키로 서명하는 다른 방법이 있습니까?

거의 모든 도움에 감사드립니다!

안부,

헨릭

+0

행운이 있었나요? –

+0

예, 아니오. 로컬로 생성 된 개인/공개 키 쌍을 사용해야했습니다. 현재 나의 작업 이론은 SSL 인증서 (모든 종류의)를 Microsoft Cng에서 서명하는 데 사용할 수 없다는 것입니다.이 인증서는 "서버 인증"과 "코드 서명"키 사용을 모두 갖지 않아야합니다. 서명을위한 인증서는 "코드 서명"키 사용만을 가져야합니다. –

답변

1

.NET 4.6.1 ECDSA을하고 훨씬 좋은 지원이 추가되었습니다. 특히, GetECDsaPrivateKey (extension) method.

서명 및 확인 방법은 ECDsa 기본 클래스 (.NET 4.6.1 기준)이므로 ECDsaCng 유형으로 직접 작업 할 필요는 없습니다 (이름이 지정된 시스템과 상호 작용하지 않는 한). 키 또는 다른 직접 시스템 interop.