獲取并解析Python中的SSL證書(shū)信息方法
海外云服務(wù)器 40個(gè)地區可選 亞太云服務(wù)器 香港 日本 韓國
云虛擬主機 個(gè)人和企業(yè)網(wǎng)站的理想選擇 俄羅斯電商外貿虛擬主機 贈送SSL證書(shū)
美國云虛擬主機 助力出海企業(yè)低成本上云 WAF網(wǎng)站防火墻 為您的業(yè)務(wù)網(wǎng)站保駕護航
要獲取Python中的SSL證書(shū)信息,請使用以下代碼:,,``python,import ssl,,# 獲取當前正在使用的HTTPS服務(wù)器的SSL證書(shū)信息,context = ssl.create_default_context(),with socket.create_connection(('example.com', 443)) as sock:, with context.wrap_socket(sock, server_hostname='example.com') as ssock:, print(ssock.version()), print(ssock.cipher()), print(ssock.getpeercert()),
``,,這段代碼首先創(chuàng )建一個(gè)默認的安全上下文,并嘗試連接到目標網(wǎng)站。它將上下文應用于套接字對象以進(jìn)行加密通信。它打印出版本號、加密算法和對等方的證書(shū)詳細信息。
隨著(zhù)互聯(lián)網(wǎng)的快速發(fā)展,越來(lái)越多的應用和服務(wù)開(kāi)始依賴(lài)于HTTPS協(xié)議來(lái)確保數據的安全傳輸,為了保障用戶(hù)的數據安全和隱私,很多網(wǎng)站和應用都會(huì )提供自己的SSL證書(shū),作為開(kāi)發(fā)人員或系統管理員,了解如何從Python中獲取這些SSL證書(shū)的信息是非常重要的。
本文將詳細介紹如何使用Python獲取SSL證書(shū)的相關(guān)信息,包括證書(shū)頒發(fā)者、有效期、簽名算法等關(guān)鍵細節,通過(guò)本教程,您不僅可以深入了解SSL證書(shū)的工作原理,還能為您的項目添加額外的安全防護措施。
步驟一:安裝必要的庫
要獲取SSL證書(shū)信息,首先需要安裝一些必要的庫,最常用的是certifi
庫,它包含了全球范圍內有效的SSL/TLS證書(shū)列表,可以用來(lái)檢查當前環(huán)境中的證書(shū)是否有效,我們還需要一個(gè)專(zhuān)門(mén)用于解析SSL證書(shū)的庫——cryptography
。
pip install certifi cryptography
步驟二:驗證SSL證書(shū)的有效性
使用certifi
庫可以幫助我們在Python環(huán)境中驗證SSL證書(shū)的有效性,我們將編寫(xiě)一段代碼來(lái)檢查一個(gè)給定的URL的SSL證書(shū)是否有效。
import ssl from urllib.parse import urlparse def check_ssl_certificate(url): parsed_url = urlparse(url) # 設置SSL驗證上下文 context = ssl.create_default_context() try: with context.wrap_socket(socket=socket.socket(), server_hostname=parsed_url.netloc) as sock: sock.connect((parsed_url.hostname, parsed_url.port)) # 如果連接成功,則證書(shū)有效 print("SSL certificate is valid.") except Exception as e: print(f"SSL certificate validation failed: {e}") 示例用法 check_ssl_certificate('https://example.com')
這段代碼首先解析URL并創(chuàng )建一個(gè)默認的SSL上下文,然后嘗試建立與服務(wù)器的連接,如果連接成功,說(shuō)明證書(shū)有效;否則,會(huì )捕獲異常并打印錯誤信息。
步驟三:獲取SSL證書(shū)信息
要獲取更詳細的SSL證書(shū)信息,如頒發(fā)者名稱(chēng)、有效期、簽名算法等,我們可以利用cryptography
庫,以下是一個(gè)示例代碼,展示了如何提取這些信息:
from cryptography.hazmat.primitives.asymmetric import rsa from cryptography.x509 import load_pem_x509_certificate from cryptography.hazmat.backends import default_backend def get_certificate_info(certificate_file_path): with open(certificate_file_path, 'rb') as f: data = f.read() x509 = load_pem_x509_certificate(data, backend=default_backend()) # 獲取證書(shū)頒發(fā)者的公共鍵 public_key = x509.public_key().public_bytes( encoding=serialization.Encoding.PEM, format=serialization.PublicFormat.SubjectPublicKeyInfo ) return { "issuer": x509.issuer, "subject": x509.subject, "serial_number": x509.serial_number, "valid_from": x509.not_valid_before, "valid_to": x509.not_valid_after, "signature_algorithm": x509.signature_hash_algorithm.name, "public_key": public_key.decode(), } certificate_path = 'path/to/your/certificate.pem' certificate_info = get_certificate_info(certificate_path) print("Issuer:", certificate_info["issuer"]) print("Subject:", certificate_info["subject"]) print("Serial Number:", certificate_info["serial_number"]) print("Valid From:", certificate_info["valid_from"]) print("Valid To:", certificate_info["valid_to"]) print("Signature Algorithm:", certificate_info["signature_algorithm"]) print("Public Key:", certificate_info["public_key"])
這段代碼首先讀取證書(shū)文件,并使用load_pem_x509_certificate
函數將其加載到X509對象中,它獲取了證書(shū)的頒發(fā)者(issuer)和主題(subject),以及序列號、有效期等詳細信息,并返回這些信息。
通過(guò)上述步驟,您可以使用Python獲取SSL證書(shū)的基本信息和詳細信息,這對于確保網(wǎng)站或服務(wù)的安全性至關(guān)重要,在實(shí)際應用中,還可以結合其他工具和技術(shù),例如防火墻配置、安全審計和定期更新證書(shū),以進(jìn)一步增強系統的安全性,希望本文能幫助您更好地理解和管理SSL證書(shū),保護您的網(wǎng)絡(luò )環(huán)境免受威脅。
掃描二維碼推送至手機訪(fǎng)問(wèn)。
版權聲明:本文由特網(wǎng)科技發(fā)布,如需轉載請注明出處。