고객(씨) 프록시를 통해(인) 서버에 접속(에스):
A --http--> P --https--> S
요청 내용을 조사하려면 프록시가 필요합니다. 이에 대한 두 가지 옵션이 있습니다.
- SSL 터널 차단:씨
CONNECT
사이에 SSL 터널을 생성하라는 요청을 보냅니다 .씨그리고에스그러나 프록시는 SSL 터널을 가로채서 중단하여 신뢰할 수 있는 내부 CA가 서명한 인증서를 즉석에서 생성합니다.씨악수를 완료합니다. - 클라이언트는
https://
구성표 를 사용합니다.:씨터널을 생성하지 않고 단지 HTTPS URL을 프록시에 전달하고(HTTP URL과 마찬가지로) 프록시는 터널에서 HTTPS URL을 가져오는 작업을 담당합니다.에스HTTPS를 사용하여 다음으로 전달합니다.씨명확한 HTTP로.
내 생각엔 서로간의 소통이씨그리고인이미 보안을 위해 SSL 차단을 설정하는 것은 의미가 없다고 생각합니다. 설정에는 시간이 많이 걸리고, 자체 제작 CA를 클라이언트의 루트 CA에 삽입해야 하며, 쓸모 없는 핸드셰이크 및 암호화를 처리하기 위해 컴퓨팅 리소스를 낭비합니다. . 대조적으로, 두 번째 옵션은 간단하며 CONNECT
프록시 사용을 완전히 비활성화할 수 있습니다.
손쉬운 수동 테스트를 통해 내 오징어 설치가 제대로 작동하고 두 번째 옵션을 올바르게 지원한다는 것을 알 수 있습니다. telnet
구성표를 프록시에 전달하여 문서를 성공적으로 검색할 수 있습니다.https://
그러나 고객씨FreeBSD에서는 클라이언트 소프트웨어가 동일한 방식으로 작동하도록 지시하는 방법을 찾지 못했습니다.
에서 관련 옵션을 찾지 못했습니다 fetch
. .wget
나도 이것을 시도했고 curl
이것이 설명되는 것 같습니다-p/--proxytunnel을 제외한 모든 작업은 HTTP를 통해 수행됩니다.사용되지만 이 옵션이 없어도 여전히 HTTPS 연결을 위한 터널을 생성하려고 시도합니다. 또한 --no-proxytunnel
동일한 맨페이지에 따르면 일부 부울 옵션이 이 구문을 허용하지만 행운이 없기 때문에 시도하는 것을 포함하여 이 옵션을 사용해 보았습니다 . 프록시 터널은 라인 5635에서 시행되는 것 같습니다.라이브러리/url.c(범죄):
/*************************************************************
* If the protocol is using SSL and HTTP proxy is used, we set
* the tunnel_proxy bit.
*************************************************************/
if((conn->given->flags&PROTOPT_SSL) && conn->bits.httpproxy)
conn->bits.tunnel_proxy = TRUE;
FreeBSD 기본 시스템의 도구를 사용하든 리포지토리에서 사용 가능한 일부 잘 알려진 클라이언트를 사용하든 모든 솔루션을 환영합니다!