stunnel이 모든 중간 CA 인증서를 보내도록하려면 어떻게해야합니까?


13

대부분의 컴퓨터는 아니지만 일부 컴퓨터에서 웹 서버의 SSL 인증서를 거부하고 있습니다. 문제는 일부 컴퓨터가 CA 인증서를 거부하는 것 같습니다. 문제가 완전히 업데이트되지 않은 경우 Mac OS X 10.6에서 문제가 발생하는 것 같습니다.

http://www.sslshopper.com/index.php?q=ssl-checker.html#hostname=beta.asana.com 에 따르면 아무런 문제가 없습니다.

http://certlogik.com/sslchecker/ 에 따르면 중간 인증서는 전송되지 않습니다.

내 인증서는 Starfield Technologies에서 sf_bundle.crt왔으며 certs.godaddy.com/anonymous/repository.seam에서 사용 하고 있습니다.

다음과 같이 stunnel을 통해 서버에서 SSL을 처리하고 있습니다 stunnel.conf.

cert = $CODEZ/admin/production/proxy/asana.pem
CAfile = $CODEZ/admin/production/proxy/sf_bundle.crt
pid =
client = no

[<forwarded port>]
accept = 443
connect = 8443

내가 뭘 잘못 할 수있는 아이디어가 있습니까?

답변:


17

CAFile옵션은 클라이언트 인증 인증서에 사용할 CA를 구성합니다. 이것은 당신이 원하는 것이 아닙니다.

대신, cert적용 가능한 전체 인증서 체인을 포함하도록 옵션 에서 파일을 작성하려고합니다 . 해당 파일의 백업 사본을 저장 한 다음 새로 작성하십시오. 기본적으로 다음과 같은 형식의 두 파일을 결합합니다.

-----BEGIN CERTIFICATE-----
(certificate from asana.pem file pasted here)
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
(intermediate certificate here; copy-paste the top chunk from the bundle)
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
(root certificate here; copy-paste the bottom chunk from the bundle)
-----END CERTIFICATE-----

이렇게하면 stunnel이 전체 ​​인증서 체인을 클라이언트에 제공합니다.

한 가지 더 좋은 음식; 이 openssl s_client명령은 인증서 체인 문제를 테스트하고 서비스가 인증서를 제공하는 방법을 확인하는 데 매우 유용합니다.

편집 : Ok .. 인증서 번들의 체인은 3 깊지 만 신뢰 체인은 2 깊습니다. 뭔가 잘못 됐어

최상위 인증서 ( "Starfield Secure Certification Authority")는 "."로 시작하는 지문이있는 "Starfield Class 2 인증 기관"이라는 발행자가 서명합니다 ad7e1c28. 그러나 번들의 두 번째 인증서는 첫 번째 인증서의 서명자와 정확히 동일합니다. 정확히 동일한 인증서 여야하고 으로 시작하는 지문이 363e4734있고 만료 날짜가 10 년 전 이어야 합니다 . 그런 다음 세 번째 (루트) 인증서는 포함 된 중간 인증서의 서명자입니다. 그러나이 두 인증서는 첫 번째 인증서와 관련이 없습니다!

그것이 이해가되지 않는다면 걱정하지 마십시오. 요약 : 조잡한 작업으로 누군가 가이 인증서 번들을 구축하는 공을 떨어 뜨 렸습니다. 가장 좋은 방법은 체인을 성공적으로 확인하는 브라우저에서 base-64 형식으로 파일을 내보내고 거기에 나열된 형식으로 붙여 넣는 것입니다.

그것이 당신 자신의 잘못이 아닌 혼란스러운 혼란이기 때문에, 나는 당신의 DNS 이름을 추측하고 인증서를 얻었고, 이것이 당신이 필요한 전체 체인이어야한다고 생각합니다 : http://pastebin.com/Lnr3WHc8


감사합니다 이것은 매우 유용했습니다! 담당자 포인트가 없기 때문에 공감할 수 없지만 :-)
Jack Stahl

@Jack 문제가 해결되면 담당자가 적더라도 답변을 수락 할 수 있습니다. 내가 제공 한 인증서 번들이 망가 졌음을 명확히하기 위해 게시물을 편집했습니다.
Shane Madden


1

이 문제에 직면 한 다른 사람을 위해 Shane의 게시물이 트릭을 수행했지만 CAFile도 포함시켜야했습니다. 또한 체인을 만들 때이 기사에 따라 파일 이름 지정 지침을 따르십시오

사용해야하는 파일 이름을 결정하기 위해 OpenSSL과 함께 제공되는 c_hash 프로그램을 사용할 수 있습니다 ( /usr/local/ssl/misc디렉토리에서).

c_hash some_certificate.pem
a4644b49.0 => some_certificate.pem

따라서 위의 경우 파일 이름을로 바꿉니다 a4644b49.0.
파일 이름의 점 다음에 문자 'O'가 아닌 0입니다.

c_hash프로그램 이없는 경우 적절한 OpenSSL 명령을 실행하여 해시 값을 결정할 수 있습니다.

openssl x509 -hash -noout -in some_certificate.pem
a4644b49

그리고이 문제에 직면하고 있다면 안드로이드 코르도바와 함께 웹 소켓을 사용하려는 경우 *는 http와 https 만 포함하므로 cordova-whitelist 항목에 수동으로 wss를 추가하십시오.


당신이 링크 기사는 읽고 그것의 상단에 큰 빨간색 배너가 감가 상각이 페이지를 당신이 지원 또는 그대로 일 - - - 수행해야합니다에서이 정보는이 시점에서, 올바른지 확인하고, 쓰기?
Austinian

2
적어도 인용 된 부분에 대해서는 긍정적입니다. 인증서 체인의 이름을 파일의 해시로 지정하지 않으면 stunnel이 흔들 리게됩니다.
BrightEyed

또한 .0을 추가하지 않아도됩니다. 철자 수정 btw 주셔서 감사합니다, looooong 밤 후 게시물을 척; D
BrightEyed

확인을 듣고 기뻐요. 나는 지금 3 일째 긴 하루를 보내고 있음을 이해합니다. (11, 14 시간, 오늘은 14 시간이 추가 될 수 있습니다.)
Austinian

1
Eeesh의 IT 꿈 생활 : D
BrightEyed
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.