원래 CURLOPT_SSL_VERIFYPEER로 실행되는 2 대의 서버 사이에 오류가 발생하지 않도록 SSL 인증서에 일반 이름이없는 "false"로 설정된 두 서버 간의 연결이있었습니다. 나는 최근 (true로 설정)이 코드를 변경하고 PEM 형식의 컴퓨터 인증서를 지정, 그러나cURL PHP 자체 서명 된 인증서를 사용하는 개인 서버 사이의 적절한 SSL
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,FALSE);
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,2);
: 다음은 인증서를 사용하여 서버에 연결된 클라이언트 코드입니다.
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,TRUE);
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,2);
curl_setopt($ch,CURLOPT_CAINFO,getcwd().'/includes/hostcert/Hostname.crt');
인증서는 CN의 호스트 이름으로 서명되므로 테스트 시스템의 로컬 네트워크에서 잘 작동합니다. 호스트 코드를 신뢰하고 보안 연결을 유지하도록 PHP 코드를 어떻게 설정할 수 있습니까?
내가 방금 CURLOPT_SSL_VERIFYHOST을 설정할 수 있습니다 잘 알고 있어요 "0"또는 "1"과 CURLOPT_SSL_VERIFYPEER "false"로,하지만 그들은 SSL 보안을 깰 이러한 유효한 해결책이 아니다.#<ip-address> <hostname.domain.org> <hostname>
127.0.0.1 localhost.localdomain localhost ExampleHostName
::1 localhost.localdomain localhost
그래서이 컴퓨터의 DNS A 레코드를 실제로 설정해야합니까? ArchLinux를 실행 중이고 "hosts"파일을 표시하기 위해 내 질문을 편집했습니다. 어떻게 수정해야합니까? 감사합니다. – PolishHurricane
DNS 레코드 또는 호스트 파일은 올바른 IP 주소로 확인되는 한 실제로 중요하지 않습니다. 중요한 것은 클라이언트가 사용하는 URL입니다. 인증서는이 URL의 호스트 이름에 유효해야합니다. – Bruno
밝혀졌습니다. 호스트 파일을 만질 필요조차 없었습니다. SSL 3을 강제해야했습니다. – PolishHurricane