2012-03-28 6 views
0

Linux에서 PHP로 실행되는 PHP 백엔드에 https 연결을 위해 Indy 9를 사용하여 Delphi 7에서 빌드 된 앱이 있습니다. 이 앱은 문제없이 현재 프로덕션 서버에 연결됩니다. 우리는이 응용 프로그램에 대한 테스트 환경을 자체적으로 구축했으며 테스트 웹 서버에서는 https를 사용하여 연결을 거부합니다. 앱은 http를 사용하여이 서버에 연결할 수있었습니다. 응용 프로그램이 만든 동일한 웹 호출을 사용하여 현재 브라우저를 연결할 수 있습니다 (예전 브라우저를 사용하지 않았 음). 연결이 끊어졌습니다. 데이터가 완벽하게 후퇴합니다. 왜이 질문은 여기에 있고 ServerFault에는없는 것입니까?) 인디/SSL에 대한 충분한 경험을 가진 사람이 있습니까? 1. 내가 처음에 와일드 카드 인증서로 시작되었다 : 여기 Delphi 7/Indy 9 앱이 SSL을 통해 Apache에 연결하지 않습니다.

내가 어떤 입력을해야 할 수도 있습니다 생각 몇 가지 차이점이 있습니다. 유효한 도메인이며 올바른 도메인에 있습니다. 그것은 우리가 많은 서버에서 가지고있는 모든 것들과 함께 작동합니다. 2. 와일드 카드 인증서가 인디 9보다 새로운 것일 수 있다고 생각하여 와일드 카드 인증서를 제거하고 전체 컴퓨터 이름과 함께 자체 서명 된 인증서를 넣었습니다. 같은 방식으로 실패했습니다. 아시다시피, 브라우저는 이러한 자체 서명 된 인증서로 인증서 예외를 발행하므로 인디 문제가 발생하는지 확신 할 수 없었습니다. 3. 새 개발 서버의 OpenSSH 버전은 현재 프로덕션 서버에있는 OpenSSH 버전보다 최신 버전입니다. 누군가가 도움이된다고 생각하면이 정확한 버전을 파헤쳐 낼 수 있습니다.

이것은 내가 상속 응용 프로그램입니다, 그래서 SSL 및 인디의 내 지식이 제한됩니다. 이 앱의 수명이 다해서 인디 10으로 업그레이드하는 것이 우리 회사가 자금을 조달하는 것이 아닙니다. 어떤 도움이나 포인터 또는 힌트도 대단히 환영하며, 감사의 말은 무한합니다. 스태커 고맙습니다!

+0

일부 중단 점을 설정했거나 OutputDebugString 또는 CodeSite 로그 메시지를 일부 입력 했습니까? 당신은 적어도 무슨 일이 일어나고 있는지에 대해 당신이 알아 낸 것이 무엇인지 상세히 설명해야합니다. "연결되지 않았습니까?" 방법? –

답변

3

그렇게 어려운 특정 오류 메시지없이 제안을 제공하기 위해 진행되고 특정 오류에 대한 언급이 없습니다.

1) SSL 핸드 셰이크에 받고있는 실제 응답을 추적하고 머리 또는 메시지의 꼬리를 만들려고. (DoStatusInfo())

2) (큰 여기 guesss) SSL 연결이 이전 버전은 더 이상 지원하는 것이 좋습니다 최신이 다른 버전으로 제공. 새 서버를 구축하는 경우, 현재의 프로덕션 시스템과 다른 기본값이있을 가능성이 높습니다. 새로운 서버는 SSL V2 및 V3 (그리고 TLS 만 허용) 연결을 거부해야합니다. 따라서 이전 프로덕션 서버와 새 테스트 서버의 구성이 다를 수 있습니다 이 새로운 버전은 이전 버전의 SSL을 필터링하고 핸드 셰이크가 계속되는 것을 방지합니다. (어떤이 질문에 대답하는 데 사용하는 실제 도구입니다 # 1에서 핸드 셰이크 실패에 표시됩니다.)

여기 openssl.exe를을 사용하여 연결의 빠른 테스트입니다. 이 연결을 테스트 상자 및 프로덕션 시스템에 연결하여 연결이 이루어 졌는지 확인하십시오. 이 추측을 확인하거나 제거하기 위해 v3을 시도해 볼 수도 있습니다. 동일하게 행동하면 # 1에 집중하십시오. :)

openssl s_client -ssl2 -connect yourhost:443 
2

TIdSSLIOHandlerSocket.VerifyMode 특성에 sslvrfPeer 플래그를 가능하게 시도하고 TIdSSLIOHandlerSocket.OnVerifyPeer 이벤트에 True을 반환합니다.

관련 문제