2012-08-28 1 views
1

저는 Adobe X를 사용하여 자체 서명 된 인증서를 생성하고 pfx 파일 (내 개인 키용)과 .cer 파일 (인증서 용)을 내 보냈습니다.OpenSSL 데이터가 충분하지 않습니다.

내가 다음 키와 함께 인증서를 수집하려고 노력하지만, 어떤 이유로, OpenSSL이 오류 여기

OpenSSL::X509::CertificateError: not enough data 

를주고 내 인증서를 사용하여 생성 된

require 'openssl' 

CERTFILE = "test.cer" 
RSAKEYFILE = "test.pfx" 

# Open certificate files 

cert = OpenSSL::X509::Certificate.new(File.read CERTFILE) 
key = OpenSSL::PKey::RSA.new(File.read RSAKEYFILE) 

내 코드입니다 Adobe X 판독기이며 자체 서명 된 인증서입니다. pdf 문서에 서명 할 때 잘 작동합니다 ...

이 작업을하려면 어떻게해야합니까?

답변

3

명백히 OpenSSL에는 .cer 파일에서 직접 읽는 데 문제가 있으며, 키에는 private_key 만 사용해야하며 pfx에는 개인 키와 인증서가 모두 있어야합니다.

그래서, 난 로컬 OpenSSL을 설치하고, 첫 번째 converted 내 .CER 인증서는 다음 명령을 .PEM하기 :

C:\OpenSSL-Win32\bin>openssl x509 -inform der -in "c:\mydir\test.cer" -out "C:\mydir\certificate.pem" 

다음 (this 사이트 기준) PFX 파일에서 내의 PrivateKey를 추출 :

C:\OpenSSL-Win32\bin>openssl pkcs12 -in "c:\mydir\test.pfx" -nocerts -out "c:\mydir\test_pk.pem" 

개인 키를 추출 할 때 pfx pwd가 있는지 확인하고 암호를 선택하십시오. 여기

최종 코드 :

require 'openssl' 

CERTFILE = "certificate.pem" 
RSAKEYFILE = "test_pk.pem" 
passphrase = "your chosen passphrase for the private key" 
key4pem=File.read RSAKEYFILE 

# Open certificate files 

cert = OpenSSL::X509::Certificate.new(File.read CERTFILE) 
key = OpenSSL::PKey::RSA.new key4pem, passphrase 

봐라 :-), 우리는 성공적으로 메모리 우리의 인증서와의 PrivateKey 모두에 매핑 한과 대답처럼 용도에 넣을 수 있습니다 here