2012-03-31 3 views
2

인증서에 서명하는 데 공개 키가 필요한 장고/파이썬 응용 프로그램을 디버깅하는 데 어려움이 있습니다. 1. 나는 열쇠는 내가 OpenSSL을을 사용하고로드하려고 내 파이썬 응용 프로그램에서공개 키를로드 할 수 없습니다

-----BEGIN PUBLIC KEY----- 
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA8K/LfOBi+QrINSseqWwc 
JGo4uE49Dc42zF2Jwbmc6iXIln8AWX5M+yn15dYOXzbHGbopH8bpF9CsJ/DPHg87 
D1At1XwAy5aR5w7pXE//5p/saW50Sm/eY6Nugs9hgAXUTcMMAEXCIG17dLoUzhwE 
YdzuPm350h39bTmI7Fz95koTbsKJUi+6337GJ3cWKxMBkEmWvpGo4Nko01xtEnUZ 
GweKexr1roE8jZPpzuNeUy+S5tvH5emyBIBdroBVxBtz1OUIoP0oAOrQ5RtRPAcT 
TsSWjMtyF2gO5GxeMErRqnLAtWJs4QlaJacVnMMTAgRjrGkUZdsqngM/fjQXfeZV 
SwIDAQAB 
-----END PUBLIC KEY----- 

아래에 주어진

openssl rsa -pubout -in ~/.ssh/id_rsa > samplePEMKey.pub 

다음 명령을 사용하여 내 개인 키에서 PEM 형식의 키를 생성 키 사용

pkey = crypto.load_privatekey(crypto.FILETYPE_PEM, samplePEMKey) 

위의 줄에서 다음 오류가 발생합니다.

Request Method:  POST 
Request URL: http://127.0.0.1:8000/snapshotuploader/single/ 
Django Version:  1.3.1 
Exception Type:  Error 
Exception Value:  

[('PEM routines', 'PEM_read_bio', 'no start line')] 

는 여기에 내가이 문제를 해결하는 어떤 도움을 주셔서 감사합니다 파일

file_path = '/home/XXXX/co/certserver/LicenseServer/home_folder/dldl/samplePEMKey.pub' 
try: 
    fin = open(file_path, 'r') 
except IOError: 
    return HttpResponse('IO Error opening uploaded file.') 
try: 
    samplePEMKey = fin.read() 
    fin.close() 
except IOError: 
    return HttpResponse('IO Error reading uploaded file.') 

에서 공개 키를 읽는 방법입니다. 미리 감사드립니다.

+0

적어도'Crypto.Cipher.RSA.importKey을 ()'는 여러분이 제공 한 키를 사용하여 pycrypto-2.5와 작동하므로 키 자체에 아무런 문제가 없어야합니다. 'samplePEMKey' 변수에서 키를 어떻게 읽었습니까? – Kimvais

+0

FILE_PATH = '/home/XXXX/co/certserver/LicenseServer/home_folders/dldl/samplePEMKey.pub' \t 인쇄 pubKeyFile 시도 : 지느러미 = 개방 (FILE_PATH, 'R') IO 오류를 제외하고 : 반환 HttpResponse에 ('IO 오류 여는 파일을 업로드했습니다.') 시도 : pubKey = fin.read() fin.close()를 IO 오류 제외 : 반환 HttpResponse에가 ('IO는 오류 읽기 파일을 업로드했습니다.') –

+0

귀하의 질문을 수정하시기 바랍니다 관련 코드를 추가하십시오 - 또한'pubKey'! ='samplePEMKey' – Kimvais

답변

1

잠시 동안 알아 보았지만 공개 키를 개인 키 방법으로 읽으려고합니다. load_privatekey을 사용하려면 원래 id_rsa을 입력으로 사용해야합니다.

나는 적어도 pycrypto 툴 킷의 RSA 구현 샘플 키 수입과 잘 OpenSSL.crypto와 동일한 기능을 수행하지만,하는 방법을 기억하지 않습니다

>>> kt = open("samplePEMKey.pub").read() 
>>> from Crypto.PublicKey import RSA 
>>> key = RSA.import_key(kt) 
>>> key 
<_RSAobj @0x109916d40 n(2048),e> 
+0

굉장합니다. 감사. 나는 X509 요청에 서명하기 위해 id_rsa에서 생성 된 공개 PEM 키 인 samplePEMKey를 사용하려고합니다. 샘플 공개를 파일에서 읽은 문자열에서 X509 요청에 서명 할 때 받아 들일 수있는 형식으로 변환하려고합니다. 사용할 함수를 가르쳐 주시겠습니까? –

+0

OpenSSL.crypto를 사용해야합니다. –

관련 문제