В общем решение нашел сам , смысл скрипта заключается в том что бы получить каждый сертификат отдельно и по каждому отдельно вызвать "openssl x509" , если кому то это поможет в будущем то оставлю здесь свой скрипт на python:
#!/usr/bin/python3
import re
import datetime
import sys
import traceback
from subprocess import PIPE, Popen, DEVNULL
def get_cert_dates(hostname):
try:
result = []
certs = Popen('sudo openssl s_client -showcerts -verify_quiet -servername {0} -connect {0}:443'.format(hostname), shell=True,
stdout=PIPE, stdin=DEVNULL, stderr=PIPE).stdout.read().decode('utf-8')
pattern = r'(-----BEGIN CERTIFICATE-----[\D\d]*?-----END CERTIFICATE-----)'
for cert in re.findall(pattern, certs):
data = Popen('echo "{}" |sudo openssl x509 -subject -dates -noout'.format(cert), shell=True, stdout=PIPE,
stderr=PIPE).stdout.read().decode('utf-8').split('\n')
subject = re.search(r'CN\s*=\s*([\D\d]*?$)',
data[0]).group(1).strip().replace(' ', '_').replace("'", '')
expiry_dt = datetime.datetime.strptime(re.search(r'notAfter\s*=\s*([\D\d]*?$)', data[2]).group(1),
'%b %d %H:%M:%S %Y %Z')
expiry_ts = int(datetime.datetime.timestamp(expiry_dt))
end = expiry_ts - int(datetime.datetime.timestamp(datetime.datetime.now()))
result.append({'subject': subject, 'expiry_dt': expiry_dt, 'expiry_ts': expiry_ts, 'end': end})
return result
except:
print(traceback.format_exc())
print(get_cert_dates('yandex.ru'))