2013-02-25 9 views
8

SSL 핸드 셰이크 오류로 인해 svn 저장소에 액세스하는 데 문제가 있습니다. 다음은 출력 결과입니다.SVN, OSX10.7 : SSL 핸드 셰이크 실패 : SSL 오류 코드 -1/1/336032856

$ svn ls https://example.edu:40657/folder 
svn: OPTIONS of 'https://example.edu:40657/folder': SSL handshake failed: SSL error code -1/1/336032856 (https://example.edu:40657) 

리포지토리를 다른 서버로 옮긴 후이 작업이 시작되었습니다. 새로운 보안 인증서도 발행되었습니다.

여기에 제기 된 문제 (Handshake failure with "SSL error code -1/1/336032856" on OS X 10.7)와 faq은 읽었지만 내 SSL 버전은 1.0.1c입니다. 다른 어떤 (리눅스) 머신도 문제를 안 보이기 때문에 이것은 클라이언트 측 문제라고 생각합니다. ~/.subversion 폴더를 삭제하고 svn 또는 ssl이라고 표시된 항목을 내 키 체인에서 삭제했지만 여전히 운이 없습니다. 내 생각 엔 아직 모르는 어딘가에 저장된 보안 키가 있다는 것입니다. 어떤 아이디어?

+0

어떤 버전의'svn'을 사용하고 있습니까? 'which svn'과'svn --version'을 시도하십시오. Xcode에서 Apple이 제공 한 것이라면 openssl 1.0.1c는 OS X와 ​​함께 제공되지 않기 때문에 사용하지 않습니다. –

+0

svn은 usr/bin/svn을 반환하고 svn --version은 1.6.17 – dmagree

+0

을 반환합니다. Apple에서 제공 한 버전과 openssl의 새 버전을 설치해도 영향을 미치지 않습니다. 그래서 이것은 당신이 인용 한 이슈와 같은 문제인 것처럼 보입니다. –

답변

1

Ned Deily에게 감사 드리며, 그의 의견은 정확했습니다. 문제는 1.7.8 (http://subversion.apache.org/download/#recommended-release)의 Subversion을 다운로드하고 빌드 한 후에 사라졌습니다. 또한 svn이 http 및 https 주소를 인식 할 수 있도록 네온 (http://www.webdav.org/neon/)을 다운로드하고 빌드해야했습니다. 마지막으로, Apple에서 제공 한 svn 바이너리를 다른 폴더로 옮겨서 새로운 버전을 찾았습니다 (새 버전은/usr/local/bin에 설치되었고 apple 제공 버전은/usr/bin에 설치되었습니다).

+2

나는이 가이드를 따른다 : http://jason.pureconcepts.net/2012/10/updating-svn-mac-os-x/ 마운틴 라이온을 위해 그리고 위대한 작품! – Edenshaw

+0

방금 ​​homebrew와'brew install subversion '을 사용하여 최신 버전을 내'usr/local/bin'에 설치했습니다. –

3

자체 서명 인증서를 사용하여 서버의 저장소를 체크 아웃하려고 할 때도이 오류가 발생했습니다.

당신은이 개 요구 사항을 충족해야합니다 :

  • 당신의 repo URL
  • 가상 호스트가 처리에 구성된 서버 이름으로 사용하고있는 호스트 이름과 일치해야 인증서의 CN (일반 이름) 요청도 URL과 일치해야합니다.

후자로 충분할 수 있습니다.

Debian의 default-ssl apache 설정에서 특정 ServerName을 설정하지 않았으므로 (전역 Apache 구성의 주 ServerName이 사용됨) 사용하고있었습니다. 서버의 실제 호스트 이름을 통해 리포지토리에 액세스하는 것은 작동했습니다 (연결을 처음 시도 할 때 "신뢰할 수있는 기관에서 인증서가 발행되지 않았습니다"라는 경고가 표시됨)하지만 다른 별칭을 통해 액세스하려고 시도하면 IP)가이 오류와 함께 실패했습니다.

여기서 해결 방법은 실제 서버 이름 (404 오류 페이지의 바닥 글에 나열 될 수 있음)을 서버 관리자에게 요청하거나 적절하게 설정하도록 요청하는 것입니다.

예 : 영구적 당신이 갈 수 있어요

$ svn co https://alias.or.ip.of.the.server.real.hostname/svn/test 
svn: OPTIONS of 'https://alias.or.ip.of.the.server.real.hostname/svn/test': SSL negotiation failed: SSL error code -1/1/336032856 (https://alias.or.ip.of.the.server.real.hostname) 

$ svn co https://real.hostname.of.the.server/svn/test 
Error validating server certificate for 'https://real.hostname.of.the.server:443': 
- The certificate is not issued by a trusted authority. Use the 
    fingerprint to validate the certificate manually! 
Certificate information: 
- Hostname: real.hostname.of.the.server 
- Valid: from Mon, 23 Sep 2013 10:55:49 GMT until Thu, 21 Sep 2023 10:55:49 GMT 
- Issuer: real.hostname.of.the.server 
- Fingerprint: 61:81:26:51:53:26:9a:ea:c1:28:b8:6d:22:13:05:8f:81:1a:ed:67 
(R)eject, accept (t)emporarily or accept (p)ermanently? 

스토어!

1

http://subversion.apache.org/faq.html#ssl-error-336032856

서버에 의해보고 된 호스트 이름이 SSL 인증서에 주어진 일치하는 호스트 이름을하지 않는 경우가 발생할 수 있습니다. 서버 구성이 ServerNameNameVirtualHost에 대해 올바른 값을 사용하는지 확인하십시오.

1

이것은 SNI (https://en.wikipedia.org/wiki/Server_Name_Indication)를 사용하는 TLS로 인해 발생할 수도 있습니다.

이 설정

ServerName my-server 
ServerAlias another-name 

처럼 뭔가 아파치를 사용하고 클라이언트가 클라이언트는 동안 서버를 말할 것이다 SNI를 사용하는 경우이 URL

svn ls https://svn-server 

을 사용하여 서버에 연결을 감안할 때 핸드 셰이크

Btw. I think you are called "svn-server" 

서버는 "my-server 클라이언트가 나쁜 일이 무엇인가를 생각하는,

Warning: I am not called "svn-server". That name is unknown to me. 

이 경고는 악수 실패에 이르게 : "와"다른 이름 ", 따라서 그것은 TLS 경고를 올릴 것이다. 서버 별칭

ServerAlias another-name svn-server 

에 클라이언트가 사용하는 이름을 추가하는 것입니다 그리고 잊지 마세요

솔루션은 SSL 인증서의 "일반 이름"또는 별명도 이름 클라이언트 일치하는지 확인 사용.

0

비슷한 오류가 발생했으며 그 원인은 시스템 시계가 꺼져있는 것 (일광 절약 시간이 지나갔고 시스템 시계가 1 시간 정도 꺼짐) 인 것으로 나타났습니다.