2013-10-31 3 views
4

pkcs8 형식으로되어있는 개인 키가 사용되었습니다.이 개인 키를 사용하여 pem 파일로 변환 할 수있었습니다 다음 명령을 (또한 내가 관리자 CERT 창에 가져올 것)pem 개인 키를 .NET에서 사용할 수있는 창 형식으로 변환하는 방법

openssl pkcs8 -inform der -nocrypt -in private.key -out pkey.pem 

는 지금 그래서 내가 X509 인증서를 만들 .NET에서 사용할 수 있습니다 PKCS12이 변환해야합니다.

openssl pkcs12 -export -name myalias -in mycert.crt -inkey pkey.pem -out keystore.p12 

그러나, 나는 내가 -in 인수로 pkey.pem 파일을 사용하여 시도했다, 공개 키를 가지고 있지 않지만, 그것은 나에게 No certificate matches private key을 알려줍니다

내가이 명령을 시도했다. -in 인수없이 시도하면 아무 일도 일어나지 않습니다. 아무런 의미가 없습니다. ctrl-c을 누를 때까지 빈 행이 있습니다.

개인 키에서 공개 키를 생성하거나 공개 키없이 pkcs12로 변환하려면 어떻게해야합니까?

이 질문의 첫 번째 부분은, 나에게이 명령 (-nocerts) 실행 말한다 희망, 준 I found an answerfrom the answer here

이었다

openssl pkcs12 -export -nocerts -inkey your.private.key.pem -out your.private.key.p12 

그러나이 난을 가져올 때 파일을 Windows 키 저장소에 저장하면 가져올 때 The specified file is empty이라고 표시됩니다.

은 또한 인증서 파일을 생성 한 인증서 서명 요청 from instructions here을 생성하는 데 성공했지만, 말을 No certificate matches private key

Another answer 내가 할 공개 키를 생성 제안하는 명령은 여전히 ​​허용하지 않았지만, 내가 사용하는 때 그것을 인수 -in은 아직도 내가이 명령을 사용하여이 공개 키는 개인 키에서 생성 된로 이해하지 No certificate matches private key을 말한다 같이 openssl rsa -in privkey.pem -pubout > key.pub

편집 : 내가 대답 아래 게시 한하지만, 언급했듯이 나는이 정보를 검증 할 방법이 없다. 또는 그것이 작동하는지 말하십시오. 더 자세한 정보가있는 분은 알려주십시오.

답변

2

이 보일 것입니다 :

PEM을 파일 형식으로 PKCS8/DER에서 개인 키를 변환

openssl pkcs8 -nocrypt -in dealerPrivate.key -inform der -outform pem -out private.pem 

변환 :

다음 명령

윈도우에서 사용할 수있는 형식으로이 설정 x509/DER에서 PEM 파일 형식으로의 인증서

openssl x509 -inform der -in dealerCertificate.x509 -out public.pem 

두 개의 f PKCS12 파일로 세틸 - 당신이 나에게 PKCS12 인증서를 (내 생각) 나는 윈도우 키 저장소에 추가 한 다음에서 액세스 할 수 있습니다

openssl pkcs12 -export -inkey private.pem -in public.pem -out mycert.p12 

으로 P12을 보호하기 위해 암호를 입력하라는 메시지가 표시됩니다. NET을 열고 내 WCF 요청에 첨부하십시오.

요청 :

POST http://[HOST].com/services/fsa/1.0 HTTP/1.1 
Content-Type: text/xml; charset=utf-8 
VsDebuggerCausalityData: uIDPo0ii5Jr5wONMi6i/jkMQdFkAAAAArRV2zOsUrEioQMkqYDWulG6ktjqzCoRLtP+/9VQSARUACQAA 
SOAPAction: "" 
Host: [HOST] 
Content-Length: 299 
Expect: 100-continue 
Connection: Keep-Alive 

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"><s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><list xmlns="http://[HOST].com/services/fsa/1.0"><String_1 xmlns="">[MY_STRING]</String_1></list></s:Body></s:Envelope> 

응답 :

HTTP/1.1 200 OK 
Date: Thu, 31 Oct 2013 12:19:38 GMT 
Server: Apache/2.2.17 (Unix) mod_ssl/2.2.17 OpenSSL/1.0.0a mod_jk/1.2.31 
X-Powered-By: Servlet 2.5; JBoss-5.0/JBossWeb-2.1 
VsDebuggerCausalityData: uIDPo0ii5Jr5wONMi6i/jkMQdFkAAAAArRV2zOsUrEioQMkqYDWulG6ktjqzCoRLtP+/9VQSARUACQAA 
SOAPAction: "" 
host: [HOST] 
Expect: 100-continue 
connection: Keep-Alive, Keep-Alive 
Content-Length: 299 
Keep-Alive: timeout=2, max=100 
Content-Type: text/xml;charset=utf-8 

<s:Envelope xmlns:s='http://schemas.xmlsoap.org/soap/envelope/'><s:Body xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'><list xmlns='http://[HOST].com/services/fsa/1.0'><String_1 xmlns=''>[MY_STRING]</String_1></list></s:Body></s:Envelope> 

불행하게도 나는이 완전히 혼란 내 요청과 동일한 데이터로 서비스 응답으로 작동하는지 확인할 수 없습니다

+1

자신이 만든 것은 자신의 개인 키로 서명 한 자체 서명 인증서입니다. 참고 ... 혼란을 피하기 위해 인증서의 파일 확장자는 ".csr"이 아니어야합니다. 서명 요청입니다. 내가 갖고있는 질문은 클라이언트 응용 프로그램에서 개인 키와 인증서가 정확히 사용되는 것입니다. SSL을 통한 인증/승인을위한 것입니까, 아니면 서버의 일부 내용에 서명하는 것입니까? 또는 다른 것? – gtrig

+0

제 3 자에 의해 개인 키와 x509 인증서가 제공되었으므로 개인 키를 사용하여 내 요청에 서명 및/또는 암호화하고 공개 키를 사용하여 웹 서비스에서 응답을 읽어야한다고 가정합니다. 바인딩에 관한 질문이 있습니다. http://stackoverflow.com/q/19427768/198048 일종의, 아무 생각. 분명히 추측해야하지만, 지금은 .Net에서 사용할 수있는 것이 있습니다. 이전보다 한 단계 앞섰습니다. –

+0

일반적으로 클라이언트와 웹 서버 간의 암호화 된 통신은 SSL/TLS를 통해 수행됩니다. URL은 "https : //"로 시작합니다. 이것이 사용해야하는 메커니즘이고 개인 키가 제공된 경우 "양방향"또는 "상호"SSL이 필요할 수 있습니다. 이는 클라이언트가 서버에 대해 인증해야 함을 의미합니다. 이것은 개인 키를 통해 이루어지며 일치하는 인증서입니다. 서버가 클라이언트 인증서에 서명 한 CA를 신뢰하면 인증되고 권한을 부여받을 수 있습니다. 클라이언트가 서버 인증서에 서명 한 CA를 신뢰하면 모든 보안 연결이됩니다. – gtrig

관련 문제