2012-02-02 2 views
0

내가 https로 실행이 코드를 얻으려고 :이 Makecert.exe를를 사용하여 https로 실행 얻을 http://www.codeproject.com/Articles/93301/Implementing-a-Multithreaded-HTTP-HTTPS-DebuggingC# 프록시, https 트래픽 용 인증서 생성 중

그것은 내가 개인 키를 사용하여 새 인증서를 만들 필요가 페이지 하단에라고합니다. 다음은 사용 된 명령 작성자입니다.

makecert.exe cert.cer -a sha1 -n "CN=matt-dot-net" -sr LocalMachine -ss My -sky signature -pe -len 2048

동일한 명령을 실행했으며 CN을 내 호스트 이름으로 변경하고 인증서를 바꿨습니다.

This Connection is Untrusted. I understand the risks -> add exception

을 한 후 나는이 오류를 얻을 : 내가 HTTPS 사이트에 액세스 할 때 지금, 나는이 (피들러를 사용하는 경우와 동일) 파이어 폭스에서 경고를

The site attempts to identify itself with invalid information. Wrong site: Certificate belongs to a different site, which could indicate an identity theft. Certificate is not trusted, because it hasn't been verified by a recognized authority.

가 그럼 난 클릭 [보안 예외 확인] 모든 것이 제대로 작동하는 것 같습니다.

"잘못된 사이트 인증서"오류를 어떻게 제거합니까? 인증서를 잘못 생성 했습니까? 내가 사이트의 makecert.exe 예제에서 이해하고있는 한, 개인 키가 포함되어 있지 않은가? 감사!

답변

0

자체 서명 인증서가 사이트에 사용되는 인증서라고 가정하고 자체 서명 인증서가 신뢰할 수 없기 때문에 VeriSign 등에서 메시지를 구매해야합니다.

+0

http://portswigger.net/burp/help/servercerts. html 또한 조금 더 많은 통찰력을 제공합니다 –

+0

은 각 SSL 사이트에 대해 자체 서명 된 인증서를 생성해야 할 수도 있습니다. –

+0

감사합니다! 나는 실제로 사라질 마지막 메시지만을 찾고 있습니다. 첫 번째 메시지는 괜찮습니다. 피 들러를 사용할 때 동일한 첫 번째 메시지를 받고 피들러는 makecert.exe도 사용하여 인증서를 생성합니다. – user1015551

0

인증서 이름을 호스트 이름 (예 : stackoverflow.com의 경우 'stackoverflow')과 동일하게 만드십시오.

+0

감사! 내 호스트 이름을 Windows의 컴퓨터 이름 (예 : "CN = Joe-Pc") 또는 액세스하려는 호스트 이름 (예 : "CN = gmail.com")으로 사용 하시겠습니까? – user1015551

+0

@ user1015551, 액세스하려는 호스트 이름 이 답변은 아마도 stackoverflow.com에 대해 "ie", "stackoverflow.com"이라고 말합니다. " – Bruno

+0

호스트에 하위 도메인이 있다면 상관 없습니까? – user1015551

1

먼저 응용 프로그램에 대해 자체 서명 된 인증서 (CA 기본 제약 조건 포함)를 생성하고 (응용 프로그램에서 자동으로 생성하도록 할 수 있음) 해당 인증서를 신뢰할 수있는 CA로 가져옵니다.

그런 다음 CA에서 발급 한 (즉 개인 키와 CA의 주체 DN을 사용하여 새 인증서의 발급자 DN으로 서명 한) 요청 된 호스트 이름에 따라 새 인증서를 즉시 생성 할 수 있습니다. Is it possible to programmatically generate an X509 certificate using only C#?

이 인증서는 HTTP over TLS specification의 사양을 따라야합니다 :이 질문에 C#에서 인증서를 생성하는 방법에 대한 자세한 내용이 무엇인지 요청거야 것은 단지 호스트 이름 인 경우, 요컨대

If a subjectAltName extension of type dNSName is present, that MUST be used as the identity. Otherwise, the (most specific) Common Name field in the Subject field of the certificate MUST be used. Although the use of the Common Name is existing practice, it is deprecated and Certification Authorities are encouraged to use the dNSName instead.

[...]

In some cases, the URI is specified as an IP address rather than a hostname. In this case, the iPAddress subjectAltName must be present in the certificate and must exactly match the IP in the URI.

, 당신은 괜찮을 (Subject Alt Name이 더 좋을지라도) 주제 DN에 CN=hostname RDN이 있지만 IP 주소 인 경우 IP 주소로 대체해야합니다 (일부 브라우저에서는 IP 주소를 사용하지 못하도록 함). 실제로 CN RDN에 있음).

서버 이름 표시없이 TCP 패킷을 캡처하는 프록시를 원한다면 어떤 실제 호스트 이름을 요청했는지 찾기가 어렵습니다. IP 주소에 대한 DNS 역방향 조회 (IP 주소 검색)를 수행하고 각 역방향 DNS 항목에 대한 DNS 제목 대체 이름 항목과 IP 주체 대체 이름 항목을 추가하는 것이 좋습니다. 클라이언트가 IP 주소에 역 DNS 항목이없는 호스트 이름을 사용하는 경우를 제외하고는 대부분의 경우를 다루어야합니다. 실패하면 브라우저에 수동으로 예외를 추가하면됩니다 (사용자 자신의 통신을 가로 채고 있음을 알기 때문에 괜찮습니다). 또는 프록시 내에서 손으로 설정하십시오.

브라우저에서 HTTP 프록시를 구성하면 호스트 이름을 찾는 것이 더 쉽습니다. 호스트 이름을 추측 할 필요가 없으므로 CONNECT HTTP 동사로 전달됩니다.

(물론,로 시작하는 특정 호스트를 들어, 즉시 그 일을하기보다는 makecert와 인증서를 생성 할 수 있습니다.)