Python

파이썬 SSL 오류 발생시

앗사비 2023. 7. 12. 16:58
728x90

ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1002)

from OpenSSL import SSL
from socket import socket
from datetime import datetime

def get_ssl_expiry_datetime(hostname: str) -> datetime:
    ssl_socket = SSL.Connection(SSL.Context(SSL.SSLv23_METHOD), socket())
    ssl_socket.connect((hostname, 443))
    ssl_socket.do_handshake()
    cert = ssl_socket.get_peer_certificate()
    expiry_date = datetime.strptime(cert.get_notAfter().decode('ascii'), '%Y%m%d%H%M%SZ')
    return expiry_date

websites = ["google.com", "github.com", "facebook.com"]

for site in websites:
    try:
        print(f"{site} SSL Certificate Expiry Date: {get_ssl_expiry_datetime(site)}")
    except Exception as e:
        print(f"Could not retrieve SSL certificate for {site}. Error: {str(e)}")

 

 

---

 

urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='....com', port=443): Max retries exceeded with url: / (Caused by SSLError(SSLError(1, '[SSL: DH_KEY_TOO_SMALL] dh key too small (_ssl.c:1000)')))

 

import requests
import ssl

url = 'https://naver.com/'

class TLSAdapter(requests.adapters.HTTPAdapter):
    def init_poolmanager(self, *args, **kwargs):
        ctx = ssl.create_default_context()
        ctx.set_ciphers('DEFAULT@SECLEVEL=1')
        kwargs['ssl_context'] = ctx
        return super(TLSAdapter, self).init_poolmanager(*args, **kwargs)

with requests.Session() as session:
    session.mount('https://', TLSAdapter())
    response = session.get(url)
    print(response.text)

https://stackoverflow.com/questions/61631955/python-requests-ssl-error-during-requests

728x90