2011-08-02 3 views
1

WAPPA 명령 추가 인증서 명령을 사용하여 Azure로 인증서를 업로드하려고 할 때 잘못된 방법을 사용하고 있습니다.wap cmdlets - 인증서 추가 오류

add-certificate -ServiceName myService -CertificateToDeploy ".\mycert.cer" -SubscriptionId 1234c88c-xxxx-xxxx-ad88-888c6ec5fc4a -Certificate (get-item cert:\CurrentUser\My\0E5A777B38724D85F415E011192D2EF888888884) 

을 그리고이 올라오고 계속 오류입니다 :

이 내가 PowerShell에서 실행 해요 것입니다.

Add-Certificate : The index value is not valid. At line:1 char:16 + add-certificate <<...(removed repeat of command)... + CategoryInfo : CloseError: (:) [Add-Certificate], CryptographicException + FullyQualifiedErrorId : Microsoft.Samples.AzureManagementTools.PowerShell.Certificates.AddCertificateCommand

우리는 서비스 명 및 subscriptionId이 정확하고 있습니다 확신 우리가 찾을 수있는 모든 예제를보고 다른 매개 변수가 분명 하나 (또는 ​​둘 다)뿐만 아니라 올바른 ...하지만처럼이 아닌의 그것은 본다 . 우리는 왜 그런지 알 수 없습니다.

모든 제안을 크게

답변

1

:-) 추가-인증서 명령은 호스팅 서비스 (일반적으로 개인 키) 인증서를 업로드하기위한 것입니다 감사합니다. IIRC를 사용하면 .cer 파일을 .pfx 래퍼로 래핑하고 간단한 암호로 업로드하려고 시도합니다. 이는 포털이 인증서와 함께 암호를 요구하기 때문에 (개인 키로 인증서를 업로드 한 것으로 가정했기 때문). 해당 코드 경로의 일부가 암호화 예외에 따라 잘못되었을 수 있습니다. 스택 추적이 더 많이 있었으면 좋겠다.

pfx (내보낼 수있는 키 포함)를 업로드하는 경우 작동합니까? .cer 파일과 암호가 없어서 문제가됩니까?

또 다른 생각 : -ServiceName 매개 변수는 DNS 이름 (servicename.cloudapp.net)으로 해석되므로 대소 문자를 구분할 수 있습니다. 모든 소문자를 사용하고 있는지 확인할 수 있습니까?

편집 : 다른 생각 - .cer을 시스템으로 가져오고 get-item cert : format을 사용하여 다시 참조하십시오. 코드를 보면 pfx가 아닐 때 지정된 파일 경로에서 제대로 작동하는지 완전히 확신 할 수는 없습니다. .cer 파일을 빈 암호로 가져 오는 것이 실패 할 수도 있습니다. 그것은 내 내부 (마음) 디버거를 통해 볼 수있는 코드를 실행하는 것입니다.

private byte[] GetCertificateData() 
    { 
     var cert = new X509Certificate2(); 
     byte[] certData = null; 

     if (((this.CertificateToDeploy is PSObject) && ((PSObject)this.CertificateToDeploy).ImmediateBaseObject is X509Certificate) || 
      (this.CertificateToDeploy is X509Certificate)) 
     { 
      cert = ((PSObject)this.CertificateToDeploy).ImmediateBaseObject as X509Certificate2; 

      try 
      { 
       certData = cert.HasPrivateKey ? cert.Export(X509ContentType.Pfx) : cert.Export(X509ContentType.Pkcs12); 
      } 
      catch (CryptographicException) 
      { 
       certData = cert.HasPrivateKey ? cert.RawData : cert.Export(X509ContentType.Pkcs12); 
      } 
     } 
     else 
     { 
      cert.Import(this.ResolvePath(this.CertificateToDeploy.ToString()), this.Password, X509KeyStorageFlags.Exportable); 
      certData = cert.HasPrivateKey ? cert.Export(X509ContentType.Pfx, this.Password) : cert.Export(X509ContentType.Pkcs12); 
     } 

     return certData; 
    } 
+0

답변을 주셔서 감사합니다. 아직 조사 중이지만 문제는 .cer 파일을 내보낼 수 없다는 것입니다. MMC 플러그인에서 수동으로 가져 오려고하면 'pfx'내보내기 옵션이 회색으로 표시됩니다. 따라서 .cer 공급자가 개인 키를 '내보낼 수 있음'으로 표시 한 경우 이제이를 확인합니다. http://serverfault.com/questions/83143/convert-p7b-key-to-a-pfx – wallismark

+0

.cer 파일은 공개 키입니다. 때로는 이들을 가져올 필요가 있지만 더 자주 개인 키 쪽인 pfx를 원합니다. .cer이 정말로 필요한 경우, pfx 컨테이너에 랩핑하여 업로드하는 프로세스가 있습니다. – dunnry