SSL 수정: Python의 CERTIFICATE_VERIFY_FAILED 오류

Zeeshan Afridi 2023년10월10일
  1. SSL 인증서
  2. SSL: CERTIFICATE_VERIFY_FAILED 오류의 원인
  3. SSL: CERTIFICATE_VERIFY_FAILED 오류 수정
  4. SSL에서 확인되지 않은 컨텍스트를 생성하여 SSL: CERTIFICATE_VERIFY_FAILED 오류 수정
  5. SSL에서 확인되지 않은 HTTP 컨텍스트를 생성하여 SSL: CERTIFICATE_VERIFY_FAILED 오류 수정
  6. pip 명령으로 SSL: CERTIFICATE_VERIFY_FAILED 오류 수정
  7. 요청 모듈을 사용하여 SSL: CERTIFICATE_VERIFY_FAILED 오류 수정
  8. 결론
SSL 수정: Python의 CERTIFICATE_VERIFY_FAILED 오류

SSL은 사용자와 서버 간에 전송되는 데이터를 암호화하는 프로토콜입니다. 서버는 데이터가 변조되지 않도록 클라이언트에 디지털 인증서를 생성하고 전송합니다.

SSL 인증서를 생성할 때 CA는 도메인을 확인합니다.

인증서에 지정된 주소에 도메인이 없으면 CA는 인증 기관(CA)에 대한 오류를 반환합니다. SSL과 SSL: CERTIFICATE_VERIFY_FAILED 오류의 원인에 대해 자세히 알아봅니다.

SSL 인증서

SSL 인증서는 기업이 웹 브라우저와 안전하고 암호화된 연결을 설정할 수 있도록 하는 디지털 인증서입니다. 기업에 SSL 인증서가 있으면 기업과 웹 브라우저 간에 교환되는 모든 정보가 암호화되어 누구도 데이터를 가로채서 읽을 수 없습니다.

이는 신용 카드 번호 및 로그인 자격 증명과 같은 민감한 정보를 보호하는 데 도움이 되므로 비즈니스에 중요합니다.

SSL: CERTIFICATE_VERIFY_FAILED 오류의 원인

SSL: CERTIFICATE_VERIFY_FAILED 오류에는 몇 가지 이유가 있습니다. 각각은 아래에 설명되어 있습니다.

  1. 한 가지 가능성은 웹사이트의 SSL 인증서가 유효하지 않다는 것입니다. 이는 웹사이트가 클라이언트와 서버 간의 데이터 및 통신을 암호화하는 데 유효한 인증서를 사용하고 있지 않음을 의미합니다. 결과적으로 귀하의 브라우저는 웹사이트의 신원을 확인할 수 없습니다.

    이는 보안 위험이 될 수 있습니다. 이는 귀하의 데이터가 제대로 암호화되지 않을 수 있으며 제3자가 가로챌 수 있음을 의미합니다.

  2. 또 다른 가능성은 귀하의 브라우저가 웹사이트의 SSL 인증서를 인식하지 못하는 것입니다. 웹 사이트에서 자체 서명된 인증서 또는 알 수 없는 기관의 인증서를 사용하는 경우 이런 일이 발생할 수 있습니다.

    어느 경우든 귀하의 브라우저는 웹사이트의 신원을 제대로 확인할 수 없으며 이는 다시 보안 위험이 될 수 있습니다.

  3. 마지막으로, 웹 사이트의 SSL 인증서 체인에 문제가 있는 경우 SSL: CERTIFICATE_VERIFY_FAILED 오류가 발생할 수도 있습니다. 이는 체인의 인증서 중 하나가 만료 또는 취소되었거나 웹 사이트에서 오래된 SSL 버전을 사용하는 경우에 발생할 수 있습니다.

    이 오류가 표시되면 웹 사이트 소유자에게 연락하여 문제를 해결하도록 요청해야 합니다.

SSL: CERTIFICATE_VERIFY_FAILED 오류 수정

SSL: CERTIFICATE_VERIFY_FAILED 오류가 표시되면 컴퓨터에서 방문하려는 웹사이트의 SSL 인증서를 확인할 수 없습니다. 이는 웹 사이트의 SSL 인증서 문제, 컴퓨터의 신뢰 저장소 또는 네트워크 문제를 포함하여 다양한 이유로 발생할 수 있습니다.

SSL: CERTIFICATE_VERIFY_FAILED 오류를 수정하려면 원인을 파악해야 합니다.

웹사이트의 SSL 인증서에 문제가 있습니까? 그렇다면 다른 브라우저를 사용하여 사이트를 방문하거나 웹사이트 소유자에게 연락하여 알릴 수 있습니다.

컴퓨터의 신뢰 저장소에 문제가 있는 경우 최신 인증서로 신뢰 저장소를 업데이트해야 합니다. 문제가 네트워크에 있는 경우 네트워크 연결 문제를 해결해야 합니다.

