컬 인증서 고정 테스트가 sha1 다이제스트를 사용하여 작동하지 않는 이유는 무엇입니까?

컬 인증서 고정 테스트가 sha1 다이제스트를 사용하여 작동하지 않는 이유는 무엇입니까?

인증서 고정 테스트에서 sha1 다이제스트를 사용하는 데 문제가 있습니다. sha256을 사용하면 잘 작동하지만 sha1을 사용하면 작동하지 않습니다. 왜?

컬 버전 :
 
➜ src ./curl -V
컬 7.55.1 (x86_64-apple-darwin16.0.0) libcurl/7.55.1 SecureTransport zlib/1.2.8
출시 날짜: 2017-08-14
프로토콜: dict 파일 ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtsp smb smbs smtp smtps telnet tftp
기능: AsynchDNS IPv6 대용량 파일 NTLM NTLM_WB SSL libz UnixSockets

테스트 1 사용샤256   ➜ src openssl s_client -connect uol.com.br:443 | openssl x509 -pubkey -noout | openssl rsa -pubin -outform der | openssl dgst sha256 -바이너리 | openssl enc -base64 깊이=2 /C=US/O=GeoTrust Inc./CN=GeoTrust Global CA 오류 확인:번호=19:인증서 체인의 자체 서명된 인증서 반품 확인:0 RSA 키 쓰기 d9W9zyq64Gw8JEA/siAixfvoRRwZVpSgbYJV//0CeKM=

➜ src ./curl --head --verbose --pinnedpubkey "sha256//d9W9zyq64Gw8JEA/siAixfvoRRwZVpSgbYJV//0CeKM="https://uol.com.br * 200.147.67.142를 시도 중... * TCP_NODELAY 설정 * uol.com.br(200.147.67.142) 포트 443(#0)에 연결됨 * 공개 키 해시: sha256//d9W9zyq64Gw8JEA/siAixfvoRRwZVpSgbYJV//0CeKM= * TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256을 사용한 TLS 1.2 연결 * 서버 인증서 : www.uol.com.br * 서버 인증서: RapidSSL SHA256 CA * 서버 인증서: GeoTrust Global CA > 헤드 / HTTP/1.1 > 호스트 : uol.com.br > 사용자 에이전트: 컬/7.55.1 > 수락:/ > < HTTP/1.1 302 발견됨 HTTP/1.1 302 찾음 < 일시 : 2017년 9월 29일(금) 19:32:18 GMT 날짜: 2017년 9월 29일 금요일 19:32:18 GMT < 서버: 아파치 서버: 아파치 < 연결: 닫기 연결: 닫기 < 콘텐츠 유형: 텍스트/html; 문자셋=iso-8859-1 콘텐츠 유형: 텍스트/html; 문자셋=iso-8859-1   < * 연결 0 종료

테스트 2 사용샤1   ➜ src openssl s_client -connect uol.com.br:443 | openssl x509 -pubkey -noout | openssl rsa -pubin -outform der | openssl dgst -sha1 -binary | openssl enc -base64 깊이=2 /C=US/O=GeoTrust Inc./CN=GeoTrust Global CA 오류 확인:번호=19:인증서 체인의 자체 서명된 인증서 반품 확인:0 RSA 키 쓰기 BQr5oEtKUmTzlcelRcWvGvMnQzk=

➜ src ./curl --head --verbose --pinnedpubkey "sha1//BQr5oEtKUmTzlcelRcWvGvMnQzk="https://uol.com.br * 200.221.2.45를 시도 중... * TCP_NODELAY 설정 * uol.com.br(200.221.2.45) 포트 443(#0)에 연결됨 * SSL: 공개 키가 고정된 공개 키와 일치하지 않습니다! * 연결 0 종료 컬: (90) SSL: 공개 키가 고정된 공개 키와 일치하지 않습니다!

답변1

curlSHA256 해시만 확인하기 때문입니다 . SHA1 해시가 아닙니다.

매뉴얼 페이지에서:

--pinnedpubkey <고정된 공개 키(해시)>

          (SSL) Tells curl to  use  the  specified  public  key  file  (or
          hashes)  to  verify the peer. This can be a path to a file which
          contains a single public key in PEM or DER format, or any number
          of base64 encoded sha256 hashes preceded by ´sha256//´ and sepa‐
          rated by ´;´

관련 정보