2017-02-22 13 views
0

私はプライベートキーを持つpem証明書を持っています。 私は次のようにパスワードで保護されているP12証明書を生成するために、上記の情報を使用しています:ルビーはp12証明書(バイナリ)をエンコードし、jsonレスポンスとして送信します

def p12_cert 
    ca_cert = x509_cert(File.open("#{root}/ca-cert.crt").read) 
    p12 = OpenSSL::PKCS12.create(@random_pass, 'My Certificate', 
      rsa_pkey(private_key), x509_cert(public_cert), [ca_cert]) 
    create_file('p12', p12.to_der, ':ASCII-8BIT') 
    end 

問題は、これがバイナリ形式であるとJSON APIを介して送信することができないです。

これをJSONレスポンスとして送信できるように、どうすれば(おそらくbase64)エンコードすることができますか?

編集:私は、読み取りのためにP12ファイルを開き、その後、base64でエンコードしようとした、次のようだ:

irb(main):017:0> enc_p12 = Base64.encode64(p12) TypeError: no implicit conversion of OpenSSL::PKCS12 into String

+0

ような何かがhttps://github.com/Mitka20/tango_api/blob/2cc0127b8fc601526ddd000ff1ac46d6531592c0/tango_api.rbでコードがお手伝いしていますか? @ shepe。 – sheppe

+0

私はわかりません。あなたの例では、p12ファイルを読んでいますが、私はJSON(非バイナリ形式)で送信する方法がわかりません – Micheal

+0

キーは次の行の要求に添付されています:https.key = p12.key また、そうではありません私のコードですが、それは関連しているようです。 :) – sheppe

答えて

1

あなたは通常、PKCS12オブジェクトそのものではなく、生のファイルをエンコードしないでください。 Base64.encode64(File.read(filename, mode: 'rb')

関連する問題