2014-04-23 3 views
1

닫힌 응용 프로그램이 SSL을 사용하는 HTTP 서버로 작동합니다. 나는 인증서를 교환하고 싶지만 어떤 이유로 나는 자체 서명 한 것을 거부하고 서버는 서버를 보내지 않는다 (나는 104 개의 오류가있다). 아무도 그들 사이의 차이점과 문제가 될 수있는 것이 무엇인지 압니다. Btw. 또한 일부 CA가 있지만 문제가 없다고 생각합니다. 서버가 없어도 인증서가 다시 전송되기 때문입니다.인증서 x509 확장자

하려면 openssl REQ -x509 -newkey RSA : 2048 -keyout key.pem -out cert.pem -days 360

내 인증서 :

Certificate: 
    Data: 
     Version: 3 (0x2) 
     Serial Number: 
      e7:ee:93:5d:78:65:56:ad 
    Signature Algorithm: sha1WithRSAEncryption 
     Issuer: O=(...), CN=(...) 
     Validity 
      Not Before: Apr 23 17:58:29 2014 GMT 
      Not After : Apr 18 17:58:29 2015 GMT 
     Subject: O=(...), CN=(...) 
     Subject Public Key Info: 
      Public Key Algorithm: rsaEncryption 
       Public-Key: (2048 bit) 
       Modulus: 
       (...) 
       Exponent: 65537 (0x10001) 
     X509v3 extensions: 
      X509v3 Subject Key Identifier: 
       31:CD:5A:41:C0:64:DD:C4:96:30:AB:E2:99:9F:2D:40 
      X509v3 Authority Key Identifier: 
       keyid:31:CD:5A:41:C0:64:DD:C4:96:30:AB:E2:99:9F 
1 

      X509v3 Basic Constraints: 
       CA:TRUE 
    Signature Algorithm: sha1WithRSAEncryption 
    (...) 

-----BEGIN CERTIFICATE----- 
(...) 
-----END CERTIFICATE----- 

나는 사용하여 내 인증서를 생성 할 oryginal 인증서 :

Certificate: 
    Data: 
     Version: 3 (0x2) 
     Serial Number: 1284084212 (0x4c8991f4) 
     Signature Algorithm: sha256WithRSAEncryption 
     Issuer: O=(...), CN=(...) 
     Validity 
      Not Before: Apr 23 17:58:29 2014 GMT 
      Not After : Apr 18 17:58:29 2015 GMT 
     Subject: CN=(...).com, O=(...) 
     Subject Public Key Info: 
      Public Key Algorithm: rsaEncryption 
       Public-Key: (2048 bit) 
       Modulus: 
       (...) 
       Exponent: 65537 (0x10001) 
     X509v3 extensions: 
      X509v3 Key Usage: critical 
       Digital Signature, Key Encipherment 
      X509v3 Certificate Policies: 
       Policy: (...) 

      X509v3 Subject Alternative Name: 
       DNS:(...).com 
      X509v3 Authority Key Identifier: 
       keyid:(...) 

      X509v3 Subject Key Identifier: 
       (...) 
    Signature Algorithm: sha256WithRSAEncryption 
    (...) 
-----BEGIN CERTIFICATE----- 
(...) 
-----END CERTIFICATE----- 
+0

원래 인증서에도 자체 서명 되었습니까? – user2260054

+0

아니요, 약간의 CA가 oryginal 인증서를 서명했지만이 서버는 인터넷에 연결되어 있지 않으며 로컬 CA 만 기반으로 할 수 있습니다. – Suprido

답변

0

내가 SSL이 여기서 일하는 happends 것입니다 방법을 이해하는 경우 : 이전에 일부 기관에서 서명 한 인증서와 서버, 브라우저 트러스트를했다. https : // ...로 서버의 url에 액세스하려고 시도 할 때 인터넷에 연결되어 있지는 않지만 브라우저는 서버의 인증서를 확인합니다.이 인증서는 신뢰하는 ca로 서명 했으므로 이제 시작하겠습니다. 그러나 이것은 더 이상 그렇지 않습니다. 클라이언트가 자체 서명 인증서를 신뢰하는 방법은 클라이언트가 누구인지에 따라 다릅니다. 브라우저, 모바일 응용 프로그램 등입니다. 브라우저 인 경우 설정을 확인하십시오. 참고 : 서버가 인터넷에 연결되어 있지 않아도 기본적으로 전역 적으로 신뢰할 수있는 일부 기본 CA 목록이 브라우저의 설정에 사전 구성되어 있으므로 일부 CA에서 인증서를 서명 한 것은 아닙니다.

+0

SSL 연결은 클라이언트 Hello로 시작되며 서버는 Server Hello 및 인증서로 재생해야합니다. 그러면 클라이언트 사이트에서 인증서를 확인할 수 있습니다. 이 경우 cert는 전송되지 않으므로 서버 사이트에 문제가 있습니다. 앞에서 언급했듯이 표준 HTTP 서버가 아니며 확장 필드를 기반으로 인증서를 검증 할 수 있습니까? – Suprido

+0

서버 검사에서 인증서를 보내야합니까? 고객이 신뢰할 수있는 대상을 어떻게 알 수 있습니까? 음, 일부 맞춤 프로토콜로 작동하는 중요한 사기꾼이라면 모든 것이 가능합니다. – user2260054

+0

나는이 서버가 그 인증서가 적절한지 어떤 식 으로든 검증한다고 생각한다. – Suprido

0

다음의 확장이 필요하지만 누락 된 것으로 보인다 :

  • 키 사용 : 중요한, keyEncipherment (아마도 디지털 서명도?)
  • 확장 키 사용 : 한 ServerAuth
  • 어쩌면 : 넷스케이프 CERT는 유형 : server

또한 CN은 호스트 이름과 일치해야합니다 (또는 주체 대체 이름이 호스트 이름과 일치해야 함). 물론 인증서가 자체 서명되었으므로 클라이언트에 명시 적으로 트러스트를 추가해야합니다.

+0

예 확장 기능이 누락되었습니다. 그러나 문제는 추가하는 방법입니다. – Suprido

+0

openssl 설정을 조정해야합니다. 예제 설정에서'keyUsage ... keyEncipherment'를보고 관련 부분에 추가했는지 확인하십시오. CA를 생성하는 경우에는 'v3_req'가 아니라'v3_ca'입니다. –