SSL에서 확인되지 않은 컨텍스트를 생성하여 SSL: CERTIFICATE_VERIFY_FAILED 오류 수정

SSL과 관련하여 고려해야 할 가장 중요한 사항 중 하나는 SSL이 사용될 컨텍스트입니다. 안타깝게도 SSL이 사용되는 컨텍스트는 특정 상황에 따라 달라지므로 이 질문에 대한 일률적인 대답은 없습니다.

그러나 보다 안전한 SSL 컨텍스트를 만드는 데 도움이 되는 몇 가지 일반적인 팁이 있습니다.

첫째, 모든 SSL 연결이 강력한 암호화를 사용하여 이루어졌는지 확인하는 것이 중요합니다. 이는 SHA-256 또는 SHA-512와 같은 강력한 알고리즘을 사용하고 모든 키의 길이가 2048비트 이상인지 확인하는 것을 의미합니다.

또한 SSL 연결을 만들기 전에 서버의 ID를 확인하는 것이 중요합니다. 이는 인증 기관과 같은 신뢰할 수 있는 타사 소스에 대해 서버의 인증서를 확인하여 수행할 수 있습니다.

마지막으로 SSL 연결이 제대로 구성되었는지 확인하는 것도 중요합니다. 여기에는 올바른 프로토콜과 암호화 제품군을 사용하여 모든 연결이 이루어지고 모든 인증서가 적절하게 검증되었는지 확인하는 것이 포함됩니다.

이러한 팁을 따르면 민감한 데이터를 보호하고 통신을 비공개로 유지하는 데 도움이 되는 보다 안전한 SSL 컨텍스트를 생성할 수 있습니다.

import ssl

context = ssl._create_unverified_context()
urllib.request.urlopen(req, context=context)

SSL에서 확인되지 않은 HTTP 컨텍스트를 생성하여 SSL: CERTIFICATE_VERIFY_FAILED 오류 수정

SSL에서 확인되지 않은 HTTP 컨텍스트는 단순히 서버 인증서 확인을 생략하여 만들 수 있습니다. 이는 클라이언트를 중간자 공격에 취약하게 하므로 권장되지 않습니다.

그러나 자체 서명된 인증서를 사용하는 서버에 연결하는 경우와 같은 경우에 필요할 수 있습니다.

import ssl

ssl._create_default_https_context = ssl._create_unverified_context
urllib2.urlopen("https://google.com").read()

pip 명령으로 SSL: CERTIFICATE_VERIFY_FAILED 오류 수정

pip로 SSL 인증서를 업데이트하려면 pip의 최신 버전을 설치했는지 확인하십시오. 다음 명령을 실행하여 이를 수행할 수 있습니다.

pip install --upgrade pip

pip의 최신 버전이 있으면 다음 명령을 실행하여 SSL 인증서를 업데이트할 수 있습니다.

pip install --upgrade certifi

특정 이유로 SSL 인증서를 업데이트해야 하는 경우 pip 명령과 함께 --force-reinstall 옵션을 사용할 수 있습니다. 이렇게 하면 pip가 인증된 패키지를 다시 설치하고 기존 파일을 덮어씁니다.

pip install --upgrade certifi --force-reinstall

요청 모듈을 사용하여 SSL: CERTIFICATE_VERIFY_FAILED 오류 수정

Python 요청 라이브러리는 HTTP 요청을 만들기 위한 훌륭한 도구입니다. 경우에 따라 SSL 확인을 우회하기 위해 ssl_verify 옵션을 False로 설정해야 할 수도 있습니다.

이는 유효하지 않거나 자체 서명된 SSL 인증서를 사용하여 서버에 연결하려는 경우에 유용할 수 있습니다. 이 옵션을 False로 설정하는 것은 중간자 공격에 취약해질 수 있으므로 일반적으로 권장되지 않습니다.

requests.get(url, headers=Hostreferer, verify=False)

결론

SSL은 서버와 클라이언트 사이에 보안과 신뢰를 제공하는 프로토콜입니다. 상점에서 신용카드를 사용할 때와 같이 민감한 정보를 보호해야 하는 경우에 많이 사용됩니다.

뭐가 문제 야? SSL을 사용할 때 python-requests 라이브러리에 문제가 있습니다.

Python을 사용하여 SSL을 사용하는 서버에 요청하면 라이브러리는 기본적으로 인증서를 확인하여 신뢰할 수 있는지 확인합니다. 문제는 기본 Python 설치에 가능한 모든 SSL 인증서에 대한 루트 인증서가 포함되어 있지 않다는 것입니다.

자체 서명된 SSL 인증서 또는 Python 인증서 저장소에 없는 CA의 인증서를 사용하는 서버에 요청을 하면 요청이 실패합니다. SSL 오류의 오류 코드와 함께 HTTP 오류가 발생합니다.

Zeeshan Afridi avatar Zeeshan Afridi avatar

Zeeshan is a detail oriented software engineer that helps companies and individuals make their lives and easier with software solutions.

LinkedIn

관련 문장 - Python Error