2011-08-09 52 views
4

作成したキーペアをxml形式でPEM形式に変更しようとしました。 ここに私のコードです。C#でxml形式のキーペアをPEM形式に変更するにはどうすればよいですか?

CspParameters cspParams = new CspParameters(); 
cspParams.ProviderType = 1; 
cspParams.Flags = CspProviderFlags.UseArchivableKey; 
cspParams.KeyNumber = (int)KeyNumber.Exchange; 
rsaProvider = new RSACryptoServiceProvider(1024,cspParams); 
RSAParameters rsa_params = rsaProvider.ExportParameters(true); 
byte[] rsa_export = rsaProvider.ExportCspBlob(true); 

//here I've try to get private key data 
string data__ = Convert.ToBase64String(rsa_export); 
FileStream fs = new FileStream(privateKeyFileName, FileMode.CreateNew); 

string type = "RSA PRIVATE KEY"; 
string header = String.Format("-----BEGIN {0}-----\n", type); 
string footer = String.Format("\n-----END {0}-----", type); 

data__ = header+data__+footer; 
byte[] d_ = Encoding.Default.GetBytes(data__); 

//write to file   
fs.Write(d_, 0, d_.Length); 
fs.Close(); 

私はそれを実行した後、私は秘密鍵を持っているが、私は使用して証明書を作成するために、キーを使用してテストするときのコマンド:

openssl req -new -x509 -key privatekey.pvk -config  
"C:\AppServ\php5\extras\openssl\openssl.cnf" -out myCert.cer -days 365 

はエラーが

unable to load Private Key 
3004:error:0906D064:PEM routines:PEM_read_bio:bad base64 decode:.\crypto\pem\pem_lib.c:756: 
を発生しました

答えて

0

opensslは、PEM証明書フォーマットing。

  1. ファイルが含まれている必要があります別の行に -----BEGIN CERTIFICATE-----(すなわち、それは改行で終端されなければならないが)。
  2. "ばかげた"の各行は64文字でなければなりません。
  3. ファイルの末尾は、 -----END CERTIFICATE----- であり、改行で終了する必要があります。
  4. 証明書のテキストをWordに保存しないでください。 ASCIIでなければなりません。
  5. DOSとUNIXスタイルの回線終端を混在させないでください。

あなたの場合、64文字で改行していないようですが、ENDタグに改行がありません。

  1. 実行それをDOS2UNIXて::他の人のために

    が自分の鍵ペアを書いていないから、ここでは、Linux上で証明書ファイルを正規化するためにあなたが取ることができるいくつかのステップがあります倍通じ# dos2unix cert.pem

  2. 実行して:# fold -w 64 cert.pem

Windowsの場合は、Cygwinをダウンロードしてください。これらの変換ツールを入手できるはずです。

関連する問題