Какая из следующих версий сертификатов SSL верна? - PullRequest
0 голосов
/ 11 апреля 2019

Я не совсем знаком с сертификатами SSL. Я попытался получить версию сертификата SSL, используя две разные функции. Один с использованием библиотеки OpenSSL и один со встроенными методами. Они возвращают разные номера версий для одного и того же доменного имени. Какой из них правильный?

Это код для Python 3.

# -*- coding: utf-8 -*-
import socket
import OpenSSL
import ssl

def get_ssl_cert1(host, port=443):
    conn = ssl.create_connection((host, port))
    context = ssl.SSLContext(ssl.PROTOCOL_SSLv23)
    sock = context.wrap_socket(conn, server_hostname=host)
    certificate = ssl.DER_cert_to_PEM_cert(sock.getpeercert(True))
    x509 = OpenSSL.crypto.load_certificate(OpenSSL.crypto.FILETYPE_PEM, certificate)
    print("Certificate version from method 1: ", x509.get_version())

def get_ssl_cert2(host, port=443):
    ctx = ssl.create_default_context()
    s = ctx.wrap_socket(socket.socket(), server_hostname=host)
    s.connect((host, port))
    cert = s.getpeercert()
    print("Certificate version from method 2: ", cert['version'])

if __name__ == "__main__":
    host = 'www.google.com'
    get_ssl_cert1(host)
    get_ssl_cert2(host)

Результат:

Certificate version from method 1:  2
Certificate version from method 2:  3

Я ожидал, что результаты будут такими же.

1 Ответ

2 голосов
/ 11 апреля 2019

Метод 2 показывает актуальную версию x509, в то время как метод 1 показывает версию x509, основанную на нуле, где 0 = v1, 1 = v2, 2 = v3. Таким образом, на практике они оба показывают, что используется версия 3.Вы можете попробовать это самостоятельно, используя openssl x509 -text -in YOURCERT.pem, и вы получите что-то вроде

Certificate:
    Data:
        Version: 3 (0x2)

, и вы увидите, что версия 3 дана, но также в скобках шестнадцатеричное значение (2), которое основано нана нулевой версии.Вопрос в том, какие из ваших библиотек используют какой метод

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